エクセルで、生年月日から年齢を求めるには、DATEDIF関数を使います。=DATEDIF(B3,H2,"Y") で、生年月日(B3)から、基準日(H2)までの、満年齢が求められます。今日の年齢を、自動で求めるなら、基準日に TODAY関数を指定します。勤続年数や、経過日数も、同じ考え方で求められます。
この記事では、満年齢の求め方、「○歳○か月」の表示、勤続年数・月数、日数の計算、次の誕生日までの日数、DATEDIF関数の注意点を、1つの表を使って説明します。下の練習ツールで、基準日や生年月日を書き換えて、結果の変わり方を試せます。
年齢・期間の計算|やりたいこと別の式
| やりたいこと | 式(例) | ポイント |
|---|---|---|
| 満年齢を求める | =DATEDIF(B3,$H$2,”Y”) | 第3引数「Y」で、満年数が求まります。 |
| 今日の年齢を求める | =DATEDIF(B3,TODAY(),”Y”) | 開くたびに、今日の年齢になります。 |
| 「○歳○か月」で表示する | =DATEDIF(B3,$H$2,”Y”)&”歳”&DATEDIF(B3,$H$2,”YM”)&”か月” | 「YM」で、1年に満たない月数を求めます。 |
| 何か月経ったか | =DATEDIF(H3,H2,”M”) | 「M」で、満月数が求まります。 |
| 何日経ったか | =H2-H3 | 日付どうしの、引き算で求まります。 |
| 次の誕生日までの日数 | =DATE(…)-H2 | 次の誕生日の日付を作って、基準日を引きます。 |
まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
満年齢を求める(DATEDIF関数)
生年月日(B3)から、基準日(H2)時点の満年齢を、C3セルに求めます。

梅は、1990/5/15生まれで、基準日の2026/10/11には、まだ、36歳なので、結果は 36 です。竹は、2010/10/11生まれで、基準日が、ちょうど誕生日なので、16 になります。楓は、1975/10/12生まれで、誕生日の前日なので、まだ 50 です。詳しくは、生年月日から年齢を計算する方法、DATEDIF関数の使い方を参照してください。
▶ この式(C3)を、上の練習ツールで試す / この式(C6)を、上の練習ツールで試す
今日の年齢を、自動で求める(TODAY関数)
基準日に、TODAY関数を指定すると、ファイルを開くたびに、その日の年齢に、更新されます。名簿や、会員表で便利です。
練習用の表では、結果が変わらないように、基準日を、2026/10/11に固定しています。固定した日付の時点の年齢(たとえば、4月1日時点)を求めるときも、基準日のセルを使います。TODAY関数の詳しい使い方は、TODAY関数・NOW関数の使い方を参照してください。
「○歳○か月」・「○年○か月○日」で表示する
年齢と、1年に満たない月数を、続けて表示するには、DATEDIF関数を2回使って、「&」でつなぎます。第3引数の「YM」は、年を除いた、月数です。
=DATEDIF(B3,$H$2,"Y")&"歳"&DATEDIF(B3,$H$2,"YM")&"か月"
梅は、36歳と、4か月なので、結果は 36歳4か月 です。勤続年数も、同じ形で、「○年○か月○日」と表示できます。2020/4/1に入社した人の、基準日までの勤続は、次の式で、結果は 6年6か月10日 です。
=DATEDIF(H3,H2,"Y")&"年"&DATEDIF(H3,H2,"YM")&"か月"&DATEDIF(H3,H2,"MD")&"日"
▶ この式(D3)を、上の練習ツールで試す / この式(H8)を、上の練習ツールで試す
勤続年数・月数・日数を求める
入社日(H3)から、基準日(H2)までの、満年数は、「Y」を指定します。結果は 6 年です。
満月数は、「M」を指定します。6年6か月は、結果が 78 か月です。
経過日数は、日付どうしを、引き算するだけです。結果は 2384 日です。セルの表示形式が、日付になっているときは、「標準」に直します。詳しくは、経過日数を求める方法を参照してください。
=H2-H3
▶ この式(H5)を、上の練習ツールで試す / この式(H6)を、上の練習ツールで試す / この式(H7)を、上の練習ツールで試す
次の誕生日までの日数を求める
次の誕生日までの日数は、基準日を過ぎたかどうかで、年を足して、作ります。梅(5/15生まれ)は、今年の5/15が、基準日より前なので、来年の5/15を、次の誕生日にします。
=DATE(YEAR(H2)+(DATE(YEAR(H2),MONTH(B3),DAY(B3))<H2),MONTH(B3),DAY(B3))-H2
今年の誕生日が、基準日より前なら、「+1」で来年にして、日付を作り、基準日を引きます。結果は 216 日です。「(…)
年齢・期間の計算がうまくいかないときの確認表
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 「#NUM!」になる | 開始日が、終了日より後になっている | 開始日と終了日の、順番を入れ替える。 |
| 「#VALUE!」になる | 日付が、文字になっている | 日付を、数値(シリアル値)として入力し直す。 |
| 日数が、日付の表示になる | セルの表示形式が「日付」 | 表示形式を「標準」にする。 |
| 年齢が、1つずれる | 誕生日の前日・当日を、考えていない | 基準日と、誕生日の日付を、確認する。DATEDIFは、誕生日の当日に、1つ増える。 |
| 2月29日生まれの年齢が合わない | うるう年の誕生日 | 平年は、3/1に1つ増える。基準日で、確認する。 |
| 「MD」の結果が、おかしい | DATEDIF関数の「MD」には、既知の不具合がある | 日数は、日付の引き算で、求める。 |
| 値を変えても、結果が変わらない | 計算方法が「手動」になっている | 「数式」タブの「計算方法の設定」を「自動」にする。 |
年齢・期間の計算のよくある質問
生年月日から、年齢を求める式は?
=DATEDIF(生年月日,TODAY(),"Y") です。生年月日のセルを指定して、基準日に TODAY関数を使うと、今日の満年齢が求まります。
DATEDIF関数が、関数の一覧に出ないのはなぜですか?
DATEDIF関数は、古いExcelとの互換のために、残されている関数で、関数の一覧や、入力のヒントに、出ません。そのまま入力すれば、使えます。
年度末(3月31日)時点の年齢を求めるには?
基準日のセルに、3月31日の日付を入力して、DATEDIF関数の終了日に、そのセルを指定します。
あわせて読みたい:年齢・日付の関連記事
- Excelで生年月日から年齢を計算する方法|DATEDIF関数
- DATEDIF関数の使い方|2つの日付の差を年・月・日で求める
- Excelで経過日数を求める方法|DAYS関数と引き算
- エクセルの日付の入力と計算|自動・今日・曜日・日数・月末
- Excelで3か月後の日付を求める方法|EDATE関数と月末の扱い
練習用ファイル:練習用Excelファイル(.xlsx・無料)
