エクセルで年齢や勤続年数を自動計算したい、そんな場面は人事管理や名簿作成などでよく登場します。
手動で計算して入力していると更新漏れが起きやすく、データの信頼性も下がってしまいます。
そこで活躍するのが、DATEDIF関数とTODAY関数を組み合わせた日付計算です。
本記事では、エクセルでDATEDIF関数を使った日付・年齢・勤続年数の計算方法を、具体的な数式とともにわかりやすく解説します。
エラーが出て使えない場合の代用法まで網羅していますので、ぜひ最後まで読んでみてください。
年齢・勤続年数を実際に計算する数式の作り方
続いては、DATEDIF関数を使って年齢・勤続年数を実際に計算する数式の作り方を確認していきます。
単に満年数を出すだけでなく、「〇歳〇ヶ月」「〇年〇ヶ月〇日」といった詳細な表示形式も数式で実現できます。
用途に合わせて数式を使い分けることで、より実務に即した計算結果が得られるでしょう。
満年齢(年齢)を計算する数式
年齢計算の基本は、生年月日から今日までの満年数を求めることです。
満年齢を計算する数式(A2に生年月日が入力されている場合)
=DATEDIF(A2, TODAY(), “Y”)
例:A2が「1990/5/15」で今日が「2026/2/21」の場合 → 35(歳)


さらに「〇歳〇ヶ月」という形式で表示したい場合は、複数のDATEDIF関数を組み合わせます。
「〇歳〇ヶ月」形式で表示する数式
=DATEDIF(A2,TODAY(),”Y”)&”歳”&DATEDIF(A2,TODAY(),”YM”)&”ヶ月”
例:「35歳9ヶ月」のように表示されます。

「&」演算子で文字列を結合することで、数値と単位をまとめて自然な日本語表示にできます。
勤続年数を「〇年〇ヶ月〇日」で計算する数式
人事管理でよく使われる勤続年数の計算も、DATEDIF関数で簡単に実現できます。
勤続年数を「〇年〇ヶ月〇日」形式で表示する数式(A2に入社日が入力されている場合)
=DATEDIF(A2,TODAY(),”Y”)&”年”&DATEDIF(A2,TODAY(),”YM”)&”ヶ月”&DATEDIF(A2,TODAY(),”MD”)&”日”
例:入社日が「2018/4/1」の場合 → 「6年11ヶ月9日」のように表示されます。
“YM”で年を除いた月数、”MD”で年月を除いた日数をそれぞれ取得することで、細かい勤続期間まで正確に表現できます。
退職日や期末日を終了日に指定すれば、特定時点の勤続年数の計算にも応用できるでしょう。
2つの日付間の月数・日数を計算する方法
「契約開始から何ヶ月経過しているか」「納期まで何日あるか」といった計算にも、DATEDIF関数は活用できます。
2つの日付間の総月数を求める数式
=DATEDIF(A2, B2, “M”)
A2が開始日、B2が終了日の場合、両日付間の総月数を返します。
例:A2が「2023/1/1」、B2が「2025/3/10」の場合 → 26(ヶ月)
単純な日数差を求めるだけなら =B2-A2 という引き算でも対応できますが、月単位・年単位の差が必要な場面ではDATEDIF関数のほうが直感的に使いやすいでしょう。
DATEDIF関数のエラー対処法と使えない時の代用法
続いては、DATEDIF関数でエラーが発生した場合の対処法と、使えない時に役立つ代用法を確認していきます。
DATEDIF関数は便利な反面、入力ミスや環境によってエラーが発生しやすいという側面もあります。
エラーの種類と原因を正しく把握しておくことで、素早く対処できるようになるでしょう。
よくあるエラーの種類と原因・対処法
DATEDIF関数でよく発生するエラーの種類と対処法は以下のとおりです。
| エラーの種類 | 主な原因 | 対処法 |
|---|---|---|
| #NUM! | 開始日が終了日より後になっている | 開始日と終了日の順序を確認・修正する |
| #VALUE! | 日付セルが文字列として入力されている | DATEVALUE関数で日付型に変換する |
| #NAME? | 関数名のスペルが間違っている | “DATEDIF”のスペルを再確認する |
| 意図しない数値 | 単位の指定が間違っている | 単位文字列(”Y”/”M”など)を再確認する |
特に多いのが#NUM!エラーで、開始日と終了日が逆に入力されているケースです。
IFERROR関数と組み合わせることで、エラー時に空白や任意のメッセージを表示する処理も可能でしょう。
IFERROR関数でエラーを非表示にする例
=IFERROR(DATEDIF(A2, TODAY(), “Y”), “日付を確認してください”)
エラーが発生した場合に「日付を確認してください」と表示されます。
DATEDIF関数を使わずに年齢・年数を計算する代用法
DATEDIF関数が使えない環境や、より確実な計算が必要な場合には、YEARFRAC関数やINT関数を使った代用法が有効です。
INT関数とYEARFRAC関数を使った満年齢の計算
=INT(YEARFRAC(A2, TODAY(), 1))
YEARFRAC関数で2つの日付間の年数(小数)を求め、INT関数で小数点以下を切り捨てて満年数を取得します。
また、より古典的な方法として、YEAR・MONTH・DAY関数を組み合わせた計算もあります。
YEAR・MONTH・DAY関数を使った満年齢の計算
=YEAR(TODAY())-YEAR(A2)-IF(OR(MONTH(TODAY())<MONTH(A2), AND(MONTH(TODAY())=MONTH(A2), DAY(TODAY())<DAY(A2))), 1, 0)
誕生日をまだ迎えていない場合に1を引くことで、正確な満年齢を算出できます。
数式は長くなりますが、エクセルの標準関数のみで構成されているため、どの環境でも安定して動作するという利点があります。
日付データを正しく認識させるための前処理
DATEDIF関数がうまく動作しない場合、そもそもセルの日付データが正しい日付型として認識されていないことが原因である場合が少なくありません。
文字列として入力された日付はDATE関数やDATEVALUE関数を使って日付型に変換し、セルの表示形式が「日付」になっているかも確認しましょう。
文字列「2000/4/1」を日付型に変換する方法
=DATEVALUE(“2000/4/1”)
または
=DATE(2000, 4, 1)
どちらも日付型のシリアル値を返します。
インポートしたデータや外部システムから取得したデータは文字列として入力されていることが多いため、DATEDIF関数を使う前にデータ型の確認を習慣にするとトラブルを防げるでしょう。
DATEDIF関数はエクセルで日付・年齢・勤続年数を計算する最も便利な関数
それではまず、DATEDIF関数がどのような関数なのか、そしてなぜ日付・年齢・勤続年数の計算に最も適しているのかについて解説していきます。
結論として、DATEDIF関数は2つの日付の差を「年・月・日」単位で自在に取得できる関数であり、年齢計算や勤続年数の算出に非常に適しています。
TODAY関数と組み合わせることで、ファイルを開くたびに自動更新される動的な計算が実現できます。
DATEDIF関数はエクセルの公式ヘルプには掲載されていない「隠れ関数」ですが、実務での利用実績が高く、年齢・勤続年数計算のデファクトスタンダードともいえる存在です。
TODAY関数と組み合わせることで、常に最新の日付を基準にした自動計算が可能になります。
DATEDIF関数の基本構文と単位の種類
DATEDIF関数の基本的な構文は以下のとおりです。
=DATEDIF(開始日, 終了日, 単位)
開始日:計算の起点となる日付(例:生年月日、入社日)
終了日:計算の終点となる日付(例:TODAY()、特定の日付)
単位:取得したい差の単位を文字列で指定する
単位に指定できる文字列は以下の6種類です。
| 単位 | 取得できる値 | 使用例 |
|---|---|---|
| “Y” | 満年数 | 年齢・勤続年数(〇年) |
| “M” | 満月数 | 総月数での差分 |
| “D” | 満日数 | 総日数での差分 |
| “YM” | 年を無視した月数 | 〇年△ヶ月の「△ヶ月」部分 |
| “YD” | 年を無視した日数 | 〇年△日の「△日」部分 |
| “MD” | 月と年を無視した日数 | 〇ヶ月△日の「△日」部分 |
この6種類の単位を使い分けることで、「〇年〇ヶ月〇日」という形式の詳細な期間表示も実現できます。
TODAY関数と組み合わせて自動更新する仕組み
DATEDIF関数の終了日にTODAY関数を指定すると、エクセルファイルを開くたびに自動的に今日の日付で再計算されます。
これにより、毎回手動で日付を更新する手間がなくなり、常に最新の年齢や勤続年数が表示される仕組みが完成します。
TODAY関数との組み合わせ例
=DATEDIF(A2, TODAY(), “Y”)
A2に生年月日が入力されている場合、今日時点での満年齢(年齢)を返します。
TODAY関数は引数不要で常に今日の日付を返すため、数式がシンプルになる点も魅力です。
DATEDIF関数が「隠れ関数」である理由と注意点
DATEDIF関数はエクセルの関数入力候補(オートコンプリート)に表示されず、公式のヘルプドキュメントにも掲載されていない非公式関数です。
もともとLotus 1-2-3との互換性のために搭載された経緯があり、現在のエクセルでも引き続き使用できるものの、将来的に廃止される可能性がゼロではありません。
また、一部のバージョンやケースでは計算結果に誤差が生じることも報告されているため、重要な計算には後述する代用法との併用を検討するとよいでしょう。
まとめ
本記事では、エクセルでDATEDIF関数を使った日付・年齢・勤続年数の計算方法について、TODAY関数との組み合わせ方から単位の使い分け、エラー対処・代用法まで幅広く解説しました。
改めてポイントを整理すると、DATEDIF関数はTODAY関数と組み合わせることで、常に最新の年齢・勤続年数を自動計算できる非常に実用的な関数です。
単位を”Y”・”YM”・”MD”と組み合わせることで「〇年〇ヶ月〇日」という詳細な表示も実現できます。
エラーが発生した場合はIFERROR関数で対処し、DATEDIF関数が使えない環境ではYEARFRAC関数やYEAR関数を使った代用法を活用しましょう。
DATEDIF関数はエクセルで年齢・勤続年数を計算する際の強力な武器です。
TODAY関数との組み合わせで自動更新を実現し、単位の使い分けで詳細な期間表示まで対応できます。エラー対処と代用法もセットで覚えておくと、より安心して活用できるでしょう。
ぜひ本記事の数式を参考に、日付計算の自動化に取り組んでみてください。