【関数】土日以外が定休日でも開始日と日数から「終了日」を計算できる「WORKDAY.INTL」の使い方
AさんAさん

Excelで特定の「日付」の列を基準に、指定の日数を加算して「終了日」となる日付を計算したいです。
日曜と祝日が休みなので、そうした休日は計算の対象外にしたいですが、カレンダーを見て自分で計算しるしかないですかね?

森田森田

その場合は、関数のWORKDAY.INTLを活用すると良いですよ!
では、WORKDAY.INTLの使い方について解説していきますね。

はじめに

この記事は関数の概要を把握していることが前提です。

参考記事

関数の概要については以下の記事をご参照ください。

開始日+日数で「終了日」を算出したい場合は「WORKDAY.INTL」が有効

実務では、タスクの期日等の「終了日」を計算しておくことは非常に重要です。

特に、プロジェクト形式で仕事を行う、上司から依頼されたタスクを対応する際など、関係者へ期日を伝える必要がありますね。

ただし、カレンダーが目の前にないと、定休日や祝日といった休日を除いて「終了日」を計算するのはなかなかハードルが高いです。

こんな場合、関数のWORKDAY.INTLを使うと良いです。
WORKDAY.INTLは「ワークデイ・インターナショナル」と読む。

WORKDAY.INTLを使うことで、定休日や祝日を除き、特定の日付に所要日数を加算した「終了日」の日付(シリアル値)を計算できます。
定休日も祝日もユーザー自身で自由に設定可能。

ちなみに、シリアル値は、190011日を起点に何日目かをカウントした数値です(「44082」なら、190011日から44082日目)。

参考記事

土日が定休日の場合、より数式がシンプルな「WORKDAY」を使用してください(詳細は以下の記事を参照)。

WORKDAY.INTLの構文

WORKDAY.INTLの構文は以下の通りです。

=WORKDAY.INTL(開始日,日数,[週末],[祭日])
ユーザー定義の週末パラメーターを使用して、指定した日数だけ前あるいは後の日付に対応するシリアル値を計算します。

引数名 必須 データ型 説明
開始日 すべて 起算日を示す単一セル(値が日付)を指定します。
日数 すべて 「開始日」に「週末」や「祭日」の日付を除いて加算したい日数を指定します。
※負の数を指定の場合、「開始日」より前の日付となる
週末 数値 週末(定休日)にする曜日を週末番号または文字列で指定します。
祭日 すべて 祝日等、「日数」から除外したい日付を示すテーブルまたはセル範囲を指定します。

各引数に無効な値(文字列等)を指定した場合、エラー値「#VALUE!」が表示。
引数「開始日」に「1900/1/1」~「9999/12/31」以外の日付(シリアル値)を入力した場合、エラー値「#NUM!」が表示。
引数「開始日」・「日数」の和が無効な日付となる場合、エラー値「#NUM!」が表示。
引数「週末」は選択肢に表示される週末番号以外の数値を指定した場合、エラー値「#NUM!」が表示。
引数「週末」を文字列で指定する際、無効な長さまたは無効な文字が含まれる場合、エラー値「#VALUE!」が表示。
引数「日数」を小数点以下まで指定した場合、整数以外は切り捨てされる。
引数「祭日」を省略した場合、引数「開始日」・「日数」の和から除外されるのは引数「週末」の週末の曜日のみ。

【参考】引数「週末」のパターン

引数「週末」は週末番号を選択するか、文字列を入力して任意の曜日を週末に設定しましょう(基本は週末番号の選択)。

週末番号を選択する場合は、引数「日数」の後にコンマ(,)を入力すると、数式上でサジェストされるため、任意の週末番号を選択し「Tab」キーで確定しましょう。

各番号がどの曜日を週末にするかは以下の表をご覧ください。

週末番号 週末の曜日
1または省略 土曜日と日曜日
2 日曜日と月曜日
3 月曜日と火曜日
4 火曜日と水曜日
5 水曜日と木曜日
6 木曜日と金曜日
7 金曜日と土曜日
11 日曜日のみ
12 月曜日のみ
13 火曜日のみ
14 水曜日のみ
15 木曜日のみ
16 金曜日のみ
17 土曜日のみ

もし、上記週末番号にないパターンを設定したい場合は、文字列で指定しましょう。

この文字列のルールは以下の通りです。

  • 文字列に使用できる文字は「1」と「0」のみ
  • 1」は週末(定休日)、「0」は営業日を示す
  • 文字列は各曜日を示す7文字で指定する(月曜日始まり)
  • 文字列として扱うためダブルクォーテーション()で囲む

たとえば、火曜日と木曜日を週末にしたい場合は、”0101000”となります。
数式の例:=WORKDAY.INTL(C2,D2,”0101000”,祝日[祝日])
”1111111”は無効な文字列となる。

【参考】WORKDAY.INTLは「日付/時刻関数」

あくまで参考情報となりますが、WORKDAY.INTLはリボン「数式」タブの関数ライブラリの「日付/時刻」に分類されています。

実際にWORKDAY.INTLを活用する際は、以下で解説しているように直接入力で挿入していきましょう。

WORKDAY.INTLの使用結果イメージ

WORKDAY.INTLを使い、開始日と日数から「終了日」を計算するイメージは以下の通りです。
今回は「開始日」・「所要日数」列のデータと「祝日」テーブルから「終了日」を計算しました。
定休日は「日曜日のみ」。

上記のように計算列としてWORKDAY.INTLを使う場合、1レコードにつき1つの関数を使います。
「計算列」とは、数値/日付/時刻の列の値を計算した新たな列のこと。

ベースの数式をセットしたら、他のセルへペーストしましょう。

なお、引数「祭日」に指定するテーブル/セル範囲は、事前に自身で準備する必要があります。
2023年 祝日」のようにネット検索し、間違いないように準備すること(国民の祝日以外に会社や学校独自の休日があれば適宜追加)。

【参考】WORKDAY.INTLの戻り値は「開始日」を含まない

WORKDAY.INTLに限りませんが、Excelの日付計算では基本的に開始日は含まれません(終了日は含む)。

どういうことか、開始日「2023/5/1」、日数「2」の場合でカレンダーを使って確認していきましょう。
定休日が「日曜日のみ」の場合。

このように、開始日はあくまでも起算なので、日数の数値に含まれないことが分かります。

もし、開始日を含みたい場合は引数「日数」の後に「-1」を入れれば良いです。
数式の例:=WORKDAY.INTL(C2,D2-1,11,祝日[祝日])

WORKDAY.INTLの数式の挿入手順

上記の結果を得るための手順は以下の通りです。

  1. 関数を挿入するセルを選択
    ※今回はE2セル
  2. =wo」等と入力
  3. サジェストから「INTL」を選択し、「Tab」キーで確定
  4. 開始日を示すセルを選択
    ※今回はC2セル
  5. コンマ(,)を入力
  6. 日数を示すセルを選択 or 整数を入力
    ※今回はD2セル
  7. コンマ(,)を入力
  8. 任意の週末番号を選択し、「Tab」キーで確定
    ※今回は「11」を選択
  9. コンマ(,)を入力
  10. 祭日を示すテーブル/セル範囲を選択
    ※今回は「祝日」テーブル
  11. Enter」キーで確定
  12. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はE3~E11セルへペースト

手順②の際にIMEを半角英数モードにすること。
テーブルの場合、手順⑫は不要(全レコードへ数式が自動的にコピーされる)。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_ワークシート関数_WORKDAY.INTL.xlsx

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ブックを開いたら、次の手順を実施してください。(今までの解説のまとめです)

  1. 関数を挿入するセルを選択
    ※今回はE2セル
  2. =wo」等と入力
  3. サジェストから「INTL」を選択し、「Tab」キーで確定
  4. 開始日を示すセルを選択
    ※今回はC2セル
  5. コンマ(,)を入力
  6. 日数を示すセルを選択 or 整数を入力
    ※今回はD2セル
  7. コンマ(,)を入力
  8. 任意の週末番号を選択し、「Tab」キーで確定
    ※今回は「11」を選択
  9. コンマ(,)を入力
  10. 祭日を示すテーブル/セル範囲を選択
    ※今回は「祝日」テーブル
  11. Enter」キーで確定
  12. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はE3~E11セルへペースト

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

WORKDAY.INTLは日付データを元にした計算列の追加に役立つ関数の一つです。

定期的に「終了日」を計算する計算列を作成する機会があるなら、ぜひ覚えておいた方が良いですね。

なお、WORKDAY.INTL以外にもExcelでのデータ整形の各種テクニックを拙著で解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

WORKDAY.INTLとセットで覚えておいた方が良い関数は、週末が土日固定の分、数式がシンプルな「WORKDAY」です。
とはいえ、WORKDAY.INTLで土日も対応できることを考慮すると、無理に覚える必要はないかもしれません。
むしろ、逆パターンとして、開始日と終了日から土日祝といった休日を除いた日数を算出できる「NETWORKDAY.INTLS」や「NETWORKDAY.INTLS.INTL」の方を優先で覚えた方が良いと思います。