概要
勤続年数(入社からの年・月・日)を最短で計算するなら DATEDIF 関数が王道です。指定した開始日から終了日までの差を「年だけ」「月だけ」「日だけ」などの単位で返せます。TODAY() を終了日にすれば“今日現在”の勤続年数が一発で出せますし、「X年Yか月Z日」といった人事帳票向け表記にも簡単に整形できます。
基本の使い方
書式
=DATEDIF(開始日, 終了日, 単位)
- 単位には “Y”(年), “M”(月), “D”(日), “YM”(年を除いた残りの月), “MD”(月を除いた残りの日), “YD”(年を除いた残りの日)を指定します。
例(今日現在の勤続“年”)
=DATEDIF(A2, TODAY(), "Y")
A2が入社日。今日までの“満年数”だけを返します(端数の月・日は切り捨て)。
具体例
今日現在の「X年Yか月Z日」
=DATEDIF(A2, TODAY(), "Y") & "年" &
DATEDIF(A2, TODAY(), "YM") & "か月" &
DATEDIF(A2, TODAY(), "MD") & "日"
人に見せる帳票や証明書にそのまま使える整形です。
退職日・評価基準日など“任意の日付まで”の勤続年数
=DATEDIF(A2, B2, "Y")
A2:入社日、B2:評価基準日。B2が未来でも過去でもOK(開始<=終了が必須)。
勤続“満◯年”達成日を求める
=EDATE(A2, 12*C2)
A2から C2 年後の到達日(12×年数の月加算)。例:5年なら 60 か月後。
応用テンプレート
勤続年数を「年・月」だけで表示(端数日は無視)
=DATEDIF(A2, TODAY(), "Y") & "年" & DATEDIF(A2, TODAY(), "YM") & "か月"
勤続“満3年”に達しているか判定(TRUE/FALSE)
=DATEDIF(A2, TODAY(), "Y") >= 3
勤続月数の総計(ボーナス計算などに)
=DATEDIF(A2, TODAY(), "M")
勤続日数の総計(休暇付与ロジックの基礎)
=DATEDIF(A2, TODAY(), "D")
勤続年数を端数込み“年小数”でざっくり出す(参考)
=YEARFRAC(A2, TODAY())
人事の正式表記は DATEDIF の「年・月・日」の組み合わせを推奨。YEARFRAC は概算に便利。
よくあるつまずきと対策
開始日が終了日より後だとエラー
DATEDIFは “開始 <= 終了” が前提です。入社日(開始)と基準日(終了)の前後関係を必ず確認してください。
“満”年数・月数で返る仕様
“Y” や “M” は端数切り捨ての“満”年数・月数です。端数まで表示したいときは “YM” や “MD” を組み合わせて整形します。
表示が数字になってしまう
DATEDIFの出力は数値です。そのまま使うなら OK、文字列整形したいときは & で単位を付けるか TEXT を使ってください。
うるう年・月末も自動調整
DATEDIFは暦通りに計算します。2/29 をまたぐケースや 31日始まりなども正しく扱われます(手計算とのズレを避けられます)。
文字列日付は避ける
“YYYY/MM/DD” を“文字列”で持つと環境依存で誤解釈あり。入社日・基準日は“日付型”で入力するか、DATE(年,月,日)で生成しましょう。
例題
問題1: A2の入社日から今日までの“満年数”をB2に表示してください。
=DATEDIF(A2, TODAY(), "Y")
問題2: A2の入社日から今日までの「X年Yか月Z日」をC2に表示してください。
=DATEDIF(A2, TODAY(), "Y") & "年" & DATEDIF(A2, TODAY(), "YM") & "か月" & DATEDIF(A2, TODAY(), "MD") & "日"
問題3: A2の入社日から評価基準日D2までの“満月数”をE2に表示してください。
=DATEDIF(A2, D2, "M")
問題4: A2の入社日が“満3年”に達しているかをTRUE/FALSEでF2に表示してください。
=DATEDIF(A2, TODAY(), "Y") >= 3
問題5: A2の入社日の“満5年達成日”をG2に表示してください。
=EDATE(A2, 12*5)
まとめ
勤続年数は DATEDIF で“年・月・日”を切り分けるのが最短。基準日は TODAY() で“今日現在”、任意の評価日も指定可能。表示は「Y+YM+MD」の組み合わせで人事帳票にそのまま使えます。達成日の算出は EDATE、概算の年小数は YEARFRAC——この組み合わせを押さえると、勤続管理や人事レポートがシンプルに安定運用できます。
