「請求書の支払期日を毎月手入力している」なんてことはありませんか。月によって末日が28日だったり31日だったり、手計算だとミスしやすいですよね。
ExcelのEOMONTH関数を使えば、指定した月の月末日を一発で計算できます。この記事では基本の書き方から実務パターンまでまとめて紹介します。
この記事は次のような人におすすめ
EOMONTH関数とは?
EOMONTH関数(読み方: エンド オブ マンス)は、開始日から指定した月数だけ前後した月の月末日をシリアル値で返す関数です。「End Of MONTH」の頭文字が関数名の由来です。
たとえば 2025/4/15 を起点に1ヶ月後を指定すると、2025/5/31(5月の月末日)が返ります。2月のような短い月でも自動で28日や29日を返してくれます。
Excelの日付は内部的に「シリアル値」という数値で管理されています。1900年1月1日を「1」として、1日ごとに1ずつ増えます。EOMONTH関数の戻り値もシリアル値なので、セルの表示形式を「日付」にしておくと日付として表示されます。
NOTE
戻り値がシリアル値の数字(45443など)で表示される場合は、セルの表示形式を「日付」に変更してください。セルを選択して
Ctrl + 1→ 「表示形式」タブ → 「日付」を選びます。
EOMONTH関数の書き方(構文と引数)
基本構文
=EOMONTH(開始日, 月)
引数は2つでどちらも必須です。
引数の説明
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 開始日 | 必須 | 起算日となる日付を指定する。セル参照・DATE関数・TODAY関数などが使える |
| 月 | 必須 | 開始日から何ヶ月後(正の数)または何ヶ月前(負の数)かを整数で指定する。0を指定すると当月の月末日が返る |
NOTE
開始日に日付の文字列(
"2025/4/15")を直接指定することもできますが、DATE関数やセル参照を使うほうが確実です。文字列のままだとExcelが日付として認識できずにエラーになることがあります。
EOMONTH関数の基本的な使い方
当月の月末日を取得する
もっとも基本的な使い方です。A1に 2025/4/15 が入っているとします。
=EOMONTH(A1, 0)
結果: 2025/4/30
第2引数に 0 を指定すると、開始日と同じ月の月末日が返ります。月によって28日・30日・31日と変わる月末日を自動で取得できるのがポイントです。
翌月末・翌々月末を取得する
第2引数に正の数を指定すると、指定した月数後の月末日を取得できます。A1に 2025/4/15 が入っているとします。
=EOMONTH(A1, 1)
結果: 2025/5/31(翌月末)
=EOMONTH(A1, 2)
結果: 2025/6/30(翌々月末)
請求書の支払期日が「翌月末払い」のときにそのまま使えますよ。
前月末を取得する
第2引数に負の数を指定すると、過去の月末日を取得できます。A1に 2025/4/15 が入っているとします。
=EOMONTH(A1, -1)
結果: 2025/3/31(前月末)
前月の締め日を求めたいときや、前月末時点の残高を参照するときに使えます。
TODAY関数と組み合わせる
TODAY関数と組み合わせると、今月や来月の月末日を自動取得できます。
=EOMONTH(TODAY(), 0)
結果: 2026/3/31(2026年3月の場合)
ファイルを開くたびに自動で更新されるので、期限管理や月次処理で重宝します。
DATE関数と組み合わせる
年・月・日を直接指定して月末日を取得したいときはDATE関数と組み合わせます。
=EOMONTH(DATE(2025,2,1), 0)
結果: 2025/2/28
2月の月末日は年によって28日と29日が変わりますが、EOMONTH関数がうるう年も正しく処理してくれます。
EOMONTH関数の実務活用パターン
パターン1: 請求書の支払期日(翌月末払い)
「請求日の翌月末が支払期日」というルールは多くの会社で使われていますよね。A1に請求日が入っているとします。
=EOMONTH(A1, 1)
結果の例:
2025/3/15(請求日) → 2025/4/30(支払期日)2025/1/31(請求日) → 2025/2/28(支払期日)
たった1つの数式で、月ごとの末日の違いを気にせず支払期日を求められます。
パターン2: 翌月末締め翌々月末払い
「今月末で締めて翌々月末に支払う」というパターンも実務ではよくあります。A1に取引日が入っているとします。
=EOMONTH(A1, 2)
結果の例:
2025/4/10→ 2025/6/30(翌々月末)2025/12/20→ 2026/2/28(翌々月末・年またぎ)
年をまたぐ場合も正しく計算してくれるのが便利です。
パターン3: 翌月末の5営業日前を計算する
支払処理には準備期間が必要ですよね。翌月末の5日前を求める例です。A1に基準日が入っているとします。
=EOMONTH(A1, 1)-5
結果の例:
2025/4/15→ 2025/5/26(5月31日の5日前)2025/1/15→ 2025/2/23(2月28日の5日前)
EOMONTH関数の戻り値はシリアル値なので、そのまま足し引きできます。営業日ベースで計算したい場合は WORKDAY関数と組み合わせてみてください。
パターン4: 当月の日数を求める
月によって日数が違う(28日・30日・31日)ため、手計算は面倒です。EOMONTH関数とDAY関数を組み合わせれば一発です。A1に日付が入っているとします。
=DAY(EOMONTH(A1, 0))
結果の例:
2025/4/15→ 30(4月は30日まで)2025/2/10→ 28(2025年2月は28日まで)2024/2/10→ 29(2024年はうるう年)
当月末の日付をDAY関数で「日」だけ取り出しています。うるう年の判定も不要になりますよ。
パターン5: 月末日かどうかを判定する
「その日が月末日かどうか」を自動で判定したい場面もありますよね。A1に日付が入っているとします。
=IF(A1=EOMONTH(A1, 0), "月末日", "")
結果の例:
2025/3/31→ 月末日2025/4/30→ 月末日2025/4/15→ (空白)
A1の日付と当月末日を直接比較しています。DAY関数で日の部分だけを比較する方法もありますが、日付同士を直接比較するほうがシンプルです。
よくあるエラーと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
#VALUE! エラー | 開始日が日付として認識できない文字列 | セルの値が正しい日付形式か確認する。文字列が入っている場合はDATEVALUE関数で変換する |
#VALUE! エラー | 月の引数に数値以外を指定した | 第2引数は整数を指定する。小数を指定した場合は小数部が切り捨てられる |
#NUM! エラー | 計算結果の日付がExcelの日付範囲外 | Excelの日付は1900/1/1〜9999/12/31が有効範囲。範囲外になる月数を指定していないか確認する |
| 数字(45443など)が表示される | セルの表示形式が「日付」になっていない | セルの表示形式を「日付」に変更する(Ctrl + 1 → 日付を選択) |
| 想定と違う月末日が返る | 開始日が文字列として保存されている | セルが左寄せになっていたら文字列の可能性あり。DATEVALUE関数で変換するか再入力する |
NOTE
第2引数の「月」に小数(1.5など)を指定した場合、小数部分は切り捨てられます。
=EOMONTH(A1, 1.9)は=EOMONTH(A1, 1)と同じ結果になります。
似た関数との違い・使い分け
EOMONTH関数と同じ「日付計算」系の関数を比較します。
| 関数 | 目的 | 使い方の例 | 結果 |
|---|---|---|---|
| EOMONTH | Nヶ月後の月末日を取得 | =EOMONTH("2025/4/15", 1) | 2025/5/31 |
| EDATE関数 | Nヶ月後の同日を取得 | =EDATE("2025/4/15", 1) | 2025/5/15 |
| DATE関数 | 年・月・日を指定して日付を作成 | =DATE(2025,4,15) | 2025/4/15 |
| TODAY関数 | 今日の日付を取得 | =TODAY() | 2026/3/17 |
| DAY関数 | 日付から日を取り出す | =DAY("2025/4/15") | 15 |
使い分けのポイント
- 「翌月末の日付が欲しい」→ EOMONTH関数(月末日を自動計算)
- 「翌月の同じ日が欲しい」→ EDATE関数(同日を返す)
- 「年・月・日を指定して日付を組み立てたい」→ DATE関数
- 「当月の日数を知りたい」→ EOMONTH関数 + DAY関数(
=DAY(EOMONTH(A1,0)))
TIP
EOMONTH関数は月末日を返し、EDATE関数は同じ日を返すのが最大の違いです。たとえば4/15の1ヶ月後は、EOMONTHなら「5/31」、EDATEなら「5/15」です。支払期日に使うならEOMONTH、契約更新日に使うならEDATEが適しています。
DATE関数で =DATE(YEAR(A1), MONTH(A1)+1, 0) と書いても月末日は取得できますが、EOMONTH関数のほうが意図が明確で読みやすいです。
まとめ
EOMONTH関数は、指定した月の月末日を自動計算する関数です。
- 構文:
=EOMONTH(開始日, 月)— 引数は2つ - 戻り値: 指定した月数後(または前)の月末日のシリアル値
- よく使う組み合わせ: TODAY関数で今月末を取得、DAY関数で当月の日数を計算、IF関数で月末日判定
- 実務活用: 支払期日の計算、当月の日数取得、月末日かどうかの判定
- 関連関数: EDATE関数・DATE関数・DAY関数と目的に応じて使い分ける
月末日の計算は、月ごとに日数が変わるため手入力だとミスが起きやすい部分です。EOMONTH関数で自動化して、請求書や期限管理を効率よく回してみてください。
