

退職日がたった1日ずれるだけで、退職金の手取りが約20万円変わることがあります。
Excelで勤続年数を計算するとき、最もよく使われるのがDATEDIF関数です。この関数は「DATE DIFFERENCE(日付の差)」の略で、2つの日付の間の期間を年・月・日のいずれかの単位で返します。数式の基本構造は次のとおりです。
```
=DATEDIF(開始日, 終了日, 単位)
```
たとえば、A2セルに入社日「2015/4/1」が入力されている場合、B2セルに今日現在の勤続年数(満年数)を表示するには次のように入力します。
```
=DATEDIF(A2, TODAY(), "Y")
```
TODAY()関数を終了日に指定することで、Excelを開くたびに勤続年数が自動更新される仕組みになります。手動で更新し忘れる心配がありません。
さらに実務では「○年○ヶ月」という形式で表示したいケースが多いでしょう。その場合は2つのDATEDIF関数を&(アンパサンド)でつなぐ方法が一般的です。
```
=DATEDIF(A2,TODAY(),"Y")&"年"&DATEDIF(A2,TODAY(),"YM")&"ヶ月"
```
ここで「YM」という単位は「1年未満の端数月数」を返します。「M」だと入社日から今日までの総月数になってしまうため、年を除いた月数を求めるときは必ずYMを使う必要があります。この点は見落としやすいポイントです。
社員が100名いる管理表でも、この数式を1行入力してオートフィルでコピーするだけで全員分の勤続年数が即座に揃います。つまり自動化が原則です。
単位の引数は以下の6種類があります。用途に応じて使い分けましょう。
| 単位 | 意味 | 例(2015/4/1 → 2026/3/29) |
|------|------|--------------------------|
| "Y" | 満年数 | 10 |
| "M" | 総月数 | 131 |
| "D" | 総日数 | 4015 |
| "YM" | 1年未満の月数 | 11 |
| "YD" | 1年未満の日数 | 362 |
| "MD" | 1ヶ月未満の日数 | ⚠️バグあり・非推奨 |
「MD」については後述しますが、Microsoftも不具合を認めているため業務利用は避けましょう。
多くの方がDATEDIF関数を使いながら、この関数がMicrosoftの公式サポート対象外であることを知りません。これは大きな見落としです。
ExcelでDATEDIFを入力しようとしても、関数の挿入ダイアログや予測入力の候補リストに表示されない、という経験をした人もいるでしょう。その理由は明確で、DATEDIFはExcelとの互換性のために残された「Lotus 1-2-3」時代の遺産関数だからです。Microsoft自身のヘルプページには「DATEDIF関数は、一部のシナリオで誤った結果を返す可能性がある」と明記されています。
特に問題なのが単位「MD」(1ヶ月未満の日数)で、うるう年を含む計算などで誤った数値を返すことがあります。単純に年数・月数を求める「Y」「YM」であれば実務上ほぼ問題ありませんが、給与計算など高精度が求められる場面では注意が条件です。
また、Excelのバージョンによって挙動が異なる場合もあり、特にMacとWindowsで日付の起算が1900年か1904年かで異なります。社員管理ファイルをMac/Windows混在環境で共有しているなら、4年以上のズレが生じるリスクがあります。これは意外ですね。
リスクを回避するなら、後述するYEARFRAC関数を代替として検討する価値があります。
MicrosoftによるDATEDIF関数の公式解説(バグの注記あり)
DATEDIFに代わる公式関数として注目されているのがYEARFRAC関数です。この関数は期間を年単位の小数値で返します。たとえば2年6ヶ月なら「2.5」という形で表示されます。
```
=YEARFRAC(開始日, 終了日, 基準)
```
勤続年数を求める実用例として、A2に入社日がある場合は次のようになります。
```
=YEARFRAC(A2, TODAY(), 1)
```
第3引数「基準」は1年の日数の数え方を指定するもので、以下の5種類があります。
| 基準 | 内容 |
|------|------|
| 0(省略可) | NASD方式(30日/360日)|
| 1 | 実際の日数/実際の年日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日固定 |
| 4 | 欧州方式(30日/360日)|
勤続年数の計算には「基準1」(実際の日数÷実際の年日数)を推奨します。うるう年の影響も自動で処理されるため、日付精度が最も高いからです。
YEARFRAC関数とDATEDIF関数の使い分けは、目的に応じて決まります。結論はシンプルです。
- 人事管理・勤続年数の「○年」表示 → DATEDIF関数("Y")が手軽
- 退職金・利息計算など小数点精度が必要 → YEARFRAC関数(基準1)が正確
整数の年数だけでなく端数月数も必要な場合は、YEARFRACにINT関数を組み合わせて年数部分を取り出すことができます。
```
=INT(YEARFRAC(A2, TODAY(), 1)) & "年"
```
YEARFRAC関数はExcelの正式サポート対象で、関数の挿入ダイアログから入力できます。業務の正確性を重視するなら積極的に検討したい関数です。
MicrosoftによるYEARFRAC関数の公式リファレンス(基準の詳細説明あり)
金融的な視点から見ると、勤続年数の計算は単なる人事管理ツールに留まりません。退職金を受け取る際の税額に直結します。
国税庁の定めによれば、退職所得控除の計算に使う勤続年数は「1年未満の端数は1年に切り上げ」が原則です。つまり10年2ヶ月勤務した人は「11年」として計算されます。この端数切り上げのルールが、退職金の手取り額に大きな影響を与えます。
退職所得控除額の計算式は以下のとおりです。
$$
\text{退職所得控除額} =
\begin{cases}
40\text{万円} \times \text{勤続年数} & (\text{勤続20年以下の場合}) \\
800\text{万円} + 70\text{万円} \times (\text{勤続年数} - 20) & (\text{勤続20年超の場合})
\end{cases}
$$
勤続年数が1年増えると、非課税枠は40万円(20年以下)または70万円(20年超)増加します。たとえば勤続38年の人が39年に変わると、控除額が70万円アップします。
課税退職所得の計算式は次のとおりです。
$$\text{課税退職所得} = (\text{退職金} - \text{退職所得控除額}) \times \frac{1}{2}$$
非課税枠が70万円増えると課税対象は35万円減ります(1/2になるため)。所得税・住民税を合わせた税率が約40〜55%の人なら、35万円の課税対象減少で14〜19万円の節税効果になります。退職日が1日違うだけで、手取りが最大約20万円変わることがあるわけです。
この計算をExcelで管理する方法として、次のような数式を活用できます。退職予定日を仮に設定し、勤続年数・控除額・課税退職所得をリアルタイムで試算するシートを作ることも可能です。
```excel
【入力セル】
A2: 入社日(例: 2005/4/1)
B2: 退職予定日(例: 2026/3/31 or 2026/4/1)
【計算セル】
C2(勤続年数): =DATEDIF(A2,B2,"Y")+IF(DATEDIF(A2,B2,"YM")+DATEDIF(A2,B2,"MD")>0,1,0)
D2(退職所得控除): =IF(C2<=20,C2*400000,8000000+(C2-20)*700000)
```
C2の式は、DATEDIF("Y")で満年数を出し、端数が1日でもあれば+1して切り上げる計算になっています。国税庁の端数処理ルールを正確に反映したい場合は、この方式を採用しましょう。
国税庁:No.2732 退職手当等に対する源泉徴収(勤続年数の端数処理・控除額計算の公式基準)
実務では、一度退職して再入社した社員や、休職・育児休業を取得した社員の勤続年数を管理するケースも少なくありません。ここが多くの管理シートで見落とされている部分です。
再入社・前職期間の通算
国税庁の規定では、退職給与規程などに基づいて前職期間を通算する定めがある場合は、その期間も勤続年数に含めます。たとえばA社に5年勤務後退職→B社に3年勤務→A社に再入社して7年という場合、再入社後の7年だけでなく、最初の5年が退職金計算の基礎に含まれるかどうかは会社の規程次第です。
この通算処理をExcelで管理するには、期間を分けて複数のDATEDIF関数で計算し、合算する方法が有効です。
```excel
=DATEDIF(初回入社日,初回退職日,"Y")+DATEDIF(再入社日,TODAY(),"Y")
```
ただし月数端数が絡む場合はそれぞれの月数をいったん合計し、INT関数で年数に変換するほうが正確です。
休職・育児休業期間の扱い
国税庁の通達(所基通30-6)では、長期の欠勤や病気による休職期間は原則として勤続期間に含まれます。一方、他の会社で働くために休職した期間(出向など)は除かれる場合があります。
こうした細かい条件分岐も、Excelでフラグ管理をすることで対応できます。たとえばD列に「通算対象期間(月数)」を手入力し、E列でDATEDIF計算した月数と合算する運用が実務では使いやすいでしょう。
ポイントを整理するとこうなります。
- 🔁 再入社の前職期間通算 → 会社規程を確認してからExcelに反映
- 🤒 休職・病欠期間 → 原則は勤続年数に含む(除外規定がある場合のみ除外)
- 👶 育児休業・産前産後休業 → 雇用保険・社会保険では加入継続のため勤続に含む
- 🏢 出向期間 → 出向先での勤務か出向元規程次第で変わる
管理ファイルに「期間タイプ」の列を追加し、SUMIFなどで対象期間だけを集計する設計にしておくと、人数が増えてもメンテナンスしやすくなります。複雑ほど設計が命です。
Indeed:ExcelのDATEDIF関数の使い方と活用例(実務の応用事例を網羅)