Excelで生年月日から年齢を計算したいとき、DATEDIF関数を使う方法がよく紹介されます。
しかし、環境によってはDATEDIF関数を入力候補から見つけにくかったり、共有ファイルで式の意味を説明しづらかったりすることがあります。
そのような場合でも、TODAY関数、YEAR関数、DATE関数、IF関数を組み合わせれば、DATEDIF関数を使わずに満年齢を計算できます。
年齢計算で重要なのは、単純に今年の年から生年を引くだけではなく、今年の誕生日をすでに迎えたかどうかを判定することです。
誕生日を迎える前なら1歳を引き、誕生日を迎えた後ならそのまま表示する式を作成します。
この記事では、生年月日が入力された表を使い、今日時点の年齢、指定日基準の年齢、空白やエラーを避ける方法まで詳しく解説します。
サンプルデータは1行目に見出しがあり、生年月日をB列に入力している前提です。
DATEDIF関数なしで年齢を計算する基本式
それではまず、DATEDIF関数を使わずに満年齢を求める基本式について解説していきます。
| 氏名 | 生年月日 | 年齢 |
|---|---|---|
| 田中 花子 | 1990/11/20 | 計算結果 |
| 佐藤 恒一 | 1985/04/03 | 計算結果 |
年齢を表示するC2セルには、今日の日付を基準にした満年齢の式を入力します。
生年だけを引く計算の注意点
年齢を求める際に、YEAR関数で今年と生年を取り出し、差を計算する方法を最初に思い付くかもしれません。
=YEAR(TODAY())-YEAR(B2)
この式は計算が簡単ですが、誕生日をまだ迎えていない人も、その年の誕生日後と同じ年齢として表示されるため、満年齢の管理には向きません。
たとえば今日が2026年10月13日で、生年月日が1990年11月20日なら、単純計算では36と表示されます。
実際には11月20日の誕生日を迎えていないため、この時点の満年齢は35歳です。
従業員名簿、会員情報、年齢制限の確認などでは、この1歳の差が重要になります。
生年月日の月日まで比較する判定を加えることが、正しい年齢計算の基本です。
誕生日を考慮する代替式
続いては、誕生日を迎えたかどうかを含めて判定する式を確認していきます。

=YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0)
この式をC2セルに入力すると、今日時点の満年齢が表示されます。
式の前半であるYEAR(TODAY())-YEAR(B2)は、今年の年から生年月日の年を引く部分です。
後半のIF関数は、今年の誕生日が今日より後かどうかを判定しています。
DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))は、生年月日の月日を使って今年の誕生日の日付を組み立てる処理です。
今年の誕生日が今日より後ならIF関数は1を返し、まだ誕生日を迎えていないことを示します。
すでに誕生日を過ぎている、または今日が誕生日なら0を返すため、年齢を引き下げません。
この仕組みにより、DATEDIF関数が使えない場合でも、満年齢に合った結果を得られます。
数式を下の行までコピーする操作
続いては、入力した年齢計算式を複数のデータへ反映する操作を確認していきます。
C2セルに式を入力してEnterキーを押すと、最初の人の年齢が表示されます。
次にC2セルを選択し、セルの右下にある小さな四角形のフィルハンドルへマウスポインターを合わせます。

ポインターの形が黒い十字になったら、下方向へドラッグすると数式をコピーできます。
隣のB列に連続して生年月日が入力されている場合は、フィルハンドルをダブルクリックする方法も便利です。
相対参照で入力したB2は、下の行ではB3、B4のように自動で変わります。
年齢を手入力で更新する必要はなく、TODAY関数を含む式ならファイルを開いた日付に応じて再計算されます。
【操作のポイント】計算式をコピーする前に、生年月日がExcelで認識できる日付データになっているか確認しましょう。
今日の日付を基準にする年齢計算
続いては、TODAY関数を使って年齢を自動更新する方法を確認していきます。
| 氏名 | 生年月日 | 今日時点の年齢 |
|---|---|---|
| 鈴木 恒一 | 2001/10/14 | 自動計算 |
| 高橋 美咲 | 2001/10/13 | 自動計算 |
TODAY関数は、ブックを再計算した時点の日付を返す関数です。
TODAY関数による基準日の自動更新

それではまず、TODAY関数が年齢計算で果たす役割について解説していきます。
TODAY関数は引数を入力せず、=TODAY()という形で使用します。
=TODAY()
セルに入力すると、今日の日付がシリアル値ではなく日付形式で表示されます。
年齢の式にTODAY関数を組み込むと、基準日を毎年修正する手間がありません。
誕生日を迎えたタイミングで年齢の表示も自動的に切り替わるため、名簿や顧客リストの管理に適しています。
ただし、TODAY関数は固定日ではありません。
過去の時点における年齢を残したい場合や、年度末時点の年齢を求めたい場合には、別セルの日付を基準にする方法を選びましょう。
現在日時まで必要な業務ではNOW関数もありますが、年齢計算だけなら時刻を含まないTODAY関数で十分です。
誕生日当日と誕生日直前の判定
続いては、年齢が変わる日の判定を確認していきます。
年齢計算では、今年の誕生日と基準日が同じ場合に正しく年齢が上がることが大切です。
基本式では、今年の誕生日が基準日より大きい場合だけ1を引いています。
=YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0)
比較演算子が>であるため、誕生日当日は条件に当てはまりません。
そのため、誕生日当日は自動的に新しい年齢として表示されます。
一方で、誕生日の前日は今年の誕生日が今日より後と判断されるため、年齢から1が引かれます。
この違いを理解しておけば、式が誕生日当日にどのように変化するかを確認しやすくなります。

年齢が想定と異なる場合は、パソコンの日付設定ではなく、生年月日セルが文字列になっていないかを先に調べるとよいでしょう。
日付表示形式とシリアル値の確認
続いては、生年月日を日付として扱うための確認方法を解説していきます。
Excelの日付は画面上では2026/10/13のように見えますが、内部では連続した数値として保存されています。
この数値をシリアル値と呼び、DATE関数やMONTH関数、DAY関数は日付のシリアル値を前提に動作します。
生年月日が左寄せで表示されていたり、セルの左上に緑の三角が表示されたりする場合は、文字列として保存されている可能性があります。
文字列の日付では、MONTH関数やDAY関数が期待どおりに動かず、エラーや誤った年齢につながるかもしれません。
対象セルを選び、ホームタブの表示形式を日付に変更して、値が正しく変換されるか確認します。
変換されない場合は、データタブの区切り位置機能やDATEVALUE関数を使って日付データへ直します。
【操作のポイント】見た目が日付でも文字列の場合があるため、計算前にセルの配置やエラー表示を確認しましょう。
指定日を基準にする年齢計算
続いては、今日ではなく任意の日付を基準にして年齢を計算する方法を確認していきます。
| 基準日 | 氏名 | 生年月日 | 年齢 |
|---|---|---|---|
| 2026/03/31 | 伊藤 健 | 1998/04/01 | 計算結果 |
| 渡辺 彩 | 1998/03/31 | 計算結果 |
ここではA2セルに基準日、C2セルに生年月日、D2セルに年齢を表示する例で説明します。
基準日セルを参照する数式
それではまず、基準日をセルで指定する数式について解説していきます。
=YEAR($A$2)-YEAR(C2)-IF(DATE(YEAR($A$2),MONTH(C2),DAY(C2))>$A$2,1,0)
この式では、TODAY関数の代わりにA2セルを参照しています。
$A$2のドル記号は絶対参照を表し、数式を下方向へコピーしても基準日がA2のまま変わらない指定です。
生年月日は行ごとに変える必要があるためC2は相対参照にし、基準日だけを固定することがポイントです。
年度末、入社日時点、契約開始日、イベント開催日などの年齢を計算したい場合に役立ちます。
基準日を変更するだけで表全体の年齢が更新されるため、複数の期間を比較する資料にも使えます。
基準日は日付として入力し、文字列ではなく日付形式に整えてください。
数式バーへ入力する画面イメージ
続いては、指定日基準の式を最初のセルに入力する操作を確認していきます。
画面ではD2セルを選択してから、数式バーまたはセル内に式を入力します。
赤枠で示したA2は基準日を固定するセルであり、D2は計算結果を表示するセルです。
Enterキーで確定した後は、D2右下のフィルハンドルを下へコピーします。
A2にドル記号を付けないと、下の行へコピーした際に参照先がA3、A4とずれてしまいます。
年度末年齢を一覧化する場合には、基準日セルを表の上部に置くと、他の人が式を確認しやすくなります。
年度末年齢と年齢基準日の使い分け
続いては、どの基準日を選ぶべきかについて確認していきます。
学校年度、保険の年齢区分、採用要件、イベントの参加資格では、今日の年齢ではなく決められた基準日の年齢が必要になることがあります。
たとえば2026年3月31日時点の年齢を調べる場合、A2セルに2026/03/31と入力します。
4月1日生まれの人は、その年度末ではまだ誕生日を迎えていないため、式では1歳若く計算されます。
一方、3月31日生まれの人は基準日当日が誕生日なので、その年齢が反映されます。
年齢の基準日は業務ルールによって異なるため、TODAY関数を使う前に何日時点の年齢が必要かを明確にすることが大切です。
【操作のポイント】基準日を一つのセルに集約し、数式では絶対参照にすると、修正漏れを防げます。
空白セルとエラーを防ぐ数式
続いては、生年月日が未入力の行でもエラー表示を出さない方法を確認していきます。
| 氏名 | 生年月日 | 年齢 |
|---|---|---|
| 山本 誠 | 1995/08/20 | 30 |
| 中村 愛 | 空白表示 |
名簿を作成途中の場合は、生年月日が未入力の行が含まれることも珍しくありません。
IF関数で空白時の表示を制御する方法
それではまず、生年月日が空欄の場合に何も表示しない式を解説していきます。
=IF(B2=””,””,YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0))
最初のIF(B2=””,””,…)は、B2セルが空白かどうかを確認する部分です。
B2が空白なら空の文字列を返し、年齢欄も空白のままにします。
B2に生年月日が入力されている場合だけ、後半の年齢計算を実行します。
空欄の行に0歳や不自然な日付が表示されるのを避けたいときに有効な方法です。
氏名だけを先に入力し、生年月日は後から登録する運用でも、一覧表の見た目を整えられます。
式が長くなりますが、基本の年齢計算式をIF関数で外側から包むと考えると理解しやすいでしょう。
IFERROR関数を使う場合の考え方
続いては、入力ミスなどのエラーを非表示にするIFERROR関数を確認していきます。
=IFERROR(YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0),””)
IFERROR関数は、式の計算結果がエラーになった場合に指定した値を返します。
この例では、年齢計算でエラーが起きた場合に空白を表示します。
生年月日欄に日付として解釈できない文字が入っていると、MONTH関数やDAY関数でエラーになることがあります。
IFERROR関数を使えば表の見た目は崩れませんが、本来は入力ミスを隠すのではなく、元データを修正することが重要です。
入力内容の確認が必要な業務では、空白の代わりに「要確認」と表示する設定も考えられます。
その場合は、最後の””を”要確認”に置き換えます。
未来の日付と異常な生年月日の確認
続いては、未来の日付や不自然な日付が入力された場合の注意点を解説していきます。
生年月日が今日より後の日付になっていると、計算結果が負の数になる可能性があります。
入力規則を設定していない表では、年の入力間違いによって2090年のような未来日が混ざることもあります。
そのようなデータを見つけるには、条件付き書式やデータの入力規則を組み合わせる方法が便利です。
年齢欄で負の数を目立たせたい場合は、条件付き書式のセルの強調表示ルールを使えます。
生年月日欄には、今日以前の日付だけを受け付ける入力規則を設定しておくと、入力時点でミスに気付きやすくなります。
【操作のポイント】IFERROR関数は補助として使い、元の生年月日データが正しいかを定期的に確認しましょう。
うるう年と年齢計算の注意点
続いては、2月29日生まれを含む年齢計算で確認したい注意点を解説していきます。
| 氏名 | 生年月日 | 確認内容 |
|---|---|---|
| 加藤 優 | 2000/02/29 | 平年の判定 |
| 小林 翔 | 1999/12/31 | 年末の判定 |
通常の生年月日では基本式で対応できますが、うるう年生まれは事前に結果を確認しておくと安心です。
2月29日生まれで起こるDATE関数の扱い
それではまず、2月29日生まれのデータについて解説していきます。
DATE関数は、指定した年に存在しない日付を入力した場合、翌月の日付として調整する性質があります。
たとえば平年にDATE関数で2月29日を作ろうとすると、3月1日として扱われます。
そのため、2月29日生まれの人について、平年にどの時点で年齢を加算するかは業務上の扱いを確認する必要があります。
法律上や制度上の年齢の扱いと、社内システム上の年齢更新日が同じとは限りません。
名簿の表示用であれば、基本式の結果を確認したうえで運用ルールを決める方法が現実的です。
契約、保険、資格、給与などに関係する計算では、Excel式だけで最終判断せず、適用される規程を確認しましょう。
うるう年を考慮した別の計算方法
続いては、年齢計算をより簡潔にする考え方を確認していきます。
DATEDIF関数が使える環境では、=DATEDIF(B2,TODAY(),”Y”)という式で満年齢を求めることができます。
ただし今回のようにDATEDIF関数を避けたい場合は、YEAR、DATE、IFを使う式が代替になります。
DATE関数の調整動作まで厳密に制御したい場合は、MONTH関数とDAY関数による条件分岐を増やすこともできます。
しかし、式が複雑になりすぎると、後から修正する人が意味を読み取りにくくなります。
一般的な名簿では基本式を使い、2月29日生まれだけを個別確認する運用のほうが管理しやすい場合があります。
作成した表は、通常の誕生日、誕生日当日、誕生日直前、2月29日生まれのテストデータで結果を確認しましょう。
西暦入力と和暦表示の注意点
続いては、生年月日の表示形式に関する注意点を解説していきます。
Excelでは西暦の日付を入力しても、セルの表示形式を変更すれば和暦で表示できます。
年齢計算に使うYEAR関数、MONTH関数、DAY関数は、見た目の表示形式ではなく内部の日付値を参照します。
そのため、セルが令和や平成で表示されていても、正しい日付データなら基本式は利用できます。
ただし、和暦を文字列として入力した場合は、日付として認識されないことがあります。
入力後に数式バーを見て、Excelが日付値として保存しているかを確認すると安心です。
【操作のポイント】うるう年生まれや和暦入力を含む表では、実際の運用基準日でテスト計算を行いましょう。
まとめ ExcelでDATEDIF関数なしに年齢を計算する方法
Excelで年齢を計算する際は、今年の年から生年を引くだけでは、誕生日を迎える前の人を正しく判定できません。
DATEDIF関数がない場合でも、YEAR関数、DATE関数、IF関数、TODAY関数を組み合わせることで、満年齢を計算できます。
=YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0)
この式は、今年の誕生日がまだ来ているかどうかを判定し、必要な場合だけ年齢を1歳引く仕組みです。
特定の日付時点の年齢が必要なら、TODAY関数の代わりに基準日セルを参照し、そのセルは絶対参照に設定します。
生年月日が空白の行を含む表ではIF関数を外側に加え、不要な表示やエラーを抑えると見やすくなります。
日付が文字列になっていないか、未来の日付が混ざっていないか、うるう年生まれの扱いが業務ルールに合っているかも確認しましょう。
正しい基準日と生年月日データを使い、年齢が自動更新される一覧表を作成していきましょう。