1. はじめに
ExcelやGoogleスプレッドシートで「年齢」や「勤務年数」「在籍期間」などを自動計算したいと思ったことはありませんか?
実は、日付の差を求める関数は複数あり、目的や精度に応じて適切に使い分ける必要があります。
特に DATEDIF は便利ですが、非公式関数のためエラーや予想外の挙動を引き起こすこともあります。
この記事では、年齢・勤務年数・日数・営業日数を正しく求めるために使える主要関数を、初心者にもわかりやすく解説します。
2. 計算に使える主な関数まとめ【比較表付き】
| 関数名 | 主な用途 | 特徴 |
|---|---|---|
| DATEDIF | 年・月・日数の差を求める | 非公式な隠し関数。 シンプルに年齢が出せる |
| YEARFRAC | 年数を小数で出す | 精密な計算に向いており、引数で精度調整可能 |
| DAYS | 日数差を求める | シンプルで分かりやすい |
| NETWORKDAYS | 営業日数(平日)を出す | 土日除外。祝日も指定可能 |
| NETWORKDAYS.INTL | 柔軟な営業日数計算 | 任意の曜日を休みに設定可能 |
| TODAY | 現在日付の取得 | 年齢・在籍年数の現在値計算に使用 |
3. 年齢を計算する方法
3-1. DATEDIFで満年齢を出す
=DATEDIF(生年月日セル, TODAY(), "Y")

- TODAY関数と組み合わせると、誕生日に応じて自動更新されます。
- DATEDIFは関数候補に表示されない隠し関数です。
注意:開始日が終了日より後だと #NUM! エラーになります。
3-2. YEARFRACで小数年齢を出す
=YEARFRAC(生年月日セル, TODAY())

- 小数点付きの年齢(例:30.58歳)を表示できます。
INT(YEARFRAC(...))で整数年齢にすることも可能。
精度補足:YEARFRACには第3引数があり、計算方法を調整できます。
| 第3引数 | 内容 |
|---|---|
| 0 | 30日×12ヶ月(米式) |
| 1 | 実日数/実年数(最も精密) |
| 2 | 実日数/360日 |
| 3 | 実日数/365日 |
| 4 | 30日×12ヶ月(欧州式) |
例:
=YEARFRAC(A1, TODAY(), 1)
4. 勤務年数・在籍期間を求める方法
4-1. YEARFRACで年数を小数で出す
=YEARFRAC(入社日, TODAY())

- 勤務年数のように「○年目」の計算にぴったりです。
4-2. DATEDIFで「何年何ヶ月」表示
=DATEDIF(入社日, TODAY(), "Y") & "年" & DATEDIF(入社日, TODAY(), "YM") & "ヶ月"

"Y"は満年数、"YM"は余りの月数を示します。- よくある形式「5年3ヶ月」を簡単に作れます。
5. 日数や営業日数を出す方法
5-1. DAYS関数で日数を求める
=DAYS(終了日, 開始日)

- 終了日と開始日の間の日数をそのまま表示。
5-2. NETWORKDAYSで営業日数を出す
=NETWORKDAYS(開始日, 終了日, 祝日範囲)

- 土日を除いた営業日数をカウント。
- 祝日は範囲で指定可能。
5-3. NETWORKDAYS.INTLで休日を柔軟に設定
=NETWORKDAYS.INTL(開始日, 終了日, "0101011")
- 7桁の文字列で、週の各曜日に休み(1)か出勤(0)を割り当てることができます。
- 例として「水・日を休みにする」などが可能です。
6. 【重要】DATEDIF関数の注意点まとめ
- 非公式関数で関数一覧や補完が出ない。
- 開始日 > 終了日だと
#NUM!エラーになります。 "MD"や"YM"は直感と異なる結果になることがある。
例:
=DATEDIF("2024/1/31", "2024/2/1", "MD") → 結果: 1(日数差)
この場合は「日だけを比較」しているため、月や年を無視してしまう仕様です。
誤解しないよう注意しましょう。
7. Googleスプレッドシートでの使用時の注意点
- 基本的にExcelと同じ関数が使用可能(DATEDIF, YEARFRAC, DAYS, NETWORKDAYS など)
- ただしDATEDIFはスプレッドシートでも非公式で、補完や関数ヘルプが表示されないです。
- セルに”日付形式”で正しく入力されていないと正確に動作しない
POINT: スプレッドシートでも 日付形式と関数構文に注意すれば、ほぼ同じ手順で活用できます。
8. まとめ:関数は目的に応じて使い分けよう
| 目的 | おすすめ関数 |
|---|---|
| 年齢(整数) | DATEDIF(“Y”) |
| 年齢(小数) | YEARFRAC(+ 第3引数) |
| 勤務年数 | YEARFRAC または DATEDIF |
| 「○年○ヶ月」表示 | DATEDIF(“Y”) + (“YM”) |
| 日数の差 | DAYS |
| 営業日数 | NETWORKDAYS / INTL |
目的や精度に合わせて関数を選ぶことで、日付の計算をより正確に、かつスマートに行えます。
Excelでもスプレッドシートでも対応できるこの知識を、ぜひ業務や日常の計算に役立ててください!


