知人からの相談シリーズ、第2弾。今回は、Excelでの年齢算出方法。
こちら、割と多用されますのでさまざまなサイトや書籍等で紹介されていると思うのですが、知人が参考にした方法がちょっと「???」な状態で、ふと「何かオカシイ!」と思ったのだそうです。
参考にした方法というのが[今日の日付]-[生年月日]を、書式の設定で年齢表記に変えるというもの。
具体的には、
まず、生年月日を入力し、今日の日付から引きます。この場合、[B1]-[A1]になりますね。すると、シリアル値なのでちょっとオカシナ数字が出て来ます。
これを、書式でいじってしまうというもの。
こんな感じ。セルの書式設定のユーザ定義で「yy」と入力すると、年齢が確かに表示されます。
ホラ、出来た。
これ私の生年月日なんですけどね。結構、年食ってたなw
これで一応は年齢算出可能なんですが、この方法だとひとつ欠陥があります。これに、知人がたまたま気付いてしまった模様です。
その欠陥というのが、こちら。
誕生日当日だと、年齢が加算されていないという欠陥。
たまたま、誕生日当日の人を何となくチェックしたら年齢が加算されていなかったんだそうです。
この方法だと、そうなるのは必然ではあるんですが。
では、どうしましょうかという話なんですが、いわゆる期間というものを算出する関数としては「DATEDIF関数」というものがあります。これ、ナゼかExcel側で黙殺されている不思議な関数。関数一覧にも出て来ないという……。ただ、昔っから期間算出のために多用されている関数ではありますね。
ちなみに、ずっと「DATED IF」という思い込みを続けておりましたが、数年前に、どう考えても「DATE DIFFERENCE」じゃないか、という事実に気付いた時は多少ですが衝撃を受けましたw
DATEDIF関数を入力します。関数一覧に出て来ないので、手打ちです。
=DATEDIF(A1,B1,”Y”)
A1というのは、はじまりです。この場合、生年月日を入力したセルを指定します。B1は終わりなので、当日の日付を入力したセルを指定します。
“Y”というのは表示単位になります。”M”だったら月数が出ます。
無事に、誕生日当日であっても年齢が加算されるようになりました。
また、当日の日付をいちいち入力する訳にもいかないのが実情ですので、常にファイルを開いた時点での満年齢を算出させるためには、以下のように記述します。
=DATEDIF(A1,TODAY(),”Y”)
終了の日を、常にTODAY()で今日に指定しています。こうすれば、特にセルを編集することなく開いた時点での満年齢が表示されるようになります。
但し、法律上の年齢加算って誕生日前日だという話を以前、総務関連の方から伺ったことがあります。その際には、また日付を1日増やして算出する必要性も出て来ます。
=DATEDIF(A1,(TODAY()+1),”Y”)
仕様次第、だとは思いますけれど。法律上がそうであるなら、厳密に算出しなければならない場合はこちらに倣う必要性もあるのかもしれません。そのあたりは用途次第なんでしょか。