【関数】開始日と終了日から、土日祝を除いた「日数」を計算できる「NETWORKDAYS」の使い方
AさんAさん

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

森田森田

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

はじめに

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

参考記事

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

期間内の「日数」を算出したい、かつ土日祝休みの場合は「NETWORKDAYS」が有効

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

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

こんな場合、関数のNETWORKDAYSを使うと良いです。
NETWORKDAYSは「ネットワークデイズ」と読む。

NETWORKDAYSを使うことで、土日祝を除き、開始日から終了日までの「日数」を計算できます。
祝日についてはユーザー自身で自由に設定可能。

参考記事

土日が定休日ではない場合、定休日のパターンを自由に指定できる「NETWORKDAYS.INTL」を使用してください(詳細は以下の記事を参照)。

NETWORKDAYSの構文

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

=NETWORKDAYS(開始日,終了日,[祭日])
開始日と終了日の間にある週日の日数を計算します。

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

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

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

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

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

NETWORKDAYSの使用結果イメージ

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

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

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

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

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

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

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

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

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

NETWORKDAYSの数式の挿入手順

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

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

手順②の際にIMEを半角英数モードにすること。
手順④⑥をすべてセル参照する場合、「Ctrl」キーを押しながらセル選択することで手順⑤⑦の入力を省略可能(コンマ(,)が自動入力)。
テーブルの場合、手順⑩は不要(全レコードへ数式が自動的にコピーされる)。

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

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

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

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

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

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

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

さいごに

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

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

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

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


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

森田森田

NETWORKDAYSとセットで覚えておいた方が良い関数は、定休日のパターンを自由に指定できる「NETWORKDAYS.INTL」です。
あと、逆パターンとして、開始日と日数から土日祝といった休日を除いた終了日を算出できる「WORKDAY」や「WORKDAY.INTL」も使い勝手は同じなので、セットで覚えておくと良いでしょう。