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

Excelで「開始日」と「終了日」の2つの列から、期間内の日数を計算したいです。
日曜と祝日が休みなので、そうした休日は計算の対象外にしたいですが、カレンダーを見て自分で計算しるしかないですかね?

森田森田

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

はじめに

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

参考記事

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

期間内の「日数」を算出したい場合は「NETWORKDAYS.INTL」が有効

実務において、タスクに着手できる日と期日が決まっている場合、何営業日あるかを計算するケースは多いもの。

ただし、期間が長い場合は、カレンダーが目の前にないと、定休日や祝日といった休日を除いて「日数」を計算するのは難しいです。

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

NETWORKDAYS.INTLを使うことで、定休日や祝日を除き、開始日から終了日までの「日数」を計算できます。
定休日も祝日もユーザー自身で自由に設定可能。

参考記事

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

NETWORKDAYS.INTLの構文

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

=NETWORKDAYS.INTL(開始日,日数,[週末],[祭日])
ユーザー設定の週末パラメーターを使用して、開始日と終了日の間にある週日の日数を計算します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NETWORKDAYS.INTLを使い、開始日から終了日までの「日数」を計算するイメージは以下の通りです。

今回は「開始日」・「終了日」列のデータと「祝日」テーブルから「日数」を計算しました。
定休日は「日曜日のみ」。

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

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

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

【参考】NETWORKDAYS.INTLの戻り値は「開始日」を含む

Excelの日付計算では基本的に開始日を含みませんが、NETWORKDAYS.INTLは開始日を含む点にご注意ください。

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

このように、開始日と終了日は両方含まれた「日数」だと分かります。

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

NETWORKDAYS.INTLの数式の挿入手順

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

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

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

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

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

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

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

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

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

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

さいごに

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

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

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

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


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

森田森田

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