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以前)ではアドインが必要でしたが、現在のバージョンでは標準機能です。
月末を手で計算してはいけない理由
月末の日付は、月によって二十八日、二十九日、三十日、三十一日と変わります。うるう年もあります。この判定を数式で書こうとすると、条件分岐が増えて必ずどこかで間違えます。
専用の関数を使えば、基準の日付から何か月後の月末か、を指定するだけで済みます。うるう年も自動的に処理されます。当月の月末なら零、翌月なら一、前月なら負の一を指定します。
この関数を知らずに、月の日数を条件分岐で書いている数式を実務でよく見かけます。動いてはいますが、うるう年の判定が抜けていることが多く、四年に一度だけ誤る、という発見しにくい不具合になります。
月初の日付が欲しい場合は、前月末に一を足します。日付は連続した数値なので、一を足せば翌日です。この組み合わせで、当月の初日と末日が両方求まります。
期間の集計に使う
月次の集計表を作る場合、各月の開始日と終了日が必要になります。これを手で入力すると、月が変わるたびに更新が必要になり、入力ミスも起こります。
月初の日付だけを列に入力し、月末は関数で求める形にすると、更新の手間がなくなります。さらに、月初の日付そのものを、前の行に一か月を足す形で求めれば、最初の一行だけ入力すれば済みます。
こうして作った開始日と終了日を、条件付きの集計関数の条件として使います。期間を指定する条件は、開始日以上と終了日以下の二つです。同じ日付の列を二回条件範囲として指定する形になります。
この構成にしておくと、行を追加するだけで翌月の集計が加わります。数式を書き換える必要はありません。
注意点として、データに時刻が含まれる場合、終了日を以下という条件では、その日の零時までしか含まれません。時刻を切り落とした作業列を用意するか、翌月の月初未満という条件にしてください。
締め日が月末でない場合
実務では、締め日が月末とは限りません。二十日締め、二十五日締めといった運用があります。この場合、月末を求める関数だけでは足りません。
考え方としては、締め日を基準に期間を区切ります。二十日締めなら、前月二十一日から当月二十日まで、が一つの期間になります。
これを求めるには、月初の日付に締め日の数値を足す形で締め日を作り、その前月分と組み合わせます。年月日から日付を作る関数を使って、年と月と締め日を指定する方法もあります。こちらのほうが意図が明確になります。
締め日が土日にあたる場合の扱いも決めておく必要があります。前倒しか後ろ倒しか、業務のルールに従ってください。営業日を扱う関数と組み合わせれば、自動化できます。
締め日の運用は業務ごとに違うため、数式に埋め込まず、締め日をセルに置いて参照する形にしてください。運用が変わったときに、セルを直すだけで済みます。
経過月数や更新日の計算
契約の更新日や、支払期日の計算にも使えます。
契約開始日から一年後の更新日を求めるなら、十二か月後の月末を求めるか、年月日から日付を作る関数で年に一を足します。どちらを使うかは、更新日が月末なのか同日なのかで決まります。
支払期日が「翌月末」であれば、請求日の翌月末を求めるだけです。「翌々月十日」であれば、二か月後の月初に九を足します。
こうした計算を数式にしておくと、日付の入力ミスがなくなり、期日の一覧も自動で作れます。期日から今日を引けば残り日数が出るので、督促の管理にもつながります。
なお、月末の同日という概念には注意が必要です。一月三十一日の一か月後を二月三十一日にはできません。月末を求める関数を使えば二月二十八日になりますが、年月日から日付を作る関数では三月三日になることがあります。どちらの挙動が業務に合っているかを確認してください。
月次の集計表を自動化する
月末を求める関数を使うと、月次の集計表を一度作るだけで、以降ずっと使える形にできます。
まず、月初の日付を並べた列を作ります。最初の一行だけを手で入力し、以降は前の行に一か月を足す形にします。年月日から日付を作る関数を使えば、月をまたぐ計算も正しく処理されます。
次に、その横に月末の日付を出します。月初の日付を基準に、当月の月末を求めるだけです。うるう年も自動的に処理されます。
この二列があれば、条件付きの集計関数で期間を絞れます。開始日以上と終了日以下の二つの条件を指定します。
さらに横に、集計したい項目を並べます。件数、合計、平均。条件付きの集計関数を、月初と月末のセルを条件にして書きます。
一行分の数式が完成したら、下にコピーします。行を足すだけで翌月の集計が加わります。数式を書き換える必要はありません。
年をまたぐ場合も、月初の計算が正しければ自動的に処理されます。十二月の次は翌年一月になります。
この構成を一度作っておけば、毎月の集計作業がデータの追加だけになります。
締め日と支払日の管理
請求や支払の管理では、日付の計算が繰り返し必要になります。関数で自動化しておくと、確認の手間が減ります。
締め日が月末なら、取引日から当月の月末を求めるだけです。締め日が二十日なら、年月日から日付を作る関数で、当月の二十日を求めます。取引日が二十日を過ぎていれば翌月の締め日になるので、条件で分岐します。
支払日は、締め日を基準に計算します。翌月末払いなら、締め日の翌月末。翌々月十日払いなら、二か月後の月初に九を足します。
これらを列として持てば、取引を入力するだけで締め日と支払日が自動で出ます。支払日から今日を引けば、残り日数も分かります。
支払日が土日にあたる場合の扱いも決めておいてください。前倒しか後ろ倒しか。営業日を扱う関数と組み合わせれば、自動化できます。
締め日や支払サイトは取引先ごとに違うことが多いので、取引先マスタに持たせて検索で引く形にしてください。数式に埋め込むと、取引先が増えるたびに数式を直すことになります。
よくある質問
Q. 数値が表示されます
セルの表示形式が標準になっています。日付形式に変えてください。
Q. 当月の月末を出したいのですが
月数に零を指定してください。
Q. 月初を出したいのですが
前月末に一を足します。月数に負の一を指定して、結果に一を加える形です。
Q. うるう年は考慮されますか
されます。自動的に正しい日数になります。
Q. 締め日が月末ではないのですが
年月日から日付を作る関数で、締め日を指定してください。締め日はセルに置いて参照する形が保守しやすくなります。
Q. 営業日で調整したいのですが
営業日を扱う関数と組み合わせてください。祝日の一覧を用意すれば除外できます。
Q. 月数に小数を指定できますか
整数として扱われます。小数を指定しても切り捨てられます。
Q. 期間の日数を出したいのですが
終了日から開始日を引いてください。日付は連続した数値なので、差が日数になります。
まとめ
- 書式は
=EOMONTH(基準日, 月数)。0が当月 - 月初は
=EOMONTH(A1, -1) + 1 - 月次集計は
>=月初と<翌月1日で書く(時刻対策) - 締め日・支払日の計算に強い
- 年またぎ・うるう年を自動で処理する
- 結果が数字なら表示形式を「日付」に
