cellio

Excelで生年月日から年齢を計算する方法!DATEDIF関数を解説

Excelで生年月日から現在の年齢を自動計算する方法を解説。定番のDATEDIF関数やYEARFRAC関数の使い方、「365で割る」計算がNGな理由、特定時点での年齢計算や年代別のグループ分けまで分かりやすく網羅しました。

著者 Ayoub Farid · · 4 分で読めます

Excelには「AGE」のような年齢を直接求める関数はありませんが、短い数式を1つ使うだけで簡単に計算できます。ここでは、B列に生年月日が入力されている前提で解説します。

満年齢を計算する

=DATEDIF(B2,TODAY(),"y")

この数式は満年齢(満了した年数)を返します。例えば2000年3月20日生まれの人の場合、2026年3月19日までは「25」、2026年3月20日になると「26」になります。詳しくはDATEDIF関数の解説記事をご覧ください。

代替案:YEARFRAC関数を使う

=INT(YEARFRAC(B2,TODAY(),1))

YEARFRAC関数は1年を基準とした端数付きの年数を返し、INT関数で小数点以下を切り捨てて整数にします。

なぜ「365で割る」計算はダメなのか?

=(TODAY()-B2)/365 という数式は、うるう年(閏年)が考慮されないため、誕生日前後に1日分のズレが生じる原因になります。年齢を正確に計算したい場合は、必ずDATEDIF関数かYEARFRAC関数を使いましょう。

「〇歳〇ヶ月」と表示する

=DATEDIF(B2,TODAY(),"y")&" years "&DATEDIF(B2,TODAY(),"ym")&" months"

※日本語で「〇歳〇ヶ月」と表示させたい場合は、&"歳"& や &"ヶ月" に変更してください。

特定の基準日時点での年齢を計算する

年度初め(4月1日など)の時点での年齢を計算したい場合(基準日をF1セルに入力):

=DATEDIF(B2,$F$1,"y")

オートフィルで下にコピーする前に、基準日となるF1セルを「$」記号で固定しておきます。詳しくは絶対参照の解説記事をご覧ください。

年代別にグループ分けする

=IFS(C2<18,"Under 18",C2<35,"18–34",C2<55,"35–54",TRUE,"55+")

※C列に計算した年齢が入っている場合です。グループ分けが完了したら、COUNTIF関数を使って年代ごとの人数を集計できます。

よくあるエラーと対処法

  • #NUM! エラー: 生年月日が終了日(本日など)よりも未来の日付になっているか、西暦の入力ミス(2099年など)が原因です。
  • #VALUE! エラー: 生年月日が日付ではなく「文字列」としてセルに入力されています。=ISNUMBER(B2) で数値(シリアル値)として認識されているか確認してください。
  • 計算結果が日付(1900/1/25など)で表示される: セルの表示形式が「日付」になっています。セルの書式設定を「標準」または「数値」に変更してください。

よくある質問

Excelで年齢を計算する基本の数式は何ですか?

=DATEDIF(birthdate,TODAY(),"y") を使用します(birthdateには生年月日のセルを指定)。

「〇歳〇ヶ月」と月数まで計算するにはどうすればよいですか?

DATEDIF関数で単位に "y" を指定したものと、"ym" を指定したものを & で連結します。

年齢を計算した数式の結果が日付になってしまうのはなぜですか?

セルの表示形式が「日付」に設定されているためです。表示形式を「標準」または「数値」に変更してください。

この数式はGoogleスプレッドシートでも使えますか?

はい、GoogleスプレッドシートでもDATEDIF関数とYEARFRAC関数の両方がそのまま動作します。

あわせて読みたい