• ベストアンサー

エクセルで年齢の計算の仕方

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

質問者が選んだベストアンサー

  • ベストアンサー
  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

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

参考URL:
http://www.h3.dion.ne.jp/~sakatsu/ktfunc_ref0206.htm#DATEDIF
miki216
質問者

お礼

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

その他の回答 (8)

  • oyaji-man
  • ベストアンサー率34% (123/354)
回答No.9

いろいろ悩ませて住みませんでした。 >「前日加算」がいろいろなところで述べられているのでその解釈を前提に(それが正しいと考えて) DATEDIF(A1,TODAY()+1,"Y")では何か計算上不具合があるかが聞きたかった この部分をよく読みませんでした・・・ ごめんなさい。 そうなるとやっぱり =IF(A1>TODAY(),"",DATEDIF(A1,TODAY()+1,"Y")) かな? ただ質問者さんの業務(おそらく?)上そんなエラーは解っているでしょうから DATEDIF(A1,today()+1,"Y") で何の問題もないと思いますよ。

miki216
質問者

お礼

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

miki216
質問者

補足

蛇足ですが下記に法律的解釈の具体例が出ていましたので参考に紹介しておきます。 他にも至る所に法的解釈があります。 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/200608290001/ (3)今日8月29日は、にゃんにゃん共和国の 大事な総選挙の日ですが、 Q.明日8月30日が誕生日で今日はまだ19歳の   猫田猫吉くんは投票できるでしょうか? 答え)投票できる

  • oyaji-man
  • ベストアンサー率34% (123/354)
回答No.8

=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

miki216
質問者

お礼

いろいろ調べてみました。 DATEDIF(A1,today()+1,"Y")を用いるべきだというサイトが下記にありました。 いろいろアドバイスありがとうございました。 >誕生日前日の午前0時から加齢される結果が出てしまいます。 前日加算の法律的解釈については社会保険労務士に聞いてみます。 http://www.h3.dion.ne.jp/~sakatsu/period_topic2.htm#Note 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:www.kotaete-net.net/ 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

  • oyaji-man
  • ベストアンサー率34% (123/354)
回答No.7

法律的な質問・・・・ となると カテ違いなので・・ このカテでお答えできることはこれぐらいです。 =IF(A1>TODAY(),"",DATEDIF(A1,TODAY()+1,"Y")) この式で行けば、明日生まれる子供が0歳?になる心配もないし、質問者さんのご希望にかなえられるかな? どうでしょう!?

miki216
質問者

補足

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

  • fronteye
  • ベストアンサー率43% (118/271)
回答No.6

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歳になります。 『誕生日の前日の午後十二時に加算される』という意味をご理解いただけたでしょうか。

miki216
質問者

補足

何回もすみません。 それなら、前日に加算することがいろいろなところに書いてある理由がわかりません。 >1秒後の2004年9月11日午後12時の時点で満1歳になります だからこそ満1歳は9月11日になるのではないでしょうか。 http://www2s.biglobe.ne.jp/~law/law/zatsu/gakurei.htm に以下のように書いてあるのはどう解釈するのでしょう。 この「満了」というのは、その日(=平成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日」ということになります。

  • oyaji-man
  • ベストアンサー率34% (123/354)
回答No.5

例えば、誕生日前日にお亡くなりになった人は、いったい何歳なのでしょうか? 私の解釈ですと、上記の人は1歳加齢しないと思います。誕生日前日を満了してはじめて1歳加齢されると思います。法律上、誕生日前日の加齢は当たり前なのですが、それはあくまでも深夜12時をもっての話です。 その翌日以降(誕生日以降)の事務的な処理をする時に、はじめて前日の加齢をして処理するわけで、誕生日前日には(役所が開いている時間など)だれも加齢されていないんじゃないかと思います。 何だか自分で頭がこんがらがってきましたが・・・ 誕生日当日以降だからその前日に加齢されている等の話が出来るんで、法律上の運用も誕生日前日にその処理をしているのではなく、誕生日当日に前日(深夜12時)加齢したと運用しているのでは? だからやっぱり DATEDIF(A1,today(),"Y") これで良いんじゃないかな?

miki216
質問者

補足

ありがとうございます。 >その翌日以降(誕生日以降)の事務的な処理をする時に、はじめて前日の加齢をして処理するわけで、誕生日前日には(役所が開いている時間など)だれも加齢されていないんじゃないかと思います。 大事な事務処理の計算に使う年齢計算を検討しているので法律的な質問をしています。 よろしくお願いします。 下記のような解説があります。 民法など特定の状況で使用される年齢 † 生まれた年は 0歳 として翌年の誕生日の前日に年齢 +1 する。入学資格や一部の法令には月末における年齢を条件にしていることが多い。1日生まれの人は前の月末には年齢が加算されていることになっているので 1日生まれの人は行政サービス(就学、年金や所得税など)を受けるときには要注意。(但し書きもされているらしい) http://biz.rivus.jp/functions/years_of_age.html

noname#22222
noname#22222
回答No.4

=DATEDIF("2000/02/29","2001/02/28","Y") 答えは0歳です。

miki216
質問者

お礼

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

  • oyaji-man
  • ベストアンサー率34% (123/354)
回答No.3

誕生日前日の深夜12時をもって1歳加算するわけですから、質問者さんの関数を使うと、誕生日前日の0時から1歳加算してしまいます。計算上24時間早く1歳年をとってしまいます。 深夜12時は翌日の0時と同じだと解釈してDATEDIF(A1,today(),"Y")で良いんじゃないでしょうか?

miki216
質問者

補足

> 誕生日前日の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/hojo3.html http://homepage2.nifty.com/osiete/s524.htm http://oshiete.eibi.co.jp/kotaeru.php3?q=328584

  • fronteye
  • ベストアンサー率43% (118/271)
回答No.2

「年齢計算に関する法律」の解釈に誤解があるようです。 たとえば、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.htm http://ja.wikipedia.org/wiki/%E5%B9%B4%E9%BD%A2%E8%A8%88%E7%AE%97%E3%83%8B%E9%96%A2%E3%82%B9%E3%83%AB%E6%B3%95%E5%BE%8B

関連するQ&A

  • エクセルで年齢を計算させようと

    セルA1には生年月日B2に次の式を入れて =DATEDIF(DATEVALUE(A1),TRUNC(NOW()),"Y") 年齢の計算をさせていましたが、そのファイルでは正確に計算されていました。 別に新しく作ったファイルで#VALUE!となります。 全く同じ条件で新しく作ったファイルなのに 何故なんでしょうか? よろしくお願いします。

  • エクセルの年齢関数(DATEDIF)が不調です!

    エクセルの2つのBOOK(AとB)があります。各々 年齢計算を行っております。 =DATEDIF(G25,TODAY(),"Y") のように 計算式を使用していますが、BOOK A は問題なく年齢表示ができますが、BOOK B は、#VALUE! と表示され年齢表示が出来ません。PCは、Windows10 で エクセル2016 を使用しております。どこに問題があると考えられるでしょうか。

  • エクセルでの年齢(平成元年1989年)について

    エクセルにて DATEDIF("1989/9/26",TODAY(),"y") で年齢をだすと 本日現在24才になってしまします。 いろいろためしたところ、1989/2 迄だと25才になり 1989/3~が24才になってしまうようです。 どのようにしたら25才になるのでしょうか? 教えて頂きたくよろしくお願いします。

  • EXCELで年令計算するDATEDIF関数

    EXCELで年令計算する関数DATEDIFを使って、生年月日の記入をすると年令を表示しますが、 記入がないと 111才 になってしまいます。生年月日の記入がないときには 0才 にしたいのですが、わかりません。   たとえば、生年月日のセルを         B12         基準日(関数TODAY()を使用 )を E3         年令表示セルを           B11 にして、セルB11に次の関数を入力します。     =DATEDIF(B12,E3,"Y") & "才" すると、生年月日がセルB12に入っていれば、年令を表示しますが、生年月日の記入がない(空欄)と111才と表示されてしまいます。空欄では0才などにしたいのですが、ご教示をお願いします。 セルの西暦・和暦やTODAY関数が影響するのかわかりません。

  • エクセルの年齢計算ができない(VBA)

    VBAでエクセル関数のDATEDIF関数を入力したいのですがうまくいきません。なにかいい方法はありませんか? 例)年齢基準値セルA1、終了期間B1でC1で年齢計算 Private Sub CommandButton1_Click() Range("C1").Value = "=DATEDIF(A1,B1,"y")" End Sub この記述でうまくいきません。 ようは、コマンドボタンクリックで、C1にDATEIF関数を入力したいのですが・・・

  • エクセル 年数 計算

    エクセルで年数を計算したいのですが、以下の式で#NUMと出ます。 いったいなにが悪いのでしょうか? =DATEDIF(YEAR(TODAY()),YEAR(H24),"y") H24には1983/1/4と入っています。

  • エクセルの年齢の計算方法について

    エクセルで、A1に「現在の日付」、A2に「生年月日」を入れ、 A3のセルで次のとおり計算式、 =DATEDIF(A2,$A$1,"Y")&"年"&DATEDIF(A2,$A$1,"YM")+1&"ヶ月" を入力し、「○○年○○ヶ月」と表示させました。 このA2「生年月日」と、A3「○○年○○ヶ月」のデータがいくつかあるのですが、「○○年○○ヶ月」の平均値を求めることは可能でしょうか? その場合の、計算式等をお教えていただけないでしょうか? 分かりにくい説明で申し訳ありません。 よろしくお願いいたします。

  • エクセルでエクセル 年齢の計算式の後に歳を入れる

    DATEDIFで誕生日から年齢を計算したのですが年齢の後ろに歳を表示させたいのですがどうすればいいでしょうか?

  • エクセルの関数で平均年齢の出し方を教えてください。

    エクセルでTODAYを元に年齢を =DATEDIF(H5,$J$3,"Y")&"歳"&DATEDIF(H5,$J$3,"YM")&"ヶ月" のようにして○歳○ヶ月というようにセルに表示されるよう関数 で求めています。 この○歳○ヶ月のセル列の最後に平均年齢を求めたいのですが、 =AVERAGE(範囲)では求められないので どのようにすえば求められるのか教えていただけないでしょうか? 宜しくお願いたします。

  • EXCEL エクセル 年齢 DATEDIF関数 空白の場合

    EXCEL2007 年齢を計算するのに A1セルに 生年月日を入力、 B1セルに年齢  =DATEDIF(A1,TODAY(),"y")で  満年齢がでると思うのですが A1セルが空白の場合 109となります。 A1セルが空白の場合 B1セルも空白になる関数を教えてください。 本を見ながらの初心者です。よろしくお願いします。

専門家に質問してみよう