「Excelで“1年後の前日”ってどうするんだっけ?」
このような日付の疑問、意外と時間が取られてしまうことありますよね。契約更新日や有効期限など、実務ではこの計算をよく使います。「365日を足す?EDATE?それとも別の関数?」と迷いやすいポイントです。
でも実はやり方さえ分かれば、一瞬で解決できます!
この記事では、仕事でそのまま使える計算方法をわかりやすくまとめました。同じ疑問で手を止めたことがある方、必見ですよ。
Excelで「1年後の前日」を求める場面とは?
「Excelで1年後の前日」と計算したいユーザーの多くは、日付計算を自動化したい、または、契約期限・有効期限の管理を正確にしたいという目的があると思いますが、特に次のような場面や目的があると思います。
- 契約の「満了日の前日」を自動計算したい
- 開始日からちょうど1年のマイナス1日を求めたい
- 期日のズレ(うるう年など)を避けたい
DATE関数・EDATE関数のどれを使うべきか知りたい
最もおすすめ:EDATE関数で1年後→1日引く方法
1年後の前日を最も安全に、かつうるう年にも対応して求めたい場合は、以下の式が最適です。
=EDATE(A1,12)-1
理由
- EDATEは日付の「月単位」での移動にベスト
- 12カ月=1年として扱われるためズレがない
- 月末日(31日)でも正確に計算できる
- うるう年(2/29)も自動調整される
例:2024/2/29(うるう年) → 1年後の前日
| セル | 値 |
|---|---|
| A1 | 2024/2/29 |
| B1(式) | =EDATE(A1, 12) – 1 |
| B1(結果) | 2025/2/28 |
うるう年をまたいでも正確に「1年後の前日」を計算することができます。
別解①:DATE関数を使う方法
一応、DATE関数でも同じ結果が得られます。ただし…。
=DATE(YEAR(A1)+1, MONTH(A1), DAY(A1)) - 1
メリット
- 年・月・日の構造が見えるので理解しやすい
- DATE関数のみで完結
デメリット
- 「存在しない日付」を指定した場合は自動補正が入るため、挙動が読みにくい場合がある(例:2/29など)
注意点:1年後ではなく「365日後」ではダメな理由
よく間違えてしまうのが、次の式ですね。
=A1 + 365 - 1
これは正確な意味での「1年後」にはならないため注意が必要です。
理由
- うるう年は1年が366日のためズレる
- 年をまたぐ日付計算に対応できない
- 2/28 → 365日後=翌年2/27になるケースなど不具合が出る
正しく処理するために、365日ではなく、やはり、ExcelのDATE・EDATEを用いて「日付としての1年」を扱う必要がありそうです。
「1年後の前日」を使う典型例
実務での使用例をいくつか紹介しますね。
例1:契約期間の自動計算
開始日(例:2024/4/1)から「1年後の前日」を求める。
=EDATE(A1, 12) - 1
結果:2025/3/31
例2:有効期限の自動記入
例えば定期券とかで見られる期限。またポイント、有効期限の自動入力などでも利用されていますね。
例3:退職日・更新日の計算
更新日が「入社日から1年後の前日」で決まる企業も多いですので、勤怠管理や人事計算で頻繁に使われると思います。
まとめ:最も正確な方法は「EDATE – 1」
Excelで「1年後の前日」を求めるなら、EDATE関数が無難だと思います。
=EDATE(A1, 12) - 1
うるう年を含むすべてのケースで、挙動が最も安定しており、実務向きですね。「DATE関数」も代替手段として有効ですが、迷ったら EDATE関数を使えば安心です。
私もExcelに慣れていない時、DATE関数を使っていた時もありますが、想定していない挙動が発生して、手直しが発生した経験などもあるので、それ以来、EDATE関数ですね。





