プロが教えるわが家の防犯対策術!

エクセルで年齢を計算するのにDATEDIF(A1,today(),"Y")が良く使われますが、
法律上正確に考えるとDATEDIF(A1,today()+1,"Y")が正しいのではないでしょうか。
このようなことを解説したもの(サイト)が見つからないので質問しました。
ちなみに、年齢加算は法律上、誕生日の前日となっています。
それに基づくとDATEDIF(A1,today()+1,"Y")だと思いますが、この書き方だと計算結果に何か問題が発生するでしょうか。

A 回答 (9件)

下記URLを参照してください



参考URL:http://www.h3.dion.ne.jp/~sakatsu/ktfunc_ref0206 …
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になりました。
私にはちょっと難しすぎます。

お礼日時:2006/09/13 10:32

いろいろ悩ませて住みませんでした。



>「前日加算」がいろいろなところで述べられているのでその解釈を前提に(それが正しいと考えて)
DATEDIF(A1,TODAY()+1,"Y")では何か計算上不具合があるかが聞きたかった

この部分をよく読みませんでした・・・
ごめんなさい。
そうなるとやっぱり
=IF(A1>TODAY(),"",DATEDIF(A1,TODAY()+1,"Y"))
かな?
ただ質問者さんの業務(おそらく?)上そんなエラーは解っているでしょうから
DATEDIF(A1,today()+1,"Y")
で何の問題もないと思いますよ。

この回答への補足

蛇足ですが下記に法律的解釈の具体例が出ていましたので参考に紹介しておきます。
他にも至る所に法的解釈があります。

DATEDIF関数の使い方ををいろいろなところで正しく解説してほしいものです。

http://www.apijapan.org/db/roumu/compact.html

(1) 社員が40歳に達した場合介護保険の手続きをするのですか?

社員が40歳以上65歳未満の場合、介護保険料の徴収が必要です。介護保険料は健康保険料と一緒に徴収・納付します。誕生日の前日をもって満年齢に達した日とします。つまり誕生日の前日に年を取るという考え方で、40歳に達するのは40歳の誕生日の前日ということです。特に、月の初日(1日)生まれの人は要注意です。

(2) その他社会保険について
3月8日が40歳の誕生日の人、2月1日が40歳の誕生日の人についてそれぞれ教えて下さい

3月8日が誕生日の場合・・・3月7日に40歳に達すると考えられ、その年の3月分から介護保険料を徴収します
2月1日が誕生日の場合・・・1月31日に40歳に達すると考えられ、その年の1月分から介護保険料を徴収します。

http://plaza.rakuten.co.jp/kakomon/diary/2006082 …
(3)今日8月29日は、にゃんにゃん共和国の
大事な総選挙の日ですが、
Q.明日8月30日が誕生日で今日はまだ19歳の
  猫田猫吉くんは投票できるでしょうか?

答え)投票できる

補足日時:2006/09/15 02:31
    • good
    • 1
この回答へのお礼

専門家に聞いたらやはり法律の解釈は誕生日の前日の日付で年齢を確定しそれに基づいて処理するそうです。誕生日の前日から権利が発生することになるそうです。
長い間 アドバイスありがとうございました。

お礼日時:2006/09/14 23:29

=IF(A1>TODAY(),"",DATEDIF(A1,TODAY()+1,"Y"))


・・・・・・
やっぱり変です!!

>この「満了」というのは、その日(=平成16年3月31日)が完全に終わることで成立します。
極めて観念的なことで分かりにくいのですが、3月31日の午後11時59分59秒の次の1秒が終わり
、深夜「12時」になる瞬間に満了するのです。
これはすなわち4月1日午前0時であり、4月1日の始まりとなるわけで、
3月31日の深夜「12時」と4月1日午前0時は事実上はまったく同一の瞬間であるはずのものですが、
あくまでも「満了」したのは「3月31日が終了したこと」によるものであり、「4月1日が開始したこと
」によるわけではないので、
「出生から6年が満了した日」=「満6歳に達した日」は「平成16年3月31日」ということになります。

???質問者さんの計算式
DATEDIF(A1,today()+1,"Y")
だと 誕生日前日の午前0時から加齢される結果が出てしまいます。
ここで回答している人はみんなそこが解っているから
DATEDIF(A1,today(),"Y")
が正しいといっているんです。
結果この式で誕生日前日の深夜12時以降は’数学的に’含んでいるんです。

理屈じゃなくて数学的に考えることがエクセルには必要です。

参考までに
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2404108
    • good
    • 0
この回答へのお礼

いろいろ調べてみました。
DATEDIF(A1,today()+1,"Y")を用いるべきだというサイトが下記にありました。

いろいろアドバイスありがとうございました。

>誕生日前日の午前0時から加齢される結果が出てしまいます。
前日加算の法律的解釈については社会保険労務士に聞いてみます。

http://www.h3.dion.ne.jp/~sakatsu/period_topic2. …
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2178442
http://www.relief.jp/itnote/archives/000423.php

http://72.14.235.104/search?q=cache:PrYbjLzcuN0J …
bbs04001.aspx%3FintOriginalQuestYear%3D2006%26intOriginalQuest
ID%3D9566%26intPageNo%3D0%26DlgMode%3D1+%EF%BC%A4%EF%BC%A1%EF%BC
%B4%EF%BC%A5%EF%BC%A4%EF%BC%A9%EF%BC%A6+%E5%B9%B4%E9%BD%A2%E8%A8
%88%E7%AE%97%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%B3%95%E5%BE
%8B&hl=ja&gl=jp&ct=clnk&cd=2

お礼日時:2006/09/14 09:39

法律的な質問・・・・


となると カテ違いなので・・
このカテでお答えできることはこれぐらいです。

=IF(A1>TODAY(),"",DATEDIF(A1,TODAY()+1,"Y"))

この式で行けば、明日生まれる子供が0歳?になる心配もないし、質問者さんのご希望にかなえられるかな?
どうでしょう!?

この回答への補足

確かにカテ違いのようになってきてしまいました。
私の書き方が悪いのかもしれませんが、
私は「前日加算」がいろいろなところで述べられているのでその解釈を前提に(それが正しいと考えて)
DATEDIF(A1,TODAY()+1,"Y")では何か計算上不具合があるかが聞きたかったことが本旨です。

もう少し私なりに調査してみたいと思います。

補足日時:2006/09/13 18:04
    • good
    • 0

N0.2です。



No.2回答に補足として
>その解釈は違うと思います。
とあり、参考サイトが紹介されています。

そのサイトには、次のような記述があります。
『 年齢計算に関する法律(明治三十五年法律第五十号)は、第一項において「年齢ハ出生ノ日ヨリ之ヲ起算ス」と規定し、第二項において「民法第百四十三条ノ規定ハ年齢ノ計算ニ之ヲ準用ス」と規定している。そして、民法(明治二十九年法律第八十九号)第百四十三条第二項本文は、「週、月又ハ年ノ始ヨリ期間ヲ起算セサルトキハ其期間ハ最後ノ週、月又ハ年ニ於テ其起算日ニ応当スル日ノ前日ヲ以テ満了ス」と規定しているところ、「前日ヲ以テ満了ス」とは、前日午後十二時をもって満了することを意味するものと一般に解されている。このように、年齢計算に関する法律は、ある者の年齢は、その者の誕生日の前日の午後十二時に加算されるものとしているのであって、このことは、社会における常識と異なるものではないと考えている。』

どうも、質問者さんは、
『「前日ヲ以テ満了ス」とは、前日午後十二時をもって満了することを意味するものと一般に解されている。』
という部分のの解釈が間違っているようです。

もう一度、同じ例で説明します。
2003年9月12日午後4時に生まれた人が満1歳になるのは、2004年9月11日が満了した時点です。
2004年9月11日午後11時59分59秒の時点ではまだ0歳です。
1秒後の2004年9月11日午後12時の時点で満1歳になります。

『誕生日の前日の午後十二時に加算される』という意味をご理解いただけたでしょうか。

この回答への補足

何回もすみません。
それなら、前日に加算することがいろいろなところに書いてある理由がわかりません。

>1秒後の2004年9月11日午後12時の時点で満1歳になります

だからこそ満1歳は9月11日になるのではないでしょうか。

http://www2s.biglobe.ne.jp/~law/law/zatsu/gakure …
に以下のように書いてあるのはどう解釈するのでしょう。

この「満了」というのは、その日(=平成16年3月31日)が完全に終わることで成立します。
極めて観念的なことで分かりにくいのですが、3月31日の午後11時59分59秒の次の1秒が終わり
、深夜「12時」になる瞬間に満了するのです。
これはすなわち4月1日午前0時であり、4月1日の始まりとなるわけで、
3月31日の深夜「12時」と4月1日午前0時は事実上はまったく同一の瞬間であるはずのものですが、
あくまでも「満了」したのは「3月31日が終了したこと」によるものであり、「4月1日が開始したこと
」によるわけではないので、
「出生から6年が満了した日」=「満6歳に達した日」は「平成16年3月31日」ということになります。

補足日時:2006/09/13 17:49
    • good
    • 0

例えば、誕生日前日にお亡くなりになった人は、いったい何歳なのでしょうか?


私の解釈ですと、上記の人は1歳加齢しないと思います。誕生日前日を満了してはじめて1歳加齢されると思います。法律上、誕生日前日の加齢は当たり前なのですが、それはあくまでも深夜12時をもっての話です。
その翌日以降(誕生日以降)の事務的な処理をする時に、はじめて前日の加齢をして処理するわけで、誕生日前日には(役所が開いている時間など)だれも加齢されていないんじゃないかと思います。

何だか自分で頭がこんがらがってきましたが・・・
誕生日当日以降だからその前日に加齢されている等の話が出来るんで、法律上の運用も誕生日前日にその処理をしているのではなく、誕生日当日に前日(深夜12時)加齢したと運用しているのでは?

だからやっぱり DATEDIF(A1,today(),"Y") これで良いんじゃないかな?

この回答への補足

ありがとうございます。

>その翌日以降(誕生日以降)の事務的な処理をする時に、はじめて前日の加齢をして処理するわけで、誕生日前日には(役所が開いている時間など)だれも加齢されていないんじゃないかと思います。

大事な事務処理の計算に使う年齢計算を検討しているので法律的な質問をしています。
よろしくお願いします。

下記のような解説があります。

民法など特定の状況で使用される年齢 †
生まれた年は 0歳 として翌年の誕生日の前日に年齢 +1 する。入学資格や一部の法令には月末における年齢を条件にしていることが多い。1日生まれの人は前の月末には年齢が加算されていることになっているので 1日生まれの人は行政サービス(就学、年金や所得税など)を受けるときには要注意。(但し書きもされているらしい)

http://biz.rivus.jp/functions/years_of_age.html

補足日時:2006/09/13 11:51
    • good
    • 0

=DATEDIF("2000/02/29","2001/02/28","Y")



答えは0歳です。
    • good
    • 0
この回答へのお礼

ありがとうございました。とても参考になりました。

お礼日時:2006/09/13 13:16

誕生日前日の深夜12時をもって1歳加算するわけですから、質問者さんの関数を使うと、誕生日前日の0時から1歳加算してしまいます。

計算上24時間早く1歳年をとってしまいます。
深夜12時は翌日の0時と同じだと解釈してDATEDIF(A1,today(),"Y")で良いんじゃないでしょうか?

この回答への補足

> 誕生日前日の0時から1歳加算してしまいます。計算上24時間早く1歳年をとってしまいます。

私の質問の仕方が悪かったかもしれませんが、
誕生日の前日に加算することはいたるところに書いてあります。
それなのに何故DATEDIF(A1,today(),"Y"でいいのかな。という疑問です。

法律的解釈として下記のように書いてあります。

ほとんどの人が満年齢は誕生日に加齢すると思っているが、
法律上は誕生日の前日に加齢すると解釈され、運用されており、
常識と法律の間には1日のずれが生じている。
http://www.jtw.zaq.ne.jp/jingchuan/age.html
http://www.fct.co.jp/benri/nenrei/sotsugyo.html
http://www005.upp.so-net.ne.jp/toko/nenmatu16/ho …
http://homepage2.nifty.com/osiete/s524.htm
http://oshiete.eibi.co.jp/kotaeru.php3?q=328584

補足日時:2006/09/13 10:13
    • good
    • 0

「年齢計算に関する法律」の解釈に誤解があるようです。


たとえば、2003年9月12日午後4時に生まれた人が満1歳になるのは、2004年9月11日が満了した時点です。
つまり、2004年9月11日午後8時の時点ではまだ0歳です。
だから、DATEDIF(A1,today(),"Y")は民法の規定にに沿った関数であると思えます。

http://ha6.seikyou.ne.jp/home/hanappi/hanappi093 …

http://ja.wikipedia.org/wiki/%E5%B9%B4%E9%BD%A2% …

この回答への補足

その解釈は違うと思います。

http://www5d.biglobe.ne.jp/~Jusl/TomoLaw/NenreiK …

http://www5d.biglobe.ne.jp/~Jusl/TomoLaw/NenreiK …

補足日時:2006/09/13 05:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!