「月末締め・翌月末払い」の支払期日、毎回カレンダーを見て手入力していませんか?
月末日は28日・30日・31日と月ごとに変わります。スプレッドシートで手入力していると、うるう年の2月などでミスが起きやすいですよね。
GoogleスプレッドシートのEOMONTH関数を使えば、Nヶ月後の月末日を自動で取得できます。月末の日数を覚えておく必要はありません。
この記事では、EOMONTH関数の基本から実務での活用パターンまで解説します。
スプレッドシートのEOMONTH関数とは?月末日を自動取得する関数
EOMONTH関数は、指定した月数だけ前後した月の末日を返す関数です。
読み方は「イーオーマンス関数」。End of Monthの略です。
たとえば、2026/1/15を基準に1ヶ月後の月末を求めると、2026/2/28が返ります。うるう年の判定も自動で行ってくれますよ。
構文と引数
EOMONTH関数の構文はこちらです。
=EOMONTH(開始日, 月数)
| 引数 | 必須 | 説明 |
|---|---|---|
| 開始日 | はい | 基準となる日付 |
| 月数 | はい | 開始日から何ヶ月後(マイナスで何ヶ月前) |
引数は2つだけなので、覚えやすいですよね。
月数に小数を指定した場合は、小数部分が切り捨てられます。たとえば1.9を指定すると、1として処理されます。
月数に0を指定すると当月末になる
月数に0を指定すると、開始日と同じ月の末日が返ります。
=EOMONTH("2026/3/10", 0)
結果は2026/3/31です。
「当月末の日付がほしい」という場面はよくあります。月数=0のパターンはぜひ覚えておいてください。
EOMONTH関数の基本的な使い方
ここからは、具体的な数式と計算結果を見ていきましょう。
翌月末を取得する(月数=1)
月数に1を指定すると、1ヶ月後の月末日が返ります。
=EOMONTH("2026/1/15", 1)
結果は2026/2/28です。2026年はうるう年ではないので、2月の末日は28日になります。
月末が何日かを気にする必要がないのがEOMONTH関数の強みですよ。
Nヶ月後の月末を取得する
月数を変えれば、何ヶ月後でも対応できます。
=EOMONTH("2026/3/10", 2)
3月10日の2ヶ月後の月末なので、結果は2026/5/31です。
=EOMONTH("2026/3/10", 6)
6ヶ月後の月末は2026/9/30。9月は30日までなので、自動で30日が返ります。
前月末を取得する(月数=-1)
月数にマイナスの値を指定すると、過去の月末を取得できます。
=EOMONTH("2026/3/10", -1)
結果は2026/2/28。1ヶ月前の月末日です。
前月の締め日を参照したいときに便利ですよ。
実務で使える活用例
EOMONTH関数は、請求書管理や支払期日の計算で真価を発揮します。
TODAY関数と組み合わせて当月末を動的に取得
TODAY関数(今日の日付を返す関数)と組み合わせると、常に最新の月末日が取得できます。
=EOMONTH(TODAY(), 0)
この数式は「今月の末日」を常に返します。ファイルを開くたびに自動更新されるので、月が変わっても修正不要です。
よく使うパターンをまとめておきます。
| 数式 | 取得できる日付 |
|---|---|
=EOMONTH(TODAY(),0) | 今月末 |
=EOMONTH(TODAY(),1) | 翌月末 |
=EOMONTH(TODAY(),-1) | 先月末 |
=EOMONTH(TODAY(),-1)+1 | 当月1日(月初) |
最後の当月1日の取り方がポイントです。先月末に1日足すと、当月の1日になります。覚えておくと便利ですよ。
月末締め・翌月末払いの支払期日を自動計算
請求書の支払期日を自動計算する例を見てみましょう。
A列に請求書発行日を入力し、B〜D列で締め日・支払期日を自動計算します。
| A列(発行日) | B列(当月末/締め日) | C列(翌月末払い) | D列(翌々月末払い) | |
|---|---|---|---|---|
| 数式 | 手入力 | =EOMONTH(A2,0) | =EOMONTH(A2,1) | =EOMONTH(A2,2) |
| 行2 | 2026/1/15 | 2026/1/31 | 2026/2/28 | 2026/3/31 |
| 行3 | 2026/2/20 | 2026/2/28 | 2026/3/31 | 2026/4/30 |
| 行4 | 2026/3/10 | 2026/3/31 | 2026/4/30 | 2026/5/31 |
| 行5 | 2026/4/28 | 2026/4/30 | 2026/5/31 | 2026/6/30 |
| 行6 | 2026/5/5 | 2026/5/31 | 2026/6/30 | 2026/7/31 |
数式をB2セルに入力して下方向にコピーするだけです。月ごとの末日の違いもEOMONTH関数が自動で処理してくれます。
TIP
「月末締め・翌月末払い」ならC列、「月末締め・翌々月末払い」ならD列を支払期日として使ってください。
EDATE関数・DATE関数との使い分け
EOMONTH関数と似た機能を持つ関数が2つあります。それぞれの違いを整理しておきましょう。
EOMONTH vs EDATE 比較表(月末固定 vs 同日維持)
EDATE関数(Nヶ月後の同日を返す関数)との違いは、返す日付の基準です。
| 比較項目 | EOMONTH | EDATE |
|---|---|---|
| 返す日付 | Nヶ月後の月末 | Nヶ月後の同日 |
| 例: 1/15の1ヶ月後 | 2/28(月末) | 2/15(同日) |
| 例: 1/31の1ヶ月後 | 2/28(月末) | 2/28(同日※) |
| 主な用途 | 締め日・支払期日 | 契約更新日・定期タスク |
※ EDATEで31日の1ヶ月後を求めると、2月には31日がないため28日(末日)に丸められます。
使い分けのポイントはシンプルです。
- 「月末」を基準にしたい → EOMONTH関数
- 「同じ日付」を維持したい → EDATE関数
支払期日の計算にはEOMONTH、契約更新日の計算にはEDATEが向いていますよ。
DATE(YEAR,MONTH+1,0)との比較 ── EOMONTHの優位性
EOMONTH関数を使わずに月末日を求める方法もあります。DATE関数(年・月・日から日付を作る関数)を使う方法です。
=DATE(YEAR(A2), MONTH(A2)+1, 0)
「翌月の0日目」を指定すると、当月の末日にロールバックされる仕組みです。結果はEOMONTH関数と同じになります。
ただし、EOMONTH関数のほうがおすすめです。理由を比較してみましょう。
| 比較項目 | EOMONTH | DATE関数の組み合わせ |
|---|---|---|
| 当月末 | =EOMONTH(A2,0) | =DATE(YEAR(A2),MONTH(A2)+1,0) |
| 翌月末 | =EOMONTH(A2,1) | =DATE(YEAR(A2),MONTH(A2)+2,0) |
| 3ヶ月前の月末 | =EOMONTH(A2,-3) | =DATE(YEAR(A2),MONTH(A2)-2,0) |
EOMONTH関数のほうが数式が短く、意図も読み取りやすいですよね。
DATE関数の方法は「0日目ロールバック」という裏技的な仕組みです。知っていると便利ですが、チームで共有するシートにはEOMONTH関数を使うほうが親切ですよ。
よくあるエラーと対処法
EOMONTH関数で発生しやすいエラーと、その解決方法をまとめます。
シリアル値(数字)が表示される
EOMONTH関数は内部的にシリアル値を返します。「46112」のような数字が表示された場合は、表示形式を変更するだけで解決します。
セルを選択して「表示形式」→「数字」→「日付」を選んでください。
#VALUE! エラーが出る
開始日に文字列が入っている可能性があります。日付に見えても、実は文字列として入力されているケースがよくあります。
セルの表示形式が「書式なしテキスト」になっていないか確認してください。文字列を日付に変換するには、VALUE関数(文字列を数値に変換する関数)が使えます。
#NUM! エラーが出る
計算結果が日付の有効範囲外になっています。月数に極端に大きな値を指定すると発生します。
通常の業務で使う範囲であれば、このエラーはほぼ起きません。
NOTE
EOMONTH関数はExcelとGoogleスプレッドシートで完全互換です。同じ構文・同じ結果で動作するので、Excelユーザーとファイルを共有するときも安心してください。
まとめ
EOMONTH関数は、Nヶ月後の月末日を自動取得する関数です。
この記事で紹介した使い方をおさらいします。
- 当月末:
=EOMONTH(A2, 0) - 翌月末:
=EOMONTH(A2, 1) - 前月末:
=EOMONTH(A2, -1) - TODAY関数と組み合わせ:
=EOMONTH(TODAY(), 0)で常に最新の月末日 - 支払期日の自動計算: 月末締め・翌月末払いの管理に最適
月末日の手入力ミスや、うるう年の考慮漏れとはもうサヨナラです。
まずは =EOMONTH(TODAY(), 0) で今月の末日を表示するところから試してみてください。
