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関数の両方がそのまま動作します。