更新日:、 作成日:

エクセル WORKDAY.INTL 関数:休日を除いた営業日数後の日付を計算する

はじめに

エクセルの WORKDAY.INTL 関数の使い方を紹介します。

WORKDAY.INTL 関数は開始日から休日を除いた営業日数後の日付を取得します。

=WORKDAY.INTL("2017/5/5",1,"0000011) のようにして、2017/5/5 (金) ~ 土日を休みにした 1 日後の 2017/5/8 (月) を取得します。

=WORKDAY.INTL("2017/5/1",7,"0000000",{"2017/5/5"}) のようにして、2017/5/5 を休みにした 1 週間後の 2017/5/9 (火) を取得します。

土日や休日、祭日を数えないで営業日数後の日付を計算するときに使用します。

休日を除いた営業日数を取得するには「WORKDAY.INTL 関数」を使用します。
月末や数日後の日付を入力する方法は「日付を自動で入力する」をご覧ください。

WORKDAY.INTL 関数の引数

WORKDAY.INTL(開始日, 営業日数)
開始日から土日を含めないで営業日数後の日付を求めます。

WORKDAY.INTL(開始日, 営業日数, 週末, 休日)
週末に指定した曜日と休日に指定した日付は営業日数に含めません。

引数「開始日」基準となる日付を指定します。配列スピル化
引数「営業日数」引数「開始日」の何日後の日付を取得するかを指定します。引数「週末」と引数「休日」で指定した曜日と日付は数えません。配列スピル化
引数「週末」省略できます。省略すると土日が休みです。
休日とする曜日を数値か 7 桁の文字列で指定します。
スピル化
引数「休日」省略できます。休日とする日付のセルの範囲を指定します。

配列スピル化:配列を指定すると結果が「スピル」します。セルの範囲はスピルできません。

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

引数「週末」

数値 文字列 週末
1 または省略0000011土曜日と日曜日
21000001日曜日と月曜日
31100000月曜日と火曜日
40110000火曜日と水曜日
50011000水曜日と木曜日
60001100木曜日と金曜日
70000110金曜日と土曜日
110000001日曜日
121000000月曜日
130100000火曜日
140010000水曜日
150001000木曜日
160000100金曜日
170000010土曜日

文字列で指定するときは 0 が営業日、1 が休みです。 月火水木金土日 の順番に指定します。土日が休みなら 0000011 です。

使い方

WORKDAY.INTL 関数の使い方を紹介します。

1

営業日数を計算した日付を取得する

開始日から営業日数後の日付を取得します。

=WORKDAY.INTL(B3,C3,"0000000")
=WORKDAY.INTL(B4,C4,"1111111")

引数「週末」が 0000000 ならすべて営業日、1111111 ならすべて休日です。

結果が数値になっているのは、日付の実際の値は数値なのでその値を取得します。セルの書式設定から日付形式で表示できます。

結果は営業日を取得するため、すべて休日のときはエラーになります。

5

週末を指定して計算した日付を取得する

2017/5/5 (金) ~ 2 日後の日付を週末を指定して取得します。

=WORKDAY.INTL("2017/5/5",2,B3)
6

休日を指定して計算した日付を取得する

2017/5/1 (月) ~ 営業日数後の日付を休日を指定して取得します。週末はすべて営業日です。

=WORKDAY.INTL(B3,C3,"0000000",$D$4:$D$5)
=WORKDAY.INTL(B12,C12,"0000000",$D$13)
=WORKDAY.INTL(B15,C15,"0000000",$D$16:$D$17)
7

解説

日付の実際の値は数値なのでその値を取得します。2000/1/1 の実際の値は 36526 です。

結果を日付形式で表示するにはセルの書式設定から日付を選択します。

date-format

結果の終了日から「NETWORKDAYS.INTL 関数」を使用して営業日数を取得できます。

引数「開始日」が 2000/1/1 で引数「営業日数」が 1 なら 2000/1/2 の日付を取得します。その日が休みの日なら、その次の営業日を取得します。

引数「営業日数」が 0 なら引数「開始日」を取得します。その日が休みの日でも同じです。

引数「開始日」が 2000/1/2 で引数「営業日数」が -1 なら 2000/1/1 の日付を取得します。その日が休みの日なら、その前の営業日を取得します。

NETWORKDAYS.INTL 関数」なら前の日は -2 を取得するので、マイナスの時だけ営業日数の扱いが異なります。

引数「週末」が 0000000 ならすべて営業日です。1111111 ならすべて休みなので結果はエラー #VALUE! になります。

引数「休日」に日付を直接入力するには配列にします。{"2000/1/1","2000/1/2" …}

引数に含まれている時刻は無視されます。

引数が「DATEVALUE 関数」や「TIMEVALUE 関数」で日付や時間に変換できない文字列のときは、エラー #VALUE! になります。