スプレッドシートのEOMONTH関数の使い方|Nヶ月後の月末日付を自動取得

スポンサーリンク

「月末締め・翌月末払い」の支払期日、毎回カレンダーを見て手入力していませんか?

月末日は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)
行22026/1/152026/1/312026/2/282026/3/31
行32026/2/202026/2/282026/3/312026/4/30
行42026/3/102026/3/312026/4/302026/5/31
行52026/4/282026/4/302026/5/312026/6/30
行62026/5/52026/5/312026/6/302026/7/31

数式をB2セルに入力して下方向にコピーするだけです。月ごとの末日の違いもEOMONTH関数が自動で処理してくれます。

TIP

「月末締め・翌月末払い」ならC列、「月末締め・翌々月末払い」ならD列を支払期日として使ってください。

EDATE関数・DATE関数との使い分け

EOMONTH関数と似た機能を持つ関数が2つあります。それぞれの違いを整理しておきましょう。

EOMONTH vs EDATE 比較表(月末固定 vs 同日維持)

EDATE関数(Nヶ月後の同日を返す関数)との違いは、返す日付の基準です。

比較項目EOMONTHEDATE
返す日付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関数のほうがおすすめです。理由を比較してみましょう。

比較項目EOMONTHDATE関数の組み合わせ
当月末=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) で今月の末日を表示するところから試してみてください。

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