エクセルのDATEDIF関数で、生年月日から年齢を自動計算する方法をご紹介します。DATEDIF関数が使えない場合の解決方法や、YEARFRAC関数で代用する方法についても解説しているので、ぜひ参考にしてみてください。
DATEDIF関数で年齢を計算する方法
DATEDIF関数は2つの日付の間の日数、月数、または年数を、指定した単位で返します。
単位は合計6種類で、年数を表す単位は “Y” です。例えば DATEDIF(A2,B2,”Y”) なら、1987年9月1日 から 2023年年5月19日 までの年数 35 を返します。
DATEDIF関数の構成要素:(開始日, 終了日, 単位)
その他の単位は、以下の通りです。例えば単位が”M”なら2つの期間の月数 428 を返しますが、”YM” なら 428/12=35.666… の35年分を除いた月数 8 を返します。
- “Y”:期間の年数を返します。
- “M”:期間の月数を返します。
- “D”:期間の日数を返します。
- “MD”:年数と月数を除いた期間を、日数で返します。
- “YM”:年数を除いた期間を、月数で返します。
- “YD”:年数を除いた期間を、日数で返します。
すべての単位には、二重引用符(“単位”)が必要です。
今日までの期間を自動計算する場合は、終了日にTODAY関数を指定してください。
終了日のセルにTODAY関数を入力して参照させるか、DATEDIF(A2,TODAY(),”MD”) のように数式内の終了日にTODAY関数を直接指定します。
TODAY関数の構成要素:(なし)
DATEDIF関数が使えない
DATEDIF関数は Excel 2013 や、Excel 2016 でも使えます。DATEDIF関数がないと判断される原因や、その他のエラーが発生した場合の解決方法をご紹介します。
DATEDIF関数がない
DATEDIF関数は入力しても予測候補に表示されないため、使えないと判断される場合があります。
実際は上図のように幅広いバージョンに対応しているため、使える可能性が高いです。
#VALUE!エラーになる
DATEDIF関数を正しく入力していますが、#VALUE!エラーになってしまいました。
これは開始日に、1900年 よりも前の日付を指定しているのが原因です。日付のシリアル値は 1900年1月1日 を1とする連番で定義されているため、 それより前は日付として計算できません。
#NAME?エラーになる
#NAME?エラー になる場合、二重引用符の付け忘れか、スペルミスの可能性があります。
数式内に日付や単位を直接指定する場合は、二重引用符(“Y”)が必要です。またDATEDIF関数は候補に表示されないため、スペルミスにも注意してください。
#NUM!エラーになる
#NUM!エラーになる場合、開始日と終了日の指定が逆になっている可能性が高いです。
DATEDIF関数では結果がマイナスになる計算はできないため、大きい方の日付を終了日にします。
結果が日付になる
結果が日付になる場合、表示形式の設定に問題がある可能性があります。ホームタブから数値の表示形式を、[標準]にしてみてください。
YEARFRAC関数で年齢を計算する方法
YEARFRAC関数は開始日と終了日の間の全日数が1年間に対して占める割合を、基準に従って計算します。基準に指定するのは、1年を365日(閏年を366日)で計算する 1 です。
例えば YEARFRAC(A2,B2,1) なら、35.713…(35年と0.713年) を返します。
1年に満たない部分(0.713年)はTRUNC関数で切り捨てることで、年齢を取得可能です。
- 0 または省略:30 日/360 日 (NASD 方式)
- 1:実際の日数/実際の日数
- 2:実際の日数/360 日
- 3:実際の日数/365 日
- 4:30 日/360 日 (ヨーロッパ方式)
YEARFRAC関数の構成要素:(開始日, 終了日, [基準])
月数を計算する数式は TRUNC(12*(YEARFRAC(A2,B2,1)-C2) になります。
1年(12ヶ月) にYEARFRAC関数の小数部分(0.713…)を掛け算することで、月数を取得可能です。最後に1ヶ月に満たなかった少数部分は TRUNC関数で切り捨てています。
TRUNC関数の構成要素:(数値, [桁数])