[EXCEL]基準日-誕生日という単純な式で満年齢が出せるのか検証せよ!
▶ 目次 > 日付と時間のトラブルレスキュー
【問題】
基準日セル-誕生日セルの計算結果を、「セルの書式設定」の「ユーザ設定」の「種類」欄を「yy」にすることで、正しい満年齢が出せるか、検証せよ。
【説明】
先日、総務部門から、4月から勤務する人のデータを入れるためファイルがきました。
年齢関係では 「年齢 歳」というセルと、「生年月日 〇年〇月〇日」というセルがあり、前者には計算式が入っています。
計算式は、「=R7/4/1と入っているセル - 誕生日(上の「〇年〇月〇日生まれ」)のセル」でした。

そして、年齢を表示するセルは、「セルの書式設定」で「yy」となっています。
つまり、計算結果のうち「年」しか表示しない、ということです。

これを最初に見たときは、「こんなやり方があるのか!」と驚きでした。
年齢計算には苦労したことがありましたから。
ただ、同時に「これで本当に正しい年齢が出せるのか?」という疑問も湧きました。
そこで検証してみることに。
満年齢の計算で一番わかりやすいのは4月1日生まれです。
4月1日生まれは翌年の3月31日に満1歳になります。
そう、年は誕生日の前の日に取るのです(だから、4月1日生まれは前の学年に入る)。
これについては、以下をご覧ください(結構くどいです)。
[Excel]誕生日の前日に年を取るのはなんで?、と思った方へ(WEB記事やエクセル本は不正確なものが多いので注意)
そこで、昨年(R6年)4月1日に生まれた人が、いつ1歳になるかを正確に出せるか、計算式を比べてみました。
結果は、こちら。

やっぱり、もらったファイルの計算式は間違っていました。
本来は、3/31に1歳になっていなければおかしいのですが、単純に「基準日-誕生日」だと、3日もずれています!
なお、「DATAEDIF①」は、WEBでよく見かけるDATEDIF関数を使った年齢計算の方法ですが、これも(法的には)間違い。年を取るのが4/1になってしまっています。
法的に正しいのは、「DATEDIF②」。
なぜ、こんなことがあおきるのか?
上の方は「年」ですが、これを「日」にしてみます。
DATEDIF関数は 年と算出する”Y”を、日を表示する”D”に直し、「イーア」つまり、「基準日-誕生日」のことろは、セルの表示を標準に戻します(Ctrl + Shift + ^)。
すると、以下の通りとなりました。

DATAEDIF①とDATAEDIF②は、それぞれ満1歳になったのは、365日目(満1年到達日)となっています。
これはわかります(DATEDIF①は「法的」には正しくないけれど)。
しかし、「イ(基準日)ーア(誕生日)」は、なぜか、367日目。
なぜ?
この理由は今のところわかりません(間にうるう日も入っていない)。
いずれにせよ、単純な「基準日 - 誕生日」では、正しい満年齢は出ない、ということでした。
年齢計算は面倒ですので、何とか楽できないかな、とうことでこういう式が入ったのでしょう。こういう発想は好きです。
でも、お役所ですから「法的」に正しい満年齢を出すのは当然です。
なので、計算式を入れたら、単純な例で検証しておくことが理想的です。
年年数や年齢計算について、もっと知りたい方は以下をどうぞ。
[Excel]期間計算/年数計算/年齢計算(DATEDIF関数、YEARFRAC関数)まとめ
[EXCEL]PDF版 日付(年月日)と時間の入力・表示・計算を掲載しました
コンパクトにまとめたPDF版もあります。
[EXCEL]お役所のエクセル PDF版(順次追加中)
★注意
こまかいことですが、「誕生日」と「生年月日」は、厳密には違いますよね。
「誕生日」=「生年月日」ともいえますが、
「生年月日」は「〇年〇月〇日」しかない一方で、
「誕生日」は「〇年〇月〇日」以外にも「▲年〇月〇日」「◇年〇月〇日」もあります。
つまり、生年月日は1回しかないけど、誕生日は毎年ある、ということです。
ですから、「生まれたその日」を示す場合には「生年月日」であるべきですね。
お役所の書類は大体そうなっているでしょう。
法律だと「出生日」となっているかと思います。
今回の記事は「誕生日」という表現が、「生年月日」と毎年のものと、両方に使ってしまっていますが、ご寛恕ください。
以上 今日の記事はあまり参考にならないと思いますが。
(作業 1日 1h)
日付と時間のトラブルなら、こちら
軽めのトラブルはこちらをどうぞ
「プチトラブルレスキュー」シリーズ 一覧記事
