ブログ

エクセルで年齢を計算する方法|DATEDIF関数で生年月日から自動計算

更新日:2026.10.20

社員名簿や会員リスト、PTAの名簿などで「生年月日から年齢を自動で出したい」ときは、エクセル(Excel)のDATEDIF関数を使うのがいちばん簡単です。この記事では、今日時点の年齢、指定した日の年齢、「○歳○か月」の表示、数字8桁の生年月日からの計算、DATEDIFが使えないときの代わりの式まで、例つきで解説します。例の答えは当サイトの年齢計算プログラム(エクセルと同じ考え方で検算済み)で求めています。

基本:今日時点の年齢を出す式

A2セルに生年月日が入っているとき、B2セルに次の式を入れると、今日時点の満年齢が表示されます。

=DATEDIF(A2,TODAY(),"Y")

DATEDIF(デイト・ディフ)は「2つの日付の差」を求める関数で、3つ目の引数"Y"は「満何年か」を意味します。TODAY()はファイルを開いた日の日付なので、毎日開くたびに年齢が自動で更新されます。誕生日の前日までは1歳少なく、誕生日当日から1歳増えるので、履歴書や公的な書類と同じ満年齢になります。

式を入れたら、B2セルの右下の小さな四角(フィルハンドル)をダブルクリックすると、下の行まで一度にコピーできます。

DATEDIF関数の単位一覧

3つ目の引数を変えると、年数以外も求められます。生年月日1990/4/1、基準日2026/4/1の場合の答えです。

単位意味式の例答え
"Y"満年数(年齢)=DATEDIF(A2,B2,"Y")36
"M"満月数=DATEDIF(A2,B2,"M")432
"D"日数=DATEDIF(A2,B2,"D")13,149
"YM"1年未満の月数=DATEDIF(A2,B2,"YM")0
"MD"1か月未満の日数=DATEDIF(A2,B2,"MD")0

なお、マイクロソフトは"MD"について「正しくない結果になる場合がある」と注意を出しています。月末をまたぐ計算では、"MD"の代わりに日数を別の方法で求めるほうが安全です。

指定した日の年齢を出す(4月1日時点など)

保険の加入年齢、学校の学年、会社の年度ごとの集計などでは「4月1日時点の年齢」のように、日付を決めて年齢を出すことがよくあります。その場合はTODAY()の代わりに、基準日を入れたセルを指定します。

=DATEDIF(A2,$E$1,"Y")

E1セルに基準日(例:2026/4/1)を入れ、$記号で固定すると、式をコピーしても全員が同じ基準日で計算されます。式の中に日付を直接書く場合は =DATEDIF(A2,DATE(2026,4,1),"Y") のようにDATE関数を使うと、文字列の日付で起きるエラーを防げます。

次の表は、基準日を2026/4/1にして4人分の年齢を計算した例です。

名前生年月日"Y"(年齢)"YM"(か月)"D"(日数)
社員A1990/4/136歳0か月13,149日
社員B1985/11/2340歳4か月14,739日
社員C2000/2/2926歳1か月9,528日
社員D1972/4/253歳11か月19,722日

社員Cのように2月29日生まれの人は、うるう年でない年は3月1日に年齢が上がる扱いになります。社員Dのように4月2日生まれの人は、4月1日時点ではまだ誕生日前なので、1歳少なく表示されます。

「○歳○か月」と表示する

保育園や幼稚園の名簿、ペットの年齢などでは「○歳○か月」で表したいことがあります。"Y"と"YM"を&でつなげば1つのセルに表示できます。

=DATEDIF(A2,TODAY(),"Y")&"歳"&DATEDIF(A2,TODAY(),"YM")&"か月"

生年月日1990/4/1、基準日2026/4/1なら「36歳0か月」になります。日数まで出したいときは、さらに"MD"と"日"をつなげます。

生年月日が「19900401」のような8桁の数字のとき

システムから出力した名簿では、生年月日が日付ではなく「19900401」という8桁の数字で入っていることがあります。そのままDATEDIFに渡すとエラーになるので、TEXT関数で日付の形に直してから計算します。

=DATEDIF(TEXT(A2,"0000-00-00"),TODAY(),"Y")

もうひとつ、昔から使われている計算方法もあります。「今日の8桁 − 生年月日の8桁」を10000で割り、小数点以下を切り捨てると満年齢になります。

=INT((TEXT(TODAY(),"yyyymmdd")-A2)/10000)

たとえば基準日20260401 − 生年月日19900401 = 360,000、10000で割って切り捨てると36歳です。月と日の大小関係がそのまま引き算に反映されるので、誕生日前・誕生日後も正しく判定できます。当サイトの検算でも、1950年〜2026年のすべての生年月日でDATEDIFと同じ答えになることを確認しています。

DATEDIF関数が見つからないときは

DATEDIFは古い表計算ソフトとの互換性のために残されている関数で、関数の一覧や入力中の候補には表示されません。それでも、正しく入力すれば普通に使えます。「関数が見つからない」と感じたら、候補を使わずに最後まで手で入力してみてください。

Googleスプレッドシートや、Mac版のNumbersでもDATEDIF関数は使えます。どうしても使いたくない場合は、上の「8桁の引き算」の式が代わりになります。YEARFRAC関数で年齢を出す方法もありますが、誕生日の前後で1日ずれることがあるため、年齢にはおすすめしません。

数え年と和暦を表示する

厄年や長寿祝いの名簿では数え年が必要になることがあります。数え年は誕生日に関係なく「今年 − 生まれた年 + 1」なので、次の式で求められます。

=YEAR(TODAY())-YEAR(A2)+1

1990年生まれなら、2026年の数え年は37歳です。生年月日を和暦で表示したいときは、セルの書式設定で「ユーザー定義」に ggge年m月d日 と入れると「平成2年4月1日」のように表示されます。最近のExcelでは、元年を「1年」ではなく「元年」と表示する設定も選べます。

年齢から「20代・30代」の年代を出す

アンケートの集計や会員の分析では、年齢を「20代」「30代」のような年代にまとめると便利です。年齢がB2セルにあるとき、次の式で年代を表示できます。

=INT(B2/10)*10&"代"

たとえば社員Aの36歳なら「30代」になります。年代ごとの人数を数えたいときは、COUNTIFS関数で =COUNTIFS(B:B,">=30",B:B,"<40") のように範囲を指定するか、ピボットテーブルで年代の列を集計します。

よくあるエラーと直し方

  • #NUM!:開始日が終了日より後になっています。生年月日と基準日の順番を確認しましょう(DATEDIFは必ず「古い日付, 新しい日付」の順)。
  • #VALUE!:生年月日が文字列として入っています。「1990.4.1」のようなドット区切りは日付として認識されないので、スラッシュ区切りに直すか、DATE関数で日付に変換します。
  • 年齢が「1900/2/5」のように表示される:セルの書式が日付になっています。書式を「標準」か「数値」に変えると正しく表示されます。

エクセルを使わずに年齢を確認する

1人分だけ確認したいときは、下の計算ツールで生年月日を選ぶほうが早いです。満年齢・数え年・和暦・干支が一度にわかるので、エクセルの式の答え合わせにも使えます。

2026年の誕生日後の満年齢36歳誕生日前は35歳
数え年
37歳
和暦
平成2年
干支
庚午うま年
星座
やぎ座
学年
社会人など
生まれてから
-

生まれ年ごとの年齢の一覧は年齢早見表で、2つの日付の間の日数(DATEDIFの"D"と同じ値)は日数計算で確認できます。和暦と西暦の変換は和暦西暦変換、満年齢と数え年の違いは数え年とは?の記事で詳しく説明しています。

よくある質問

エクセルで生年月日から年齢を自動計算する式は?

A2セルに生年月日があるとき、=DATEDIF(A2,TODAY(),"Y") で今日時点の満年齢が出ます。ファイルを開くたびに自動で更新されます。

4月1日時点の年齢を出すには?

基準日をE1セルなどに入れ、=DATEDIF(A2,$E$1,"Y") とします。$で固定すると、下の行にコピーしても同じ基準日で計算されます。

DATEDIF関数が候補に出てこないのはなぜ?

DATEDIFは互換性のために残された関数で、関数の候補には表示されません。最後まで手で入力すれば使えます。

「○歳○か月」と表示するには?

=DATEDIF(A2,TODAY(),"Y")&"歳"&DATEDIF(A2,TODAY(),"YM")&"か月" のように、"Y"と"YM"の結果を&でつなげます。

Googleスプレッドシートでも同じ式が使える?

はい。DATEDIF関数、TODAY関数とも同じ書き方で使えます。

ほかの早見表・計算ツール