EOMONTH関数について
前回の EDATE関数では「N か月後の同じ日」を計算しましたが、今度は「月末日」を指定する関数です。
- 今月の月末
- 来月の月末
- 3か月後の月末
このような 月末を返す関数 が、EOMONTH関数(イーオーマンス関数・エンドオブマンス関数) です。
「EOMONTH」は「End Of MONTH」の略。「月の最後」という、わかりやすい名前ですね。EDATE関数との違いを確認しながら読み解いてください。
EOMONTH関数の構文
=EOMONTH(開始日, 月数)
書き方は EDATE関数と そっくり です。
引数も「開始日」と「月数」の2つで同じ。違いは、結果が「N か月後のその日」ではなく「N か月後の月末」になることです。
たとえば、A1 に「2025/5/10」と入っているとき、月数に「0」を指定すると、その月の月末 が返ります。
:::excel
A1=2025/5/10
C1==EOMONTH(A1,0) -> 2025/5/31 *
:::
開始日は5月10日ですが、結果は「2025/5/31」。日にち(10日)は無視され、その月の最終日が返るのがポイントです。
「1」なら来月末、「-1」なら先月末です。
:::excel
A1=2025/5/10
C1==EOMONTH(A1,1) -> 2025/6/30 *
C2==EOMONTH(A1,-1) -> 2025/4/30 *
:::
1 で翌月末(6/30)、-1 で前月末(4/30)。EDATEと同じく、プラスで未来、マイナスで過去です。
月末日が動的に変わる
EOMONTH関数の便利なところは、月によって最終日が違っても、ちゃんと月末を返す ことです。
:::excel
A1=2025/1/15
B1==EOMONTH(A1,0) -> 2025/1/31
A2=2025/2/15
B2==EOMONTH(A2,0) -> 2025/2/28
A3=2024/2/15
B3==EOMONTH(A3,0) -> 2024/2/29
A4=2025/4/15
B4==EOMONTH(A4,0) -> 2025/4/30 *
:::
注目してほしいのが3行目。2024年2月はうるう年なので、ちゃんと2/29 を返しています。
1月は31日、2月は28日(うるう年29日)、4月は30日。「今月が何日まであるか」を人間が意識しなくても、EOMONTH関数が自動で正しい月末を返してくれます。
前回EDATEでは「1/31の1か月後が2/28に丸まる」というクセに悩みましたが、EOMONTHは最初から「月末を返す」関数なので、こういう迷いがありません。
ちょっとした実務シーン
1. 月末締めの請求書
毎月、月末に締める請求書を作っています。
:::excel
A1=請求日
B1=締切日
A2=2025/5/10
B2==EOMONTH(A2,0) -> 2025/5/31 *
:::
B2 に「=EOMONTH(A2, 0)」と入れれば、「2025/5/31」が返ります。
来月に同じシートを使うときも、請求日を「2025/6/10」に変えるだけで、締切日が「2025/6/30」に自動で変わります。
月ごとに手で「今月は31日まで…」と確認する必要がありません。
2. 翌月末払いの計算
「月末締め、翌月末払い」のような取引のときに使えます。
:::excel
A1=請求日
B1=支払期限
A2=2025/5/10
B2==EOMONTH(A2,1) -> 2025/6/30 *
:::
月数を「1」にするだけで、支払期限(翌月末)の「2025/6/30」が出ます。請求と支払のサイトを、関数ひとつで表現できます。
3. 年度末の計算
「今年度の最終日(3月31日)」を計算したいとき。A1 が「2025/5/10」なら、3月までは10か月先なので、
:::excel
A1=2025/5/10
C1==EOMONTH(A1,10) -> 2026/3/31 *
:::
「2026/3/31」が返ります。年度末の計算も、月数を調整するだけです。
EDATE関数と使い分ける
EDATE関数と EOMONTH関数、似ているようで使いどころが違います。前回と今回の総まとめです。
| 関数 | 結果 | 使いどころ |
|---|---|---|
| EDATE | 同じ日付 | 試用期間明け、契約更新日など「入社日と同じ日」が基準 |
| EOMONTH | 月の最終日 | 締切、月末締め、月次集計など「月末」が基準 |
同じ「2025/5/10」を起点に、3か月後を計算して比べてみましょう。
:::excel
A1=2025/5/10
C1==EDATE(A1,3) -> 2025/8/10
C2==EOMONTH(A1,3) -> 2025/8/31 *
:::
EDATEは「8/10」(同じ日にち)、EOMONTHは「8/31」(月末)。同じ引数でも、結果がはっきり違います。
「3か月後の同じ日が欲しいのか、3か月後の月末が欲しいのか」 ── これが使い分けの判断基準です。
EOMONTH を使った「月初」の計算
EOMONTH関数で「月初」を計算することもできます。発想がちょっと面白いところです。
「前月の月末 + 1日」が、当月の月初ですよね。4月30日の翌日は5月1日。この理屈を使います。
:::excel
A1=2025/5/10
C1==EOMONTH(A1,-1)+1 -> 2025/5/1 *
:::
EOMONTH(A1,-1) で前月末の「2025/4/30」、それに +1 して「2025/5/1」。月初がほしいときの定番テクニックです。「月末を出す関数で、月初を出す」という発想、知っておくといざというときに役立ちます。
結果が数字で表示されたら
これも EDATE関数と同じく、結果が「45838」のような シリアル値 で表示されることがあります。レッスン004で学んだ、日付の通し番号ですね。
書式を「日付」に変えてください。[Ctrl] + [1] から設定できます。計算は正しくできているので、表示の問題だけです。慌てずに書式を直しましょう。
まとめ
- EOMONTH関数で「N か月後 / 前の月末」を取得
- 構文:=EOMONTH(開始日, 月数)
- 「0」で今月末、「1」で来月末、「-1」で先月末
- うるう年も自動で正しく扱う
- EDATEとの使い分け:月末が欲しいか、同じ日が欲しいか
- 「月初」も EOMONTH(開始日, -1) + 1 で計算可能
これで日付関数の「ずらす」系は一通りそろいました。EDATEとEOMONTH、この2つを押さえておけば、契約・請求・締切まわりの日付計算は、ほぼほぼ対応できます。
ショートカット
- セルの書式設定:[Ctrl] + [1]