エクセルである日付が月末かどうかを判定したいとき、どのように操作すればよいか迷ったことはありませんか。
請求書の作成や給与計算、契約期限の管理など、月末を正確に判定する必要がある場面は業務で頻繁に発生します。
この記事では、エクセルで月末を判定する方法について、関数を使った判定式、指定した月の最終日の求め方、うるう年への対応まで、実務で役立つ手順をわかりやすく解説します。
ポイントは以下の3点です。
・EOMONTH関数で月末日を取得する方法
・日付が月末かどうかを判定する数式の作り方
・翌月や前月の月末も簡単に求めるテクニック
それでは詳しく見ていきましょう。
エクセルで月末の日付を求める方法1【EOMONTH関数を使う】
エクセルで月末の日付を求める最も簡単で確実な方法は、EOMONTH関数を使う方法です。
EOMONTH関数は、指定した日付から指定した月数だけ前後した月の「月末日」を返す関数です。
たとえば、A2セルに「2025/10/23」という日付が入力されているとします。
この日付が含まれる月の月末日を求めるには、以下の数式を入力します。
=EOMONTH(A2,0)

この場合、結果として「2025/10/31」が返されます。
EOMONTH関数の第2引数は、基準日から何か月後(または何か月前)の月末を取得するかを指定します。
・0…当月の月末
・1…翌月の月末
・-1…前月の月末
翌月の月末を求める
翌月の月末日を求めたい場合は、第2引数に1を指定します。
=EOMONTH(A2,1)

A2セルが「2025/10/23」なら、結果は「2025/11/30」となります。
前月の月末を求める
前月の月末日を求めたい場合は、第2引数に-1を指定します。
=EOMONTH(A2,-1)

A2セルが「2025/10/23」なら、結果は「2025/9/30」となります。
操作のポイント【EOMONTH関数の第2引数で当月・翌月・前月を指定】
エクセルで月末かどうかを判定する方法1【日付の比較】
ある日付が月末かどうかを判定したい場合、EOMONTH関数で求めた月末日と比較する方法が最もシンプルです。
その日付が「月末日と一致するかどうか」を確認するだけで判定できます。
A2セルの日付が月末かどうかを判定し、月末なら「月末」、そうでなければ空白を表示する数式は以下のとおりです。
=IF(A2=EOMONTH(A2,0),”月末”,””)
この数式の仕組みを説明しましょう。
・EOMONTH(A2,0) … A2に入力された日付が属する月の月末日を取得
・A2=EOMONTH(A2,0) … A2がその月末と一致するか判定
・一致する場合は「月末」、一致しない場合は空白を返す
たとえば、A2セルが「2025/10/31」なら「月末」、「2025/10/23」なら空白が表示されます。


○×で判定する方法
月末なら○、それ以外なら×を表示したい場合は、以下の数式を使います。
=IF(A2=EOMONTH(A2,0),”○”,”×”)


視覚的にすぐ判断できる形式にしたい場合に便利です。
TRUE/FALSEで判定する方法
TRUE/FALSEの論理値で判定したいだけであれば、IF関数を使う必要はありません。
比較式のみで判定できます。
=A2=EOMONTH(A2,0)


月末ならTRUE、それ以外はFALSEが返されます。
操作のポイント【EOMONTH関数の値と比較するだけで月末判定が可能】
エクセルで月末かどうかを判定する方法2【DAY関数と次の日を使う】
EOMONTH関数以外にも、DAY関数を使って月末を判定する方法があります。
この方法では、対象の日付に1日を加え、その結果の「日」の値が 1 になるかどうかで月末かどうかを判断します。
月末日の翌日は必ず翌月の1日になるという仕組みを利用したものです。
=IF(DAY(A2+1)=1,”月末”,””)

この数式の仕組みを説明します。
・A2+1で対象日の翌日を計算
・DAY関数でその日付から「日」だけを取得
・その値が1なら「月末」と判定
例えば、A2セルが「2025/10/31」であれば、A2+1 は「2025/11/1」となり、DAY関数の結果が1となるため「月末」と表示されます。
EOMONTH関数が使えない場合の代替方法
古いバージョンのエクセルで EOMONTH 関数が使用できない場合、この方法が役立ちます。
DAY関数は基本的な関数のため、どのバージョンでも使用できます。
操作のポイント【翌日が1日になるかで月末を判定】
エクセルで指定した年月の月末日を求める方法
日付データではなく、「年」と「月」を別々に入力して月末日を求めたい場合があります。
たとえば、A2セルに年(2025)、B2セルに月(2)が入力されているケースです。
DATE関数を使った方法
DATE関数の日に0を指定すると、指定した月の前月末日が返されるという特性を利用します。
つまり、「翌月の 0 日目」は「当月の月末日」として扱われます。
=DATE(A2,B2+1,0)

この数式により、A2セルの年と B2セルの月に対応する月末日を取得できます。
例えば、A2 が 2025、B2 が 2 の場合、結果は「2025/2/28」となります。
うるう年であれば、自動的に「2024/2/29」のように 29 日が返されます。
EOMONTH関数を使った方法
年と月が個別に入力されている場合でも、EOMONTH関数を使って月末日を求めることができます。
まず DATE 関数で日付データを作成し、そこに EOMONTH 関数を適用する方法です。
=EOMONTH(DATE(A2,B2,1),0)

DATE(A2,B2,1)で指定した年月の1日を作成し、その月の月末をEOMONTH関数で取得する仕組みです。
どちらの方法でも同じ結果が得られますが、DATE関数を使った方法の方がシンプルと言えるでしょう。
操作のポイント【DATE関数で”翌月0日”を指定すると当月末日が取得できる】
エクセルで月末日数を求める方法
その月が何日まであるのか、つまり「月末の日付(31・30・28・29など)」だけを数値として取得したい場合があります。
この場合は、EOMONTH関数とDAY関数を組み合わせる方法が便利です。
=DAY(EOMONTH(A2,0))

この数式により、A2セルの日付が含まれる月の最終日の日付(=日数)が数値で返されます。
たとえば、A2セルが「2025/10/23」なら、結果は「31」となります。
翌月の日数を求める
翌月の日数を知りたい場合は、EOMONTH関数の第2引数を「1」に変更します。
=DAY(EOMONTH(A2,1))

これで、A2セルの日付の翌月が何日まであるかを取得できます。
うるう年の2月も自動判定
この方法なら、2月のうるう年判定も自動で行われます。
たとえば、2024年2月なら「29」、2025年2月なら「28」が返され、特別な判定処理を行う必要はありません。
操作のポイント【EOMONTH関数とDAY関数で月末日数を取得】
エクセルで月末営業日を求める方法
実務では、単なる月末日ではなく、月末の営業日(土日祝日を除いた最終営業日)を求めたい場合があります。
このような場合は、WORKDAY関数やNETWORKDAYS関数を使用します。
WORKDAY関数を使った方法
WORKDAY関数は、指定した日付から指定した営業日数だけ前後に移動した日付を返す関数です。
月末営業日を求めるには、翌月の1日から1営業日前に戻るという考え方を使います。
=WORKDAY(EOMONTH(A2,0)+1,-1)

この数式は次のステップで動きます。
・EOMONTH(A2,0)で当月の月末日を取得
・その翌日=翌月1日を「+1」で作成
・WORKDAY関数でそこから1営業日前に戻る
これにより、土日を除いた最終営業日が求められます。
祝日も除外する方法
土日だけでなく 祝日も除外したい場合 は、WORKDAY関数の第3引数に「祝日リスト」を追加します。
=WORKDAY(EOMONTH(A2,0)+1,-1,祝日範囲)

祝日範囲には、祝日が入力されているセル範囲を指定します。
たとえば、E2〜E20に祝日の一覧が入力されている場合は、次のように指定します。
=WORKDAY(EOMONTH(A2,0)+1,-1,$E$2:$E$20)

これで、土日祝日を除いた月末営業日が取得できます。
操作のポイント【WORKDAY関数で営業日ベースの月末を取得】
エクセルで月末までの残り日数を求める方法
今日から月末までの残り日数を計算したい場合は、月末日から今日の日付を引くだけで求められます。
=EOMONTH(TODAY(),0)-TODAY()

この数式で、今日から月末までの残り日数が計算できます。
TODAY関数は、現在の日付を返す関数です。
今日を含めた日数を計算する
今日を含めて数えたい場合は、計算結果に +1 を加えます。
=EOMONTH(TODAY(),0)-TODAY()+1

これで、今日を含めた月末までの日数が取得できます。
特定の日付から月末までの日数
TODAY関数の代わりに特定のセル(例:A2)を参照すれば、任意の日付から月末までの日数を計算できます。
=EOMONTH(A2,0)-A2

この方法は、プロジェクトの期限管理や納期計算など、日数管理が必要な場面で役立ちます。
操作のポイント【月末日から日付を引いて残り日数を計算】
エクセルで月初と月末を同時に表示する方法
月初と月末をまとめて表示したい場合は、DATE関数とEOMONTH関数を組み合わせて求めることができます。
月初の日付を求める
ある日付から、その月の1日(=月初)を取得するには、DATE関数を使います。
=DATE(YEAR(A2),MONTH(A2),1)

この数式で、A2セルの日付が含まれる月の1日が表示されます。
月初と月末を文字列で表示する
月初と月末を「10/1~10/31」のような形式で表示したい場合は、TEXT関数と&演算子を利用します。
=TEXT(DATE(YEAR(A2),MONTH(A2),1),”M/D”)&”~”&TEXT(EOMONTH(A2,0),”M/D”)

これにより、視認性の高い期間表示が可能になります。
操作のポイント【DATE関数で月初、EOMONTH関数で月末を取得】
エクセルで月末判定ができない原因と対策
月末判定がうまくいかないことがあります。
ここでは、よくあるトラブルとその解決方法を解説します。
原因1:データが日付形式になっていない
もっとも多い原因は、セルに入力されているデータが日付形式ではなく文字列になっていることです。
見た目は日付でも、エクセル内部で文字列扱いになっていると、EOMONTH関数やDATE関数が正しく動作しません。
対策
対象セルを選択し、数式バーや配置(左揃え/右揃え)で確認しましょう。
文字列は左揃え、日付は右揃えで表示されることが多いです。
文字列の日付はDATEVALUE関数で日付形式に変換できます。
=IF(DATEVALUE(A2)=EOMONTH(DATEVALUE(A2),0),”月末”,””)
この式で、文字列として入力された日付でも月末判定が可能です。
原因2:EOMONTH関数が使えない
古いエクセルでは EOMONTH 関数が利用できない場合があります。
対策
EOMONTHが使えない環境では、DATE関数の特性を使って代替できます。
=DATE(YEAR(A2),MONTH(A2)+1,0)
この式は EOMONTH と同様に当月の月末日を返します。
月末判定は次のように行います。
=IF(A2=DATE(YEAR(A2),MONTH(A2)+1,0),”月末”,””)
この方法なら、どのバージョンのエクセルでも動作します。
原因3:エラー値が表示される
#VALUE! や #NUM! などのエラーが出る場合、参照セルが空白であったり無効な日付が入力されていることが原因です。
対策
IFERROR関数を組み合わせて、エラー時の表示を制御しましょう。
=IFERROR(IF(A2=EOMONTH(A2,0),”月末”,””),””)
この式では、エラーの場合は空白を表示し、正常なときだけ判定結果を返します。
原因4:時刻付きの日付で判定が失敗する
セルに時刻が含まれていると、完全一致の比較が失敗することがあります。
例:2025/10/31 10:30 のような値では、そのままでは月末判定が正しく行われません。
対策
INT関数で時刻部分を切り捨ててから比較すると確実です。
=IF(INT(A2)=EOMONTH(A2,0),”月末”,””)
INTは日付の小数部(時刻)を切り捨てるため、日付だけで比較できます。
操作のポイント【データ形式確認が最重要。EOMONTHが使えない場合はDATEで代替】
月末判定がうまくいかないときは、まず ①セルが日付形式かどうか、②参照セルに時刻や無効な値が含まれていないか を確認しましょう。
EOMONTHが使えない環境では DATE 関数で代替するのが確実です。
まとめ エクセルで月末の判定(最終日・指定した月の末尾・関数・日付を求める)する方法
エクセルで月末を判定・取得する方法をまとめると、以下の通りです。
・EOMONTH関数で月末日を簡単に取得できる
・月末判定は、対象日とEOMONTH関数の結果を比較する
・DAY関数と翌日を使った判定方法も有効
・DATE関数で日を0に指定すると月末日が取得できる
・WORKDAY関数で月末営業日も求められる
・月末までの残り日数は、月末日から現在日を引いて計算
・データが文字列の場合はDATEVALUE関数で日付形式に変換する
これらの方法を状況に応じて使い分けることで、さまざまな月末関連の処理に対応できます。
特に EOMONTH関数 は月末日の取得に最も便利な関数ですので、ぜひ覚えておきましょう。
月末判定や月末日の取得をマスターすれば、以下のような業務で活用できます。
・請求書作成での締め日計算
・給与計算での月末処理
・契約管理での期限判定
・プロジェクト管理でのマイルストーン設定
うるう年も自動で判定されるため、2月の処理でも安心です。
さらに、月末営業日の計算もできるようになれば、実務での応用範囲は一層広がります。
これらのテクニックを使いこなして、エクセル作業の効率を大幅に高めましょう。


コメント