EOMONTH関数の使い方|月末日と月初日を求める

執筆者:

カテゴリ:

EOMONTHは、指定した月の末日を返す関数です。

End Of MONTH の略で、月末が28日か30日か31日かを自動で判定します。うるう年も正しく処理されます。

月次集計や締め日の計算で頻繁に使う、実務価値の高い関数です。ExcelとGoogleスプレッドシートで共通です。

書式

=EOMONTH(基準日, 月数)
引数 内容
基準日 起点となる日付
月数 何ヶ月後(先)か。0が当月、-1が前月、1が翌月

月数の0が「当月」である点が最も重要です。

基本の使い方

A1に 2026/4/15 が入っているとします。

=EOMONTH(A1, 0)    → 2026/4/30   (当月末)
=EOMONTH(A1, 1)    → 2026/5/31   (翌月末)
=EOMONTH(A1, -1)   → 2026/3/31   (前月末)

結果が数値で表示されたら、セルの表示形式を「日付」に変更してください。

月初日を求める

EOMONTHには「月初」を返す機能がありません。前月末に1を足すという書き方をします。

=EOMONTH(A1, -1) + 1    → 2026/4/1   (当月1日)

これが定番のイディオムです。翌月1日なら次のようになります。

=EOMONTH(A1, 0) + 1     → 2026/5/1

DATE(YEAR(A1), MONTH(A1), 1) でも同じことができますが、EOMONTHのほうが短く、月をまたぐ計算に強い書き方です。

月次集計での使い方

EOMONTHが最も活きるのがここです。

今月のデータだけ集計する

=SUMIFS(C:C, A:A, ">="&EOMONTH(TODAY(),-1)+1, A:A, "<="&EOMONTH(TODAY(),0))

「当月1日以上、当月末日以下」という条件です。月が変わっても数式を直す必要がありません。

ただし、日付に時刻が含まれている場合、<= で月末を指定すると 4/30 15:00 のデータが漏れます。安全なのは翌月1日未満で指定する形です。

=SUMIFS(C:C, A:A, ">="&EOMONTH(TODAY(),-1)+1, A:A, "<"&EOMONTH(TODAY(),0)+1)

< で翌月1日——これを習慣にしておくと事故が防げます。

月次の集計表を作る

A列に月初日を並べ、その横に集計を置きます。

A2:  =DATE(2026, 4, 1)
A3:  =EOMONTH(A2, 0) + 1        (翌月1日)
A4:  =EOMONTH(A3, 0) + 1

A3を下にコピーすれば、月初日が並びます。

集計側は次の形です。

B2:  =SUMIFS($C:$C, $A:$A, ">="&A2, $A:$A, "<"&EOMONTH(A2,0)+1)

月初日を起点に、その月末までを集計しています。この形なら何ヶ月分でもコピーで作れます。

締め日・支払日の計算

月末締め・翌月末払い

=EOMONTH(A1, 1)

月末締め・翌々月10日払い

=EOMONTH(A1, 1) + 10

翌月末に10日を足すと翌々月10日になります。

20日締め・翌月末払い

20日締めは、20日を境に締め月が変わります。

=IF(DAY(A1) <= 20, EOMONTH(A1, 1), EOMONTH(A1, 2))

20日以前なら翌月末、21日以降なら翌々月末です。

支払日が土日なら前倒し

WORKDAY と組み合わせます。

=WORKDAY(EOMONTH(A1,1)+1, -1)

「翌月末の翌日から、営業日を1つ戻る」=翌月末以前の直近営業日です。祝日リストを第3引数に渡せば、祝日も避けられます。

=WORKDAY(EOMONTH(A1,1)+1, -1, 祝日!A:A)

月をまたぐ計算に強い理由

「3ヶ月後の月末」を求める場面を考えてください。

DATE(YEAR(A1), MONTH(A1)+3, 0) でも計算できますが、月が12を超えると年をまたぐ処理が必要になります。

EOMONTHなら気にする必要がありません。

=EOMONTH(A1, 3)

年またぎもうるう年も自動で処理されます。 2026/12/15 から3ヶ月後は 2027/3/31 と正しく返ります。

エラーの対処

結果が数字で表示される

セルの表示形式が「数値」になっています。「日付」に変更してください。日付は内部的に数値(シリアル値)で保持されているためです。

#VALUE! が出る

  • - 基準日が日付ではなく文字列になっている
  • - 月数が数値でない

文字列の日付は DATEVALUE で変換してください。

#NUM! が出る

計算結果がスプレッドシートの扱える日付の範囲を超えています。月数に極端な値を入れていないか確認してください。

集計が合わない

日付に時刻が含まれている可能性が高いです。<= で月末を指定するのをやめ、< で翌月1日を指定してください。

Excelとの違い

書式・挙動ともに共通です。WORKDAY DATE DAY との組み合わせも同じように使えます。

古いExcel(2003以前)ではアドインが必要でしたが、現在のバージョンでは標準機能です。

まとめ

  • - 書式は =EOMONTH(基準日, 月数)0が当月
  • - 月初は =EOMONTH(A1, -1) + 1
  • - 月次集計は >=月初<翌月1日 で書く(時刻対策)
  • - 締め日・支払日の計算に強い
  • - 年またぎ・うるう年を自動で処理する
  • - 結果が数字なら表示形式を「日付」に

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です