【Excel】EOMONTHで月末日を求める方法|翌月末・うるう年・日付表示

【Excel】EOMONTHで月末日を求める方法|翌月末・うるう年・日付表示
🛡️ 超解決

Excelで締め日や集計期間の末日を求めるなら、EOMONTH関数を使うと、30日・31日の違いやうるう年を月ごとに入力し直さずに済みます。ただし、求められるのは暦の月末です。会社独自の締め日や銀行の最終営業日を自動判定する関数ではありません。

基本形は=EOMONTH(開始日,月)です。A2に基準となる日付がある場合、=EOMONTH(A2,0)でその月の最終日が得られます。ここでは同月・翌月・前月の違いを確かめ、日付として表示するところまで説明します。

ADVERTISEMENT

1. 開始日と「月」の意味を押さえる

第1引数の開始日は、何月を基準にするかを決める日付です。月の1日である必要はなく、同じ年月の日付なら、その月の末日は同じになります。第2引数には、基準の月から何か月ずらすかを指定します。0は同じ月、1は翌月、-1は前月です。1を入れても「1日後」にはなりません。

=EOMONTH(A2,0)
=EOMONTH(A2,1)
=EOMONTH(A2,-1)

たとえばA2が2026年9月20日なら、順に2026年9月30日、10月31日、8月31日です。日付の何日という部分を足すのではなく、対象の月を決めてからその末日を返します。12月から翌年1月への移動など、年をまたぐ計算も同じ式で扱えます。

2026年8月・9月・10月のカレンダー。9月20日を青枠で囲み、月数-1の8月31日、0の9月30日、1の10月31日を丸で強調。
第2引数は日数ではなく月数です。対象月の最終日を返し、休日による調整は行いません。

「月」に小数を指定した場合、Microsoftの仕様では小数部分が切り捨てられます。端数を使って月の途中の日を求める用途には向きません。実務用の入力欄は整数の月数にそろえ、意図しない1.5などを入れないようにすると、結果を読み違えにくくなります。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 実際の日付を使って最初の式を作る

練習用のシートでA1に「基準日」、B1に「同月末」を入力します。A2には=DATE(2026,9,20)、B2には次の式を入力してください。DATE関数で年・月・日を指定すると、日付を文字列として解釈する環境差を避けて例を確かめられます。

=EOMONTH(A2,0)

B2が日付ではなく数字で表示されても、それだけで式の失敗ではありません。Excelは日付をシリアル値として扱います。B2を選択してCtrl+1を押し、[表示形式]の[日付]を選ぶか、[ユーザー定義]でyyyy/mm/ddを指定します。正しく入力できていれば2026/09/30になります。

複数行へコピーするときは、各行の基準日を使うならA2の参照を固定しません。B3ではA3、B4ではA4へ変わることを確認します。一方、全行で共通の基準日を使う表なら$A$2と固定します。式を下へコピーする前に、参照を動かすか固定するかを決めてください。

入力日の列と結果列を分けておくと、誤りが出たときに元の日付を確認できます。最初からA列の値を結果で上書きせず、数件を照合してから必要な場所へ展開します。構文とエラー条件はMicrosoftのEOMONTH関数の説明で確認できます。

3. うるう年と年越しで計算を確認する

末日の計算を使う表では、普段使う月だけでなく2月と12月も確かめると安心です。次の例はいずれも日付形式で表示した結果です。年を省略して「2月は28日」と固定せず、基準日の年を含めて比較します。

式 結果
=EOMONTH(DATE(2026,2,10),0) 2026/02/28
=EOMONTH(DATE(2028,2,10),0) 2028/02/29
=EOMONTH(DATE(2026,12,15),1) 2027/01/31
=EOMONTH(DATE(2026,1,15),-1) 2025/12/31

2028年2月のような月に、基準日へ単純に30日を足す方法を使うと、月末にはなりません。EOMONTHは月末を返すので、「翌月の同じ日」を求める計算とも目的が異なります。請求条件が「翌月末」なのか「30日後」なのかを、式を選ぶ前に確認してください。

同月末は=DATE(YEAR(A2),MONTH(A2)+1,0)でも表せます。翌月の0日、つまり前月の最終日を求める考え方です。EOMONTHの結果を別の考え方で確認したいときに使えますが、同じ表で複数の方式を混在させる必要はありません。保守しやすい方にそろえます。

4. 翌月初・翌月10日・現在月の末日へ応用する

同月の末日に1日を足すと翌月1日、10日を足すと翌月10日になります。A2が2026/09/20なら、次の結果はそれぞれ2026/10/01、2026/10/10です。「翌月末」に10を足す式と間違えると、さらに次の月へ進んでしまいます。

=EOMONTH(A2,0)+1
=EOMONTH(A2,0)+10

現在の日付を基準にする一覧なら、開始日にTODAY関数を入れます。

=EOMONTH(TODAY(),0)

これはブックを開いたときや再計算時などの現在日付に基づきます。過去に発行した請求書の支払期限を固定したい場合は、TODAYではなく、請求日などを記録したセルを参照します。月が替わって過去帳票の期限まで変わる設計にしないことが重要です。

月末が土日祝日でも、EOMONTHはその月末日を返します。支払日を前営業日へずらすか翌営業日へずらすかは、契約や社内規程を確認して別に設計します。自動的に銀行営業日になるという説明ではありません。現在日付が更新されない場合の再計算設定はTODAY関数の公式説明を確認できます。

5. 数字・エラー・不自然な古い日付が出たとき

数字が出るだけなら表示形式を確認します。日付にしたら#####になった場合は、列幅が足りない可能性があるため広げて確認してください。表示を短くするだけで、元の日付の年を誤っている問題が直るわけではありません。まず年を含む形式で内容を確かめます。

エラーや想定外の日付なら、基準セルがExcelの日付として入力されているかを調べます。別セルの=ISNUMBER(A2)がTRUEなら数値ですが、任意の数値でもTRUEになるので、それだけで正しい業務日付とは判断できません。元の入力や数式バーと照合します。数字に見える文字列や、形式の異なるインポート日付は、コピーを残してから取り込み方法を見直します。

基準日が未入力の行へ数式をコピーすると、意図しない古い日付が出る原因になります。入力待ちを空欄にしたいなら、空欄を先に判定します。ただし、これは不正な文字列まで正しい日付へ変換する式ではありません。

=IF(A2="","",EOMONTH(A2,0))

開始日や計算結果が日付として扱える範囲を外れると、EOMONTHは#NUM!を返します。極端な月数や参照先の誤りを確認してください。IFERRORで最初からすべて空欄にすると原因が見えなくなるため、まずエラーの出ている行を確認します。

6. 完成した表の確認と元に戻す方法

完成後は、基準日の変更に連動して結果が変わること、2月・年越しの例が正しいこと、空欄の行が予定どおり表示されることを確認します。月数を別セルに置いた場合は、コピー後も正しい月数セルを参照しているか確認してください。結果が全行同じなら、基準日を誤って絶対参照にした可能性があります。

見た目だけを戻す場合は、表示形式を以前の形式へ戻します。数式を入力・コピーした直後なら、取り消す操作を確認して[元に戻す]を使います。これは操作履歴を戻す機能で、選択した結果列だけに対象を限定するものではありません。後から結果列だけを直す場合は数式を修正するか、保管していた原本から対象セルを復元し、参照先と結果を確認します。

結果を値として貼り付ければ固定できますが、以後は基準日の変更に追従しません。提出時の固定版と計算を続ける作業版を分けておくと、更新漏れと意図しない更新の両方を防ぎやすくなります。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】