ExcelのEOMONTH関数の使い方|月末日を自動計算する方法

スポンサーリンク

「請求書の支払期日を毎月手入力している」なんてことはありませんか。月によって末日が28日だったり31日だったり、手計算だとミスしやすいですよね。

ExcelのEOMONTH関数を使えば、指定した月の月末日を一発で計算できます。この記事では基本の書き方から実務パターンまでまとめて紹介します。

この記事は次のような人におすすめ

  • 翌月末や3ヶ月後の月末日を自動で計算したい
  • 請求書の支払期日を数式で管理したい
  • EOMONTH関数とDATE関数EDATE関数の違いを整理したい

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/102025/6/30(翌々月末)
  • 2025/12/202026/2/28(翌々月末・年またぎ)

年をまたぐ場合も正しく計算してくれるのが便利です。

パターン3: 翌月末の5営業日前を計算する

支払処理には準備期間が必要ですよね。翌月末の5日前を求める例です。A1に基準日が入っているとします。

=EOMONTH(A1, 1)-5

結果の例:

  • 2025/4/152025/5/26(5月31日の5日前)
  • 2025/1/152025/2/23(2月28日の5日前)

EOMONTH関数の戻り値はシリアル値なので、そのまま足し引きできます。営業日ベースで計算したい場合は WORKDAY関数と組み合わせてみてください。

パターン4: 当月の日数を求める

月によって日数が違う(28日・30日・31日)ため、手計算は面倒です。EOMONTH関数とDAY関数を組み合わせれば一発です。A1に日付が入っているとします。

=DAY(EOMONTH(A1, 0))

結果の例:

  • 2025/4/1530(4月は30日まで)
  • 2025/2/1028(2025年2月は28日まで)
  • 2024/2/1029(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関数と同じ「日付計算」系の関数を比較します。

関数目的使い方の例結果
EOMONTHNヶ月後の月末日を取得=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関数で自動化して、請求書や期限管理を効率よく回してみてください。

関連記事

タイトルとURLをコピーしました