「契約更新日を毎回カレンダーで数えている」なんてことはありませんか。○ヶ月後の日付を手計算するのは地味に面倒ですよね。
ExcelのEDATE関数を使えば、基準日から○ヶ月後・○ヶ月前の日付を一発で計算できます。この記事では基本の書き方から実務パターンまでまとめて紹介します。
この記事は次のような人におすすめ
EDATE関数とは?
EDATE関数(読み方: イーデイト)は、開始日から指定した月数だけ前後した同じ日の日付をシリアル値で返す関数です。
たとえば 2025/4/15 を起点に1ヶ月後を指定すると、2025/5/15(同じ15日)が返ります。EOMONTH関数が月末日を返すのに対し、EDATE関数は「同じ日」を返すのがポイントです。
Excelの日付は内部的に「シリアル値」という数値で管理されています。1900年1月1日を「1」として、1日ごとに1ずつ増えます。EDATE関数の戻り値もシリアル値なので、セルの表示形式を「日付」にしておくと日付として表示されます。
NOTE
戻り値がシリアル値の数字(45443など)で表示される場合は、セルの表示形式を「日付」に変更してください。セルを選択して
Ctrl + 1→ 「表示形式」タブ → 「日付」を選びます。
EDATE関数の書き方(構文と引数)
基本構文
=EDATE(開始日, 月)
引数は2つでどちらも必須です。
引数の説明
NOTE
開始日に日付の文字列(
"2025/4/15")を直接指定することもできますが、DATE関数やセル参照を使うほうが確実です。文字列のままだとExcelが日付として認識できずにエラーになることがあります。
EDATE関数の基本的な使い方
○ヶ月後の日付を求める
もっとも基本的な使い方です。A1に 2025/4/15 が入っているとします。
=EDATE(A1, 3)
結果: 2025/7/15(3ヶ月後の同日)
第2引数に正の数を指定すると、未来の日付が返ります。「1」で1ヶ月後、「6」で半年後、「12」で1年後です。
○ヶ月前の日付を求める
第2引数に負の数を指定すると、過去の日付を取得できます。A1に 2025/4/15 が入っているとします。
=EDATE(A1, -3)
結果: 2025/1/15(3ヶ月前の同日)
「-1」で1ヶ月前、「-6」で半年前、「-12」で1年前です。
月末日の自動調整を理解する
EDATE関数には月末日を自動調整する仕組みがあります。開始日の「日」が結果月の末日を超える場合、結果月の末日に自動で丸められます。
具体例を見てみましょう。
| 開始日 | 月数 | 結果 | 説明 |
|---|---|---|---|
| 2025/1/31 | 1 | 2025/2/28 | 2月は28日までなので月末に調整 |
| 2024/1/31 | 1 | 2024/2/29 | うるう年は2/29に調整 |
| 2025/3/31 | 1 | 2025/4/30 | 4月は30日までなので月末に調整 |
| 2025/1/15 | 1 | 2025/2/15 | 15日は2月にも存在するのでそのまま |
31日の月から30日の月へ移動するときなどに自動調整が効きます。契約更新日の計算で「2月は28日に繰り上がる」ことを理解しておくと安心です。
TODAY関数と組み合わせる
TODAY関数と組み合わせると、今日から○ヶ月後の日付を自動取得できます。
=EDATE(TODAY(), 3)
結果: 2026/6/21(2026年3月21日から3ヶ月後の場合)
ファイルを開くたびに自動で更新されるので、期限管理に重宝します。
DATE関数と組み合わせる
年・月・日を直接指定して計算したいときはDATE関数と組み合わせます。
=EDATE(DATE(2025,1,31), 1)
結果: 2025/2/28
DATE関数で日付を作り、そこからEDATE関数で月を加減算するパターンは実務でもよく使います。
EDATE関数の実務活用パターン
パターン1: 契約更新日の一覧を作る
「契約開始日の1年後が更新日」というルールはよくありますよね。A列に契約開始日が入っているとします。
=EDATE(A2, 12)
結果の例:
2025/4/1(開始日) → 2026/4/1(更新日)2025/1/31(開始日) → 2026/1/31(更新日)
1年後の更新日が一発で求められます。複数の契約を管理するときは、下方向にコピーするだけで全件分の更新日が揃います。
パターン2: 定期支払の予定表を作る
月額サービスの支払予定表を作る例です。B1に初回支払日が入っているとします。
=EDATE(B1, ROW()-1)
B1に 2025/4/15 が入っている場合、2行目以降にコピーすると:
- 2行目: 2025/4/15(0ヶ月後=当月)
- 3行目: 2025/5/15(1ヶ月後)
- 4行目: 2025/6/15(2ヶ月後)
ROW()-1 で行番号を月数に変換しています。12行分コピーすれば1年分の予定表が完成します。
パターン3: 試用期間の終了日を計算する
「入社日から3ヶ月後が試用期間の終了日」というパターンです。A列に入社日が入っているとします。
=EDATE(A2, 3)-1
結果の例:
2025/4/1(入社日) → 2025/6/30(3ヶ月後の前日)2025/7/15(入社日) → 2025/10/14(3ヶ月後の前日)
-1 で「3ヶ月後の同日の前日」にしています。「3ヶ月間」は「3ヶ月後の同日の前日まで」と解釈する場合に使えます。
パターン4: 期限切れを自動判定する
IF関数と組み合わせて、期限が切れたかどうかを自動判定できます。A列に発行日、B列に有効期間(月数)が入っているとします。
=IF(EDATE(A2, B2)<TODAY(), "期限切れ", "有効")
結果の例:
- 発行日:
2025/1/15、有効期間:6→ 2025/7/15。今日が2026/3/21なら 期限切れ - 発行日:
2026/1/15、有効期間:6→ 2026/7/15。今日が2026/3/21なら 有効
EDATE関数で有効期限日を計算し、TODAY関数と比較しています。資格の有効期限管理や保証期間のチェックにも応用できますよ。
パターン5: TEXT関数で「○年○月」形式にする
EDATE関数の結果を見やすく整形したいときはTEXT関数と組み合わせます。
=TEXT(EDATE(A1, 6), "yyyy年m月d日")
結果の例:
2025/4/15→ 2025年10月15日
帳票に「2025年10月15日」のように表示したいときに便利です。
よくあるエラーと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
#VALUE! エラー | 開始日が日付として認識できない文字列 | セルの値が正しい日付形式か確認する。文字列が入っている場合はDATEVALUE関数で変換する |
#VALUE! エラー | 月の引数に数値以外を指定した | 第2引数は整数を指定する |
#NUM! エラー | 計算結果がExcelの日付範囲外 | Excelの日付は1900/1/1〜9999/12/31が有効範囲。範囲外になる月数を指定していないか確認する |
| 数字(45443など)が表示される | セルの表示形式が「日付」になっていない | セルの表示形式を「日付」に変更する(Ctrl + 1 → 日付を選択) |
| 想定と違う日付が返る | 月末の自動調整が働いている | 1/31の1ヶ月後は2/28になる。月末調整の仕組みを確認する |
| 想定と違う日付が返る | 開始日が文字列として保存されている | セルが左寄せなら文字列の可能性あり。DATEVALUE関数で変換するか再入力する |
NOTE
第2引数の「月」に小数(1.5など)を指定した場合、小数部分は切り捨てられます。
=EDATE(A1, 1.9)は=EDATE(A1, 1)と同じ結果です。
似た関数との違い・使い分け
EDATE関数と同じ「日付計算」系の関数を比較します。
| 関数 | 目的 | 使い方の例 | 結果 |
|---|---|---|---|
| EDATE | Nヶ月後の同日を取得 | =EDATE("2025/4/15", 1) | 2025/5/15 |
| EOMONTH関数 | Nヶ月後の月末日を取得 | =EOMONTH("2025/4/15", 1) | 2025/5/31 |
| DATE関数 | 年・月・日を指定して日付を作成 | =DATE(2025,4,15) | 2025/4/15 |
| TODAY関数 | 今日の日付を取得 | =TODAY() | (今日の日付) |
| DATEDIF関数 | 2つの日付間の期間を求める | =DATEDIF(A1,B1,"M") | 月数 |
使い分けのポイント
- 「翌月の同じ日が欲しい」→ EDATE関数(同日を返す)
- 「翌月末の日付が欲しい」→ EOMONTH関数(月末日を自動計算)
- 「年・月・日を指定して日付を組み立てたい」→ DATE関数
- 「2つの日付の間が何ヶ月か知りたい」→ DATEDIF関数
TIP
EDATE関数は同じ日を返し、EOMONTH関数は月末日を返すのが最大の違いです。たとえば4/15の1ヶ月後は、EDATEなら「5/15」、EOMONTHなら「5/31」です。契約更新日に使うならEDATE、支払期日(翌月末払い)に使うならEOMONTHが適しています。
DATE関数でも =DATE(YEAR(A1), MONTH(A1)+3, DAY(A1)) と書けば3ヶ月後を求められます。ただし月末の自動調整が異なるので、EDATE関数のほうが意図が明確です。
日付計算の全体像はExcelの日付計算 完全攻略ガイドでまとめています。
まとめ
EDATE関数は、基準日から○ヶ月後・○ヶ月前の同じ日を自動計算する関数です。
- 構文:
=EDATE(開始日, 月)— 引数は2つ、どちらも必須 - 戻り値: 指定した月数後(または前)の同日のシリアル値
- 月末調整: 開始日が月末の場合、結果も月末に自動調整される(1/31→2/28など)
- よく使う組み合わせ: TODAY関数で今日起算の期限管理、IF関数で期限切れ判定
- 実務活用: 契約更新日の計算、定期支払の予定表、試用期間終了日
- 関連関数: EOMONTH関数・DATE関数・DATEDIF関数と目的に応じて使い分ける
○ヶ月後の計算はカレンダーを見ながら手で数えるとミスしやすい部分です。EDATE関数で自動化して、契約管理や期限チェックを効率よく回してみてください。
