Excelで生年月日から年齢を自動計算しようとして
=DATEDIF(A1, TODAY(), "Y")
のように入力したのに、「DATEDIF関数が出てこない」「関数一覧にない」「エラーになる」といったトラブルに遭遇していませんか?
実はこの DATEDIF関数、Excelには存在しているのに表示されない“隠れ関数” なんです。
本記事では、DATEDIF関数が使えないときの理由と、年齢計算の代替方法まで詳しく解説します。
目次
DATEDIF関数とは?
DATEDIF(デートディフ)関数は、2つの日付の差を「年・月・日」単位で計算できる関数です。
基本構文:
=DATEDIF(開始日, 終了日, 単位)
単位一覧:
| 単位 | 意味 |
|---|---|
| "Y" | 年の差 |
| "M" | 月の差 |
| "D" | 日の差 |
| "YM" | 月の差のみ(年は無視) |
| "MD" | 日の差のみ(月・年は無視) |
| "YD" | 日の差のみ(年は無視) |
たとえば、A1に生年月日があるなら、次のように使います:
=DATEDIF(A1, TODAY(), "Y")
👉 A1セルの生年月日から今日までの「年齢」を求める式です。
【Excel】「yyyymmdd」形式から年齢を計算する方法【関数だけで簡単変換】
DATEDIF関数がExcelに出てこない理由
✅オートコンプリートに出てこない
DATEDIF関数は 古いバージョンのLotus 1-2-3との互換性のために残されている関数で、
現在のExcelでは関数一覧や候補(オートコンプリート)には表示されません。
=DA と入力しても DATEDIF が候補に出ない!
✅数式バーでも説明が表示されない
他の関数と違って、引数の説明も表示されないので、構文を正しく覚えておく必要があります。
DATEDIF関数が使えない・エラーになる原因と対処法
✅開始日と終了日の順番が逆
=DATEDIF(TODAY(), A1, "Y")
のように、今日の日付が先に来ていると #NUM! エラーになります。
✅ 正しくは:
=DATEDIF(A1, TODAY(), "Y")
👉 開始日(生年月日)→ 終了日(今日)の順!
✅セルに日付ではなく文字列が入力されている
A1に 1990年4月1日 のように文字列として入力されているとDATEDIFは正しく動作しません。
✅ 解決策:
- セルを「日付」形式に設定する
- または関数で日付に変換
=DATEDIF(DATEVALUE(A1), TODAY(), "Y")
DATEDIF関数が不安なときの代替方法
DATEDIF関数に不安がある場合、数式で同様の年齢計算ができます。
✅年齢を整数で求める汎用数式
=INT((TODAY() - A1) / 365.25)
👉 年齢をおおよそで出したいときに使えます。うるう年にもある程度対応。
✅YEAR関数を使って正確な年齢計算
=YEAR(TODAY()) - YEAR(A1) - (TEXT(TODAY(),"MMDD") < TEXT(A1,"MMDD"))
👉 誕生日がまだ来ていない場合は1歳引く、正確な年齢が出る式です。
【Excel】「何歳何ヶ月」まで表示する年齢計算の方法【DATEDIF関数で簡単!】
DATEDIFが出ないのはバグではない!
| 現象 | 実際の仕様 |
|---|---|
| 関数一覧にDATEDIFがない | 仕様です(非表示の互換関数) |
| 数式バーに引数が出ない | 仕様です(説明が表示されません) |
#NUM! エラーになる | 日付の順序が逆の可能性が高い |
#VALUE! エラーになる | セルに文字列や無効な日付がある |
まとめ
- DATEDIF関数は存在するが隠れ関数(候補に出ない)
- 使い方は
=DATEDIF(開始日, 終了日, "Y") - 日付の順序・形式に注意!
- 不安なときは
YEAR関数やINT式で代用可能
DATEDIFを知っていれば、年齢や勤続年数などの日付差をスマートに計算できます!