Excel(エクセル)で土日や祝日を除いて、第〇営業日後(前)の平日を計算したいことはありませんか?
例えば、「2025/1/16(木)」の2営業日目を「2025/1/20(月)」と計算する、といった場合です。
このような計算をしたい時は、WORKDAY関数(ワークデイ関数)を使用すると簡単に計算できます。
スケジュール管理や請求書の支払期日を自動で計算させたいときなどに活用できます。
この記事の後半では、土日以外を休日として取り扱うことができるWORKDAY.INTL関数の使い方も合わせて解説します。
WORKDAY関数とは、土日・祝日を外して平日の日付を計算!
WORKDAY関数の読み方は、「ワークデー関数」です。
WORKDAY関数とは、開始日から指定した営業日数だけ後(もしくは前)の日付に対応する日付を計算する関数です。
営業日とは稼働日ともいい、土曜日、日曜日、祝日を除く平日のことを指します。
そのため、下の図のように、WORKDAY関数を使うと、24/1/9(木)の3稼働日だけ後ろの日付は、土日・祝日が除かれて、24/1/15(水)と計算されます。
このように、WORKDAY関数は、土日・祝日を除いた日付の加算・減算に役立つ関数です。
また、エクセルは日本の祝日を判断できる仕組みは備わっていません。
そのため、祝日を除外してWORKDAY関数を使用する場合は、エクセルで事前に祝日リストを作成しておく必要があります。
WORKDAY関数の書式と引数
WORKDAY関数の書式と引数は以下のとおりです。
=WORKDAY(開始日, 日数, [祝日])
第1引数「開始日」:計算の基準となる日付のセルを指定します。ダブルクォーテーションを使って直接日付を入力してもOKです。(例:B3、”2025/1/13”)
第2引数「日数」:第1引数「開始日」に対して何日後の稼働日を計算するかを数値で指定します。基準日より前の日付を計算したいときは̠マイナスの数値を入力します。(例:2、-2)
第3 引数「祝日」:省略可能です。祝日も稼働日の計算から除きたい場合は、祝日が入力されたセルやセル範囲を指定します。(例:B2、B2:B8)
WORKDAY関数の第3引数「祝日」リストの作り方
WORKDAY関数の3つ目の引数「祝日」は省略可能です。
しかし、祝日を稼働日から除きたい場合は指定する必要があります。
祝日リストを作成する場合、以下の内閣府のサイトにアクセスしてください。
国民の祝日について>内閣府
https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
令和7年度の国民の祝日・休日に移動し、表の左上から右下までドラッグして選択します。選択し終えたら、「Ctrl+C」キーでコピーします。
「Ctrl+V」キーや右クリックメニューの貼り付けコマンドを使って、コピーした祝日データをエクセルに貼り付けます。
会社や職場で独自の休日を設けている場合は、このリストに追加してください。この祝日リストをWORKDAY関数で利用していきます。(使い方は次の見出しで解説)
【補足】
日付を「2025/1/1(水)」と曜日付きで表示したい場合は、「セルの書式設定」画面で表示形式のユーザー定義を「yyyy/m/d(aaa)」と設定してください。
日付の表示形式を変更する方法が分からない方は、以下の記事を参考にしてください。
WORKDAY関数を使って〇日後(前)の平日を計算する方法
WORKDAY関数の使い方を4つのパターンで紹介します。
WORKDAY関数の事例
事例1.〇日後の稼働日を計算
例:「2025/1/16(木)」の2日後を「2025/1/20(月)」
事例2.〇日前の稼働日を計算
例:「2025/1/20(月)」の2日前を「2025/1/16(木)」
事例3.土日であれば直前の稼働日を計算
例:「2025/1/18(土)」⇒「2025/1/17(金)」
事例4.土日であれば直後の稼働日を計算
例:「2025/1/18(土)」⇒「2025/1/20(月)」
事例1.土日・祝日を除いて〇日後の平日を計算
WORKDAY関数を使って、〇日後の稼働日を計算する方法を解説します。
例えば、「2025/1/16(木)」の2営業日後を「2025/1/20(月)」と表示する方法です。
手順1.WORKDAY関数を挿入
日付のセルに対して、以下のWORKDAY関数を挿入します。2稼働日後を計算するため第2引数は「2」と指定します。祝日も除きたい場合は、第3引数に祝日が入力したセル範囲(G3:G4)を指定します。
=WORKDAY(B3,2,$G$3:$G$4)
手順2.WORKDAY関数を確定
WORKDAY関数を確定します。
そうすると、「2025/1/10(金)」の2日後は「2025/1/12(日)」ですが、祝日の「1/13」も除外されて、2営業日後の「2025/1/15(水)」が表示されます。
手順3.WORKDAY関数をコピペ
WORKDAY関数を下のセルにコピペすれば、すべての日付の2営業日後の平日が表示されます。下の図のように、WORKDAY関数の結果は土日・祝日は表示されません。
事例2.土日・祝日を除いて〇日前の平日を計算
WORKDAY関数を使って、〇日前の稼働日を計算する方法を解説します。
例えば、「2025/1/20(月)」の2営業日前を「2025/1/16(木)」と表示する方法です。
日付のセルに対して、以下のWORKDAY関数を挿入します。2稼働日前を計算するため第2引数は「-2」と指定します。祝日も除きたい場合は、第3引数に祝日が入力したセル範囲(G3:G4)を指定します。
=WORKDAY(B3,-2,$G$3:$G$4)
WORKDAY関数を下のセルにも反映すれば、すべての日付の2営業日前の平日が表示されます。下の図のように、WORKDAY関数の結果は土日・祝日は表示されません。
事例3.日付が土日なら1営業日前の平日を計算
WORKDAY関数を使って、土日・祝日であれば直前の平日の稼働日を求める方法を解説します。
例えば、「2025/1/20(月)」であれば「2025/1/20(月)」を表示しますが、「2025/1/18(土)」であれば「2025/1/17(金)」が表示されます。
日付のセルに対して、以下のWORKDAY関数を挿入します。
第1引数は指定した日付に+1を加算し、第2引数は「-1」と指定します。祝日も休日と同じように扱いたい場合は、第3引数に祝日が入力したセル範囲(G3:G4)を指定します。
=WORKDAY(B3+1,-1,$G$3:$G$4)
そうすると、平日であれば平日が表示、休日や祝日であれば直前の平日が表示されます。
事例4.日付が土日なら1営業日後の平日を計算
WORKDAY関数を使って、土日・祝日であれば直後の平日の稼働日を求める方法を解説します。
例えば、「2025/1/20(月)」であれば「2025/1/20(月)」を表示しますが、「2025/1/18(土)」であれば「2025/1/20(月)」が表示されます。
日付のセルに対して、以下のWORKDAY関数を挿入します。
第1引数は指定した日付に-1を減算し、第2引数は「1」と指定します。祝日も休日と同じように扱いたい場合は、第3引数に祝日が入力したセル範囲(G3:G4)を指定します。
=WORKDAY(B3-1,1,$G$3:$G$4)
そうすると、平日であれば平日が表示、休日や祝日であれば直後の稼働日である平日が表示されます。
WORKDAY.INTL関数で土日以外を休日として計算する方法
土日ではなく、別の曜日を休日として求めるときは、WORKDAY関数ではなく、WORKDAY.INTL関数を使います。
WORKDAY.INTL関数の読み方は、「ワークデイ・インターナショナル」です。
WORKDAY.INTL関数の書式と引数
WORKDAY.INTL関数の書式と引数は以下のとおりです。
=WORKDAY.INTL(開始日, 日数, [週末], [休日])
第1引数「開始日」、第2引数「日数」、第4引数「休日」は、WORKDAY関数と同じ使い方です。
WORKDAY関数と使い方が異なるのは、第3引数「週末」だけが異なります。
第3引数「週末」:1から17までの週末番号を指定します。例えば、「3」を指定すれば、月曜日と火曜日が休日として取り扱われます。
週末番号は以下のとおりです。11~17の番号を利用することで、週のうち1日だけを休日とすることもできます。
週末番号 | 週末の曜日 |
1 または省略 | 土曜日と日曜日 |
2 | 日曜日と月曜日 |
3 | 月曜日と火曜日 |
4 | 火曜日と水曜日 |
5 | 水曜日と木曜日 |
6 | 木曜日と金曜日 |
7 | 金曜日と土曜日 |
11 | 日曜日 |
12 | 月曜日 |
13 | 火曜日 |
14 | 水曜日 |
15 | 木曜日 |
16 | 金曜日 |
17 | 土曜日 |
WORKDAY.INTL関数の使い方
WORKDAY.INTL関数を使って、月曜日・火曜日を休日扱いにして、1日後の稼働日を計算する方法を紹介します。
日付のセルに対して、以下のWORKDAY.INTL関数を挿入します。
1稼働日後を計算するため第2引数は「1」と指定します。月火を休日と計算するため、第3引数の週末番号は「3」を指定します。
=WORKDAY.INTL(B3,1,3,$G$3:$G$4)
そうすると、月火を休日として、すべての日付の1営業日後の平日が表示されます。このように、WORKDAY.INTL関数を利用すれば、会社や業種によって異なる休日を自在に変更することができます。
月末の最後の平日を計算する方法
月末日が土曜日や日曜日だった場合、その前の最後の平日の日付を表示させることができます。
そんなときは、EOMONTH関数と、WEEKDAY関数とMAX関数を組み合わせて利用します。
=EOMONTH(B3,C3)-MAX(WEEKDAY(EOMONTH(B3,C3),2)-5,0)
EOMONTH関数の使い方や、上の数式の仕組みは以下の記事で詳しく紹介しているので、興味のある方は参考にしてください。