【Excel】EOMONTH関数で月末日を求める方法

この記事は約5分で読めます。

今回は、ExcelのEOMONTH関数を使って月末日を求める方法と、請求日や締め日の管理に役立つ応用例を紹介します。対象はExcel for Microsoft 365、Excel 2024/2021/2019/2016などのデスクトップ版を想定しています。EOMONTH関数はWeb版やMac版でも同じ書き方で利用できます。

EOMONTH関数とは

EOMONTH関数は、指定した日付から何か月か前後した月の「月末日」を返す関数です。名前は「End Of MONTH」の略で、月末を意味しています。

月末日は、月によって28日、29日、30日、31日と変わります。手作業で入力すると、うるう年や小の月で間違いが起きやすい部分です。EOMONTH関数を使えば、月ごとの日数を意識しなくても正しい月末日を自動で求められます。

EOMONTH関数の構文

EOMONTH関数の書き方は次のとおりです。

  • =EOMONTH(開始日, 月)

引数の意味は次のとおりです。

  • 開始日:基準となる日付。セル参照、DATE関数、ほかの数式の結果などで指定する
  • 月:開始日から何か月ずらすかを表す数値。正の数で後の月、負の数で前の月、0で同じ月になる

月に小数を指定した場合は、小数点以下が切り捨てられて整数として扱われます。

EOMONTH関数の基本的な使い方

たとえば、セルA2に日付が入力されているとします。この日付を基準に、いくつかの月末日を求めてみましょう。

  • =EOMONTH(A2,0):A2と同じ月の月末日
  • =EOMONTH(A2,1):A2の翌月の月末日
  • =EOMONTH(A2,-1):A2の前月の月末日
  • =EOMONTH(A2,3):A2の3か月後の月末日

開始日が月の途中の日付でも、結果は必ず対象月の末日になります。15日でも1日でも、同じ月なら同じ月末日が返ります。

結果が数値で表示されたときの対処法

EOMONTH関数を入力すると、結果が「45000」のような5桁の数値で表示されることがあります。これはエラーではありません。Excelは日付をシリアル値という連番の数値で管理しており、EOMONTH関数はそのシリアル値を返すためです。

日付として表示したいときは、次の手順で表示形式を変更します。

  1. 結果のセルを選択する
  2. [ホーム]タブの[数値の書式]の一覧を開く
  3. [短い日付形式]または[長い日付形式]を選ぶ

「2026/9/30」のような形式で表示されれば設定完了です。[セルの書式設定]の[表示形式]タブで[日付]を選んでも同じように変更できます。

EOMONTH関数の応用例

月初日を求める

EOMONTH関数は月末日を返す関数ですが、少し工夫すると月初日も求められます。前月の月末日に1を足すと、その月の1日になります。

  • =EOMONTH(A2,-1)+1:A2と同じ月の1日
  • =EOMONTH(A2,0)+1:A2の翌月の1日

Excelの日付はシリアル値なので、1を足すと翌日の日付になります。この仕組みを利用すると、月初と月末を組み合わせた期間の管理がしやすくなります。

その月の日数を求める

月末日の「日」の部分を取り出せば、その月が何日まであるかがわかります。日付から日の数字を取り出すには、DAY関数を組み合わせます。

  • =DAY(EOMONTH(A2,0)):A2の月の日数

2月なら28または29、4月なら30という結果になります。日割り計算の元になる日数を用意したい場合などに使えます。

翌月末払いの支払期日を求める

「月末締め、翌月末払い」のような取引条件では、支払期日は取引日の翌月の月末日になります。取引日がA2に入っている場合は、次の式で求められます。

  • =EOMONTH(A2,1)

「翌々月末払い」なら月の引数を2に変えるだけで対応できます。取引日の一覧を作っておけば、式をコピーするだけで支払期日の列を一度に作れます。

月末までの残り日数を求める

今日から月末まであと何日あるかを知りたい場合は、TODAY関数と組み合わせます。

  • =EOMONTH(TODAY(),0)-TODAY()

この式は、今日の日付を基準に当月の月末日を求め、そこから今日の日付を引いています。結果は日数になるため、表示形式は[標準]や[数値]にしておきます。日付形式のままだと、日数ではなく日付のように表示されてしまうので注意が必要です。

月単位の一覧表を作る

毎月の月末日を並べた一覧を作りたいときも、EOMONTH関数が役立ちます。

  1. 先頭のセルに基準となる月末日を入力する(例:=EOMONTH(DATE(2026,4,1),0))
  2. その下のセルに、上のセルを開始日とした式を入力する(例:=EOMONTH(B2,1))
  3. 2つ目のセルの式を、必要な行数分だけ下へコピーする

これで、4月末、5月末、6月末と月末日が順番に並びます。2月の末日も自動で正しく計算されるため、会計期間の一覧や月次の締め日表を作るときに便利です。

EOMONTH関数を使うときの注意点

開始日は日付として入力する

開始日に日付を文字列として直接書き込むと、正しく計算されない場合があります。開始日は次のいずれかの方法で指定すると安全です。

  • 日付が入力されたセルを参照する
  • DATE関数で指定する(例:=EOMONTH(DATE(2026,9,15),0))
  • TODAY関数など、日付を返す関数の結果を使う

セルに入力された日付が、見た目は日付でも実は文字列になっていることもあります。うまく計算できないときは、元のセルが日付として認識されているかを確認しましょう。

#NUM!エラーが表示されたとき

開始日に無効な日付を指定した場合や、開始日と月の組み合わせが有効な日付の範囲を超えた場合は、#NUM!エラーが返されます。エラーが出たときは、次の点を見直します。

  • 開始日のセルに正しい日付が入っているか
  • 月の引数に極端に大きい数や小さい数が入っていないか

EDATE関数との使い分け

EOMONTH関数と似た関数にEDATE関数があります。EDATE関数は、開始日から指定した月数だけずらした「同じ日」を返します。

  • EDATE関数:3か月後の同じ日付を求めたいとき(契約更新日など)
  • EOMONTH関数:3か月後の月末日を求めたいとき(締め日や支払期日など)

「何日か」が重要な場合はEDATE関数、「月末」が重要な場合はEOMONTH関数と考えると選びやすくなります。

まとめ

EOMONTH関数を使うと、月ごとに異なる月末日を自動で求められます。ポイントを整理すると次のとおりです。

  • =EOMONTH(開始日, 月)で、指定した月数だけずらした月の月末日を返す
  • 月の引数は0で当月、正の数で後の月、負の数で前の月
  • 結果が数値で表示されたら、表示形式を日付に変更する
  • 前月末に1を足すと月初日、DAY関数と組み合わせると月の日数を求められる
  • 開始日はセル参照やDATE関数で指定し、#NUM!エラーのときは日付と引数を見直す

請求書の支払期日や月次の締め日など、月末が関係する日付管理にEOMONTH関数を取り入れると、入力ミスを減らしながら効率よく作業を進められます。