概要
「月末の営業日(平日)」を求めたいときは、EOMONTH関数で月末日を取得し、それをWORKDAY関数に渡して「直近の営業日」を計算するのが最短です。基本形は =WORKDAY(EOMONTH(日付,0),0)。これで「その月の最終営業日」が一発で求められます。祝日を除外したい場合は、祝日一覧を第3引数に指定します。
基本の使い方
書式
=WORKDAY(EOMONTH(日付,0),0, [祝日範囲])
- EOMONTH(日付,0) → 指定月の月末日を返す
- WORKDAY(開始日,日数) → 開始日から指定営業日数後の日付を返す
- 日数に「0」を指定すると「開始日が営業日ならその日、そうでなければ直近の営業日」を返します
具体例
今月の月末営業日を求める
=WORKDAY(EOMONTH(TODAY(),0),0)
今日の属する月の「最終営業日」を返します。
指定日A2の属する月の月末営業日
=WORKDAY(EOMONTH(A2,0),0)
A2が2025/12/17なら、2025年12月の最終営業日を返します。
祝日を考慮した月末営業日
=WORKDAY(EOMONTH(A2,0),0,$H$2:$H$20)
H2:H20に祝日一覧を入力しておけば、祝日も除外した「最終営業日」が求められます。
応用テンプレート
翌月の月末営業日
=WORKDAY(EOMONTH(A2,1),0)
A2の属する月の翌月末営業日を返します。
前月の月末営業日
=WORKDAY(EOMONTH(A2,-1),0)
月末営業日を「yyyy/mm/dd」形式で表示
=TEXT(WORKDAY(EOMONTH(A2,0),0),"yyyy/mm/dd")
月末営業日を「曜日付き」で表示
=TEXT(WORKDAY(EOMONTH(A2,0),0),"yyyy/mm/dd (ddd)")
よくあるつまずきと対策
月末が土日の場合
EOMONTHで返された日付が土日なら、WORKDAYが自動的に直前の平日へ調整します。
祝日を除外したい場合
祝日一覧を第3引数に指定してください。範囲は絶対参照にすると便利です。
月末営業日が「月初」にずれるケース
祝日や土日が月末に集中すると、最終営業日が月初近くになることがあります。これは正しい動作です。
WORKDAY.INTLで柔軟な週末設定
土日以外を休日にしたい場合は WORKDAY.INTL を使い、週末パターンを指定します。
例題
問題1: 今日の属する月の「月末営業日」をB2に表示してください。
=WORKDAY(EOMONTH(TODAY(),0),0)
問題2: A2の日付が属する月の「月末営業日」をC2に表示してください。
=WORKDAY(EOMONTH(A2,0),0)
問題3: A2の日付が属する月の「月末営業日」を祝日一覧H2:H20を除外してD2に表示してください。
=WORKDAY(EOMONTH(A2,0),0,$H$2:$H$20)
問題4: A2の日付が属する「翌月の月末営業日」をE2に表示してください。
=WORKDAY(EOMONTH(A2,1),0)
問題5: A2の日付が属する月の「月末営業日」をF2に「yyyy/mm/dd (ddd)」形式で表示してください。
=TEXT(WORKDAY(EOMONTH(A2,0),0),"yyyy/mm/dd (ddd)")
まとめ
月末営業日は EOMONTHで月末日を取得 → WORKDAYで営業日に補正 という流れで求めます。祝日を考慮するなら第3引数に祝日範囲を渡し、翌月・前月もEOMONTHの引数を変えるだけ。表示形式をTEXTで整えれば帳票やレポートに即利用可能です。これで「月末営業日」の計算はシンプルかつ確実に行えます。
