Excelでは日付をシリアル値として管理している。シリアル値は、整数部分が日付を表し、小数点以下で時間を表している。シリアル値が1増えるとということは、日付が1日増えるということになる。したがって、シリアル値同士を引き算すれば、その間が何日かを計算することができる(図1)。では、2つの日付の間が「何カ月か」や「何年か」を計算したいときはどうしたらいいだろう。

 そんなときに便利なのがDATEDIF関数だ。書式は、DATEDIF(開始日,終了日,単位)となる。引数の「単位」には、次の文字を指定する。

単位 戻り値
"Y" 期間内の満年数
"M" 期間内の満月数
"D" 期間内の満日数
"MD" 1か月未満の日数
"YM" 1年未満の月数
"YD" 1年未満の日数

 引数「開始日」に自分の誕生日である「1969/5/3」を指定する。引数「終了日」には今日のシリアル値を表すTODAY関数を指定する。「単位」に「"Y"」を指定すれば、今日現在の満年齢を求めることができる(図2)。

 「DATEDIF関数なんて見たことがない」と思われる方もいるだろう。それもそのはず、DATEDIF関数は他のアプリケーションと互換性を維持するためにこっそり用意された関数なので、関数ウィザードには表示されないなのだ。だが、こんな便利な関数を使わない手はない。ぜひマスターしていただきたい。

図1 日付と日付を引き算すれば、その間の日数を知ることができる。計算式を入力したセルには日付の表示形式が自動的に設定されるので、「セルの書式設定」ダイアログボックスで「G/標準」を指定しておこう


図2 2つの日付を指定して、その間の「年数」や「月数」を返すDATEDIF関数。関数ウィザードで選択することはできない

【補足】「年齢計算ニ関スル法律」では、満年齢は誕生日の前日に1歳が加えられるとなっています。これに準じた場合、上記の計算式は「=DATEDIF(A2,TODAY()+1,"Y")」となります。

■変更履歴
「補足」を追加しました。[2007/03/13 14:30]