Excelでの業務日計算を行う際に、特定の曜日や月末の近くにある休暇日を除外したい場合があります。たとえば、GWやお盆、年末年始などの長期休暇を除外し、月末の最も近い水曜日または土曜日の日付を求めたいときに、どうすればその条件を追加できるのでしょうか?この記事では、ExcelのWORKDAY.INTL関数を使用して、特定の休暇期間を除外し、求めたい日付を計算する方法について詳しく解説します。
ExcelのWORKDAY.INTL関数とは?
WORKDAY.INTL関数は、指定した日付から指定した業務日数を加算または減算する際に、週末や祝日を除外するためのExcelの関数です。この関数は、通常の営業日だけでなく、ユーザーが指定した任意の週末日を考慮することができ、非常に柔軟な日付計算が可能です。
関数の構成は次の通りです:
WORKDAY.INTL(start_date, days, [weekend], [holidays])
ここで、start_dateは計算を始める日付、daysは進めるまたは戻す営業日数、weekendは週末の日設定(デフォルトは土日)、そしてholidaysは祝日や休暇を指定する範囲です。
月末の最も近い水曜日または土曜日を求める方法
月末に近い水曜日または土曜日を求めるために、WORKDAY.INTL関数を活用する場合、まず基本的な計算式として以下のようなものを使用します。
=LET(cal, WORKDAY.INTL(C2-1, SEQUENCE(31), "1101101"), MAX(FILTER(cal, cal <= EOMONTH(C2, 0))))
この式では、C2セルに指定した日付から31日間の営業日を計算し、月末の日付(EOMONTH関数)までの最も近い営業日を求めています。この式で、"1101101"というパターンが重要で、これは月曜日から金曜日が営業日(土曜と日曜は非営業日)であることを示しています。
特定の休暇期間を除外する方法
指定した日付期間、たとえばGW(5/3-5/5)、お盆(8/10-8/20)、年末年始(12/28-1/4)などを除外するには、WORKDAY.INTL関数の[holidays]引数を使用して、これらの期間を除外する必要があります。
具体的には、次のような式になります。
=LET(cal, WORKDAY.INTL(C2-1, SEQUENCE(31), "1101101", {DATE(2025,5,3), DATE(2025,5,4), DATE(2025,5,5), DATE(2025,8,10), DATE(2025,8,20), DATE(2025,12,28), DATE(2025,1,4)}), MAX(FILTER(cal, cal <= EOMONTH(C2, 0))))
この式では、特定の休暇日を配列として指定し、それらを除外した営業日を計算しています。{DATE(2025,5,3), DATE(2025,5,4), DATE(2025,5,5), DATE(2025,8,10), DATE(2025,8,20), DATE(2025,12,28), DATE(2025,1,4)}の部分に、除外したい日付を追加することができます。
休暇日を除外した場合の挙動と実例
たとえば、2025年12月31日の水曜日が年末の休暇日と重なっている場合、上記の計算式に基づくと、その日は営業日としてカウントされません。そのため、計算結果として、年末年始の休暇期間を考慮して、最も近い営業日として12月27日の土曜日が表示されます。
このように、指定した期間の休暇日を除外することで、実際の業務日に基づいた日付計算が可能となり、より現実的なスケジュール管理ができるようになります。
まとめ
ExcelのWORKDAY.INTL関数を活用して、月末に最も近い水曜日または土曜日を求める計算式に、特定の休暇日を除外する条件を追加する方法を解説しました。休暇日を除外するためには、関数の[holidays]引数に除外する期間を指定するだけで、営業日計算を柔軟に調整することができます。
これにより、業務スケジュールを立てる際に、実際の休暇期間を考慮した計算が可能となり、より正確な予定が立てられるようになります。Excelの関数を駆使して、複雑な日付計算も簡単にこなせるようになりましょう。


コメント