概要
生年月日から「現在の満年齢」を求めるなら、DATEDIF関数の単位 “y” が最短です。開始日に生年月日、終了日に TODAY()(今日)を渡すだけで、誕生日を過ぎているかまで含めて自動計算されます。表示を「歳」付きにしたり、月・日までの端数を加えて「X歳Yか月Z日」にするのも簡単です。
基本の使い方
書式
=DATEDIF(開始日, 終了日, "y")
“y” は“満年数”を意味します。誕生日を迎えていなければ加算されません。
今日時点の満年齢
=DATEDIF(A2, TODAY(), "y")
A2が生年月日。今日現在の満年齢が数値で返ります。
「◯歳」で表示
=DATEDIF(A2, TODAY(), "y") & "歳"
具体例
指定基準日で年齢を求める(学年名簿・イベント基準日)
=DATEDIF(A2, B2, "y")
A2: 生年月日、B2: 基準日(例:2025/04/01)。その日付時点の“満年齢”。
年齢を「歳・か月・日」まで表示
=DATEDIF(A2, TODAY(), "y") & "歳" &
DATEDIF(A2, TODAY(), "ym") & "か月" &
DATEDIF(A2, TODAY(), "md") & "日"
人に見せる帳票向けの表記。
今年の誕生日(到来日)を求める
=DATE(YEAR(TODAY()), MONTH(A2), DAY(A2))
今日と比較して「誕生日が過ぎたか」の判定にも使えます。
応用テンプレート
年齢で区分(未成年/成人など)のラベル化
=IF(DATEDIF(A2, TODAY(), "y")>=18, "成人", "未成年")
年齢が基準以上かの判定(TRUE/FALSE)
=DATEDIF(A2, TODAY(), "y") >= 65
生年月日から“次の誕生日”までの日数
=LET(
dob, A2,
nextbd, DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(dob),DAY(dob))<TODAY()), MONTH(dob), DAY(dob)),
nextbd - TODAY()
)
“年齢早見表”を作る(名簿向け)
名簿の生年月日が縦に並ぶ前提で隣列へ年齢を一括表示。
=DATEDIF(A2:A100, TODAY(), "y")
(Microsoft 365の動的配列で一括計算)
よくあるつまずきと対策
開始>終了でエラー
DATEDIFは開始日が終了日を超えるとエラーになります。生年月日(開始)と基準日(終了)の前後関係を必ず確認してください。
文字列日付の誤解釈
“YYYY/MM/DD” の“文字列”は環境次第で誤認識します。セルを日付として入力するか、DATE(年,月,日)で生成しましょう。
“満年齢”の仕様
“y” は“誕生日到来前は加算しない”満年齢です。端数の月・日まで表示したい場合は “ym” と “md” を組み合わせます。
表示整形
DATEDIFの戻り値は数値。「◯歳」などの表示にしたいときは & で単位を付けるか、TEXTで整形してください。
例題
問題1: A2の生年月日から今日現在の“満年齢”をB2に表示してください。
=DATEDIF(A2, TODAY(), "y")
問題2: A2の生年月日から今日現在の「X歳Yか月Z日」をC2に表示してください。
=DATEDIF(A2, TODAY(), "y") & "歳" & DATEDIF(A2, TODAY(), "ym") & "か月" & DATEDIF(A2, TODAY(), "md") & "日"
問題3: A2の生年月日から“基準日D2時点”の満年齢をE2に表示してください。
=DATEDIF(A2, D2, "y")
問題4: A2の生年月日について、今日が“誕生日かどうか”をTRUE/FALSEでF2に表示してください。
=DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))=TODAY()
問題5: A2の生年月日の“次の誕生日までの日数”をG2に表示してください。
=LET(dob,A2, nextbd, DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(dob),DAY(dob))<TODAY()), MONTH(dob), DAY(dob)), nextbd - TODAY())
まとめ
年齢は DATEDIF(生年月日, 基準日, “y”) が最短。今日なら TODAY()、基準日があるならその日付を使い、必要に応じて “ym” と “md” を足して「歳・か月・日」に整形。判定や区分はIFで、次の誕生日などの周辺ロジックはDATEと組み合わせれば、名簿・イベント管理・人事帳票まで一貫して扱えます。
