業務効率化

【保存版】Excel&スプレッドシートで年齢・勤務年数を正確に計算する方法|DATEDIF・YEARFRACほか関数まとめ

スポンサーリンク

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引数内容
030日×12ヶ月(米式)
1実日数/実年数(最も精密)
2実日数/360日
3実日数/365日
430日×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でもスプレッドシートでも対応できるこの知識を、ぜひ業務や日常の計算に役立ててください!

タイトルとURLをコピーしました