【Excel】エクセルで「年齢」を自動計算!DATEDIF関数と今日の日付の組み合わせ

【Excel】エクセルで「年齢」を自動計算!DATEDIF関数と今日の日付の組み合わせ
🛡️ 超解決

生年月日から年齢の一覧を作るときは、DATEDIF関数の単位を「Y」にすると、指定した2日間の完了した年数を求められます。今日時点の一覧なら終了日にTODAY()、年度末の報告なら固定した基準日を使います。目的に合わせて終了日を選ぶことが、更新漏れや集計時点のずれを防ぐ第一歩です。

ここではExcelでの日付計算に絞り、基本式、基準日の固定、空欄や未来日の確認を説明します。制度上の年齢判定や退職日の決定を、この式だけで自動化できるという意味ではありません。

ADVERTISEMENT

1. 生年月日と計算の基準日を先に決める

DATEDIFの構文は =DATEDIF(開始日,終了日,"Y") です。年齢の例では開始日が生年月日、終了日が何日時点で数えるかを示す日付です。「Y」は2つの日付の間に完了した年数を返します。文字の単位なので引用符を付けます。

生年月日をA2、基準日をE1に入力しておくと、何を計算した表かを確認しやすくなります。どちらもExcelが日付として扱える値であることが前提です。見た目が2026/10/15でも文字列の場合があるため、必要なら別セルの =ISNUMBER(A2) で数値として保存されているかを調べます。ただし数値なら何でも正しい生年月日、という判定にはなりません。

日数を365で割って整数にする方法は、うるう年を含む期間や誕生日の境界で年数とずれることがあります。「およそ何年」ではなく、日付間の完了年数が必要なら、それを指定できる関数を使います。元資料の生年月日も照合してから式を広げてください。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. まず固定した日付で結果を確かめる

  1. A1に「生年月日」、B1に「基準日時点の年数」と入力します。
  2. A2に2000/10/15、E1に2026/10/14を日付として入力します。E1の近くに「基準日」と見出しを付けます。
  3. B2へ =DATEDIF(A2,$E$1,"Y") を入力します。
  4. B2が25になることを確認します。
  5. E1を2026/10/15へ変え、結果が26になることを確かめます。

E1を2026/10/16にしても結果は26です。終了日を変えながら、誕生日の前後を試すと式の意味が分かります。実際の名簿を使わず、この確認用の1行で仕組みを試してから本番の列へ適用すると安心です。

式を下へコピーした場合、生年月日はA3、A4へ移りますが、$E$1 は同じ基準日を参照します。結果が1900年の日付などに見える場合は、B列の表示形式を[標準]または小数桁0の[数値]にします。計算結果の26を日付として表示しているだけなら、式を作り直す必要はありません。

生年月日2000年10月15日に対し、2026年10月14日は25、10月15日と16日は26。DATEDIFの終了日に指定した基準日で年数が決まる
2000/10/15生まれの計算例。終了日を固定すると、後日に開いても同じ基準日で計算できます。

3. 今日の年齢と報告用の年齢を使い分ける

日々確認する名簿なら、基本式は =DATEDIF(A2,TODAY(),"Y") です。TODAYは現在の日付を返します。ただしExcelは時計のように画面を毎秒更新するわけではなく、再計算のタイミングで結果が更新されます。開きっぱなしの表で日付をまたいだ場合も、表示の日付を確認します。

年度末や申込締切日の報告は、E1に2027/3/31などの固定日を入れる方が目的に合います。翌月開いても同じ日時点で計算できるからです。全員を同じ基準日で計算するなら、終了日を一つのセルにまとめると変更箇所も明確になります。

今日の一覧にしたい場合はE1を =TODAY() にする方法もあります。B列の式は変えずに、基準日だけで運用を切り替えられます。今日の日付が更新されないときは、[数式]→[計算方法の設定]を確認します。共同利用のブックで計算方法を変える際は、ほかの計算への影響も把握してから行ってください。

4. 空欄・文字列・未来の生年月日を分けて確認する

空欄をそのままDATEDIFへ渡すと、意図しない古い日付として計算されるなど、年齢らしい数字が出ても正しいとは限りません。まだ入力していない人を0歳や大きな年齢に見せないよう、未入力は計算の前に除きます。

E1が正しい基準日であることを確認したうえで、B2を次の式にすると、A2の空欄、数値以外、基準日より未来という順に確認できます。

=IF(A2="","",IF(NOT(ISNUMBER(A2)),"日付を確認",IF(A2>$E$1,"基準日より未来",DATEDIF(A2,$E$1,"Y"))))

この式でも、数字の打ち間違いまでは見抜けません。生年月日のつもりで大きな数や違う年を入力した場合は、日付表示にして元資料と照合します。E1が空欄や文字列なら基準日自体を直してください。エラーをまとめて0にする方法では、未入力、入力誤り、本当に年数0の人を区別できなくなります。

開始日が終了日より後ならDATEDIFは#NUM!になります。#VALUE!が出た場合は日付として扱えない文字などを調べます。表示形式を日付に変えるだけでは、文字列が必ず日付値に変換されるわけではありません。

5. 「歳」を付けても数値を集計できる形にする

平均や年齢別の人数を計算するなら、結果は数値のまま残すと扱いやすくなります。B列の数値に「歳」を見せたい場合は、[セルの書式設定]のユーザー定義で 0"歳" と指定できます。26歳と表示されても、セルの値は数値26です。

=DATEDIF(A2,$E$1,"Y")&"歳" でも表示できますが、この結果は文字列です。報告文として使う列と、計算に使う列を分ける場合に向いています。年数0と空欄を同じ扱いにしないことも確認してください。

目的 使う結果
年齢帯で集計する 数値の年数
数値のまま「歳」を見せる ユーザー定義の表示形式
文章へ挿入する 別セルで文字列へ結合

確認用の文字が混じる列では、集計対象からその行が外れていないか注意します。「日付を確認」が残った人数を先に調べ、未確認者を0歳として含めず、人数の分母を説明できる状態にしてから集計します。

6. うるう日や月日までの表示は別に検討する

2月29日生まれの人を含む名簿では、平年の2月末から3月初めの扱いを確認します。DATEDIFが返す日付間の年数と、申込条件や社内制度で求める判定を一律に同じだと保証することはできません。必要な基準を管理担当者に確認し、対象になる日付を使って結果を検算します。

また、DATEDIFには月数などを求める単位もありますが、年齢欄を詳しく見せるために「何歳何か月何日」へ広げる必要はありません。Microsoftは「MD」の引数に既知の制限があるとして使用を推奨していません。本記事では年数の「Y」に絞ります。

入社日からの在籍年数へ応用する場合も、単に日付間の年数を出す式です。休職期間の除外や勤務形態ごとの算定を自動で考慮するものではありません。同様に、生年月日から一定年後の日付を作っただけで退職日を決めることもできません。まず必要な日付計算の範囲を明確にし、それを超える判定は別の条件として扱います。

7. 配布前の検算と元の一覧への戻し方

確認用の一覧には、誕生日前日、当日、翌日の例に加え、未入力、文字列、基準日より未来の日付も用意します。普通の入力で正しいだけでなく、不足や誤りが確認メッセージになるか見ます。式をコピーした最終行でも、基準日の参照が$E$1のままか確かめます。

報告用に結果を値へ固定する場合は、固定した基準日と生年月日の元データ、数式のある作業版を残します。値だけでは、いつの年齢だったかを後から判断できません。基準日を今日へ戻す予定がある表では、値への上書きより、数式版と配布版を分ける方が戻しやすくなります。

誤った式を貼り付けた直後ならCtrl+Zで戻します。保存・終了後は作業前のコピーから復元してください。年数が合わないときは、式の変更を繰り返す前に、生年月日、基準日、入力型の3点を確認します。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】