NETWORKDAYS関数の使い方|営業日数や稼働日数を求める

Excel(エクセル)NETWORKDAYS関数の使い方|営業日数や稼働日数を求める

NETWORKDAYS関数について、その使い方を初心者にも分かりやすく解説しています。NETWORKDAYS関数の引数の指定方法、営業日数や稼働日数の求め方、NETWORKDAYS関数と他の関数の組み合わせなどを詳しく図解しています。

使用関数:NETWORKDAYS、IF

NETWORKDAYS(ネットワークデイズ)関数とは?

NETWORKDAYSは「開始日」と「終了日」を指定して、その期間の土日・祭日を除く稼働日数や営業日数を求める関数です。IF関数やSUMIF関数と組み合わせて、その日が営業日かどうかを判定したり、平日と休日を分けて勤務時間を合計したりするのにも応用できます。

NETWORKDAYS関数の引数と書式

「数式」タブ「関数ライブラリ」→「日付/時刻」→ NETWORKDAYSをクリックします。
「関数ライブラリ」→「日付/時刻」→ NETWORKDAYS
NETWORKDAYSの引数は「開始日」「終了日」と「祭日」です。

書式の構成はこうなります。
NETWORKDAYS関数の書式の構成

NETWORKDAYS関数で土日・祭日を除いた稼働日数を求める

NETWORKDAYS関数の引数ダイアログを使って、土日・祝祭日を除外して実質的な稼働日数を求めてみましょう。

受注した案件の制作が3月いっぱいで完了しました。以下のカレンダーで分かる通り、土日と祭日は休みで、3月10日は会社の創立記念日のイベントで業務は無しです。
NETWORKDAYS関数で稼働日数を求める3月のカレンダー

「開始日と終了日」及び「祝日リスト」は別表にまとめてあります。この案件の実質的な制作日数をNETWORKDAYS関数で取得します。
NETWORKDAYS関数で稼働日数を求めるための「開始日と終了日」と「祝日リスト」

第一引数「開始日」の指定

期間が開始された日付をセル参照、シリアル値、日付文字列で指定します。

この例では、「制作日数」のセルを選択して、NETWORKDAYS関数の引数ダイアログボックスを開き、「開始日」の日付セルをクリックで指定します。
NETWORKDAYS関数の引数「開始日」に日付セルをクリックして指定

第二引数「終了日」の指定

期間が終了した日付をセル参照、シリアル値、日付文字列で指定します。

この例では、「終了日」の日付セルをクリックで指定します。
NETWORKDAYS関数の引数「終了日」に日付セルをクリックして指定

第三引数「祭日」の指定

期間内の祝祭日をセル参照、シリアル値、日付文字列で指定します。この引数を省略すると、土日だけが除外されます。
引数「祭日」には個人的な休日もまとめて指定できます。複数の祭日・休日を指定する場合は日付をまとめた別表を作成して、そのセル範囲を指定します。

この例では「祝祭日」の日付セル範囲をドラッグで指定します。
NETWORKDAYS関数の引数「祭日」に日付のセル範囲をドラッグで指定

土日と祭日・休日を除いた実質的な稼働日数が取得できました。
NETWORKDAYS関数で実質的な稼働日数が取得できた

土曜日が出勤の場合はどうする?

NETWORKDAYS関数では土日は一律休日として除外されます。土曜日が出勤で他の曜日が定休日である場合は、Excel2010から追加されたNETWORKDAYS.INTL関数を使います。

NETWORKDAYS.INTL関数については以下の記事に詳しくまとめています

NETWORKDAYS.INTL関数の使い方|自由指定の定休日と祭日を除いて日数を求める
NETWORKDAYS.INTL関数の使い方を初心者にも分かりやすく解説。NETWORKDAYS.INTL関数の引数「週末」の指定方法、曜日の指定番号一覧、NETWORKDAYS.INTL関数とNETWORKDAYS関数の違いについてなど

NETWORKDAYS関数とWORKDAY関数の違い

NETWORKDAYS関数とWORKDAY関数は混同されやすい関数ですが、大きな違いがあります。
NETWORKDAYS関数は日付を指定し、結果は日数です。WORKDAY関数は日数を指定し、結果は日付です。手段も求める結果も逆になるわけですね。

NETWORKDAYS関数の結果はWORKDAY関数より1日多い

前章でNETWORKDAYS関数を使って「開始日:3月1日」~「終了日:3月31日」の実質的な稼働日数を求め、結果は「21日」でした。

この同じ例でWORKDAY関数を使って「開始日:3月1日」から「実質的な稼働日数:21日」が経過した日付を求めてみると結果は「3月31日」ではなく「4月1日」です。要するにNETWORKDAYS関数で計算された稼働日数は1日多いということになります。
WORKDAY関数を使って実質的な稼働日数:21日後の日付を求めた結果

WORKDAY関数で指定する「日数」は経過日数のことで、開始日を含めません。開始日から1日経過した時点で「1」とカウントします。
対してNETWORKDAYS関数の結果の「日数」は稼働日数で、作業した日、営業した日として開始日も「1」とカウントします。NETWORKDAYS関数の結果が1日多いのはこのためです。
NETWORKDAYS関数は開始日を含め、WORKDAY関数は開始日を含めない
NETWORKDAYS関数で開始日を含めない結果を得たいなら、数式に「-1」を付け加えて補正します。

NETWORKDAYS関数とIF関数で営業日・休業日を判定する

NETWORKDAYS関数の「開始日」「終了日」に同じ日付を指定すると、営業日なら稼働日数として「1」が返り、休業日なら「0」が返ります。この結果を応用して営業日か休業日かの判定ができます。この実装にはIF関数を組み合わせます。

年末年始の営業日程を表示させる表と年末年始の正月休みの「祝日リスト」を用意します。
NETWORKDAYS関数+IF関数で営業日程を表示させる表と「祝日リスト」

最初にNETWORKDAYS関数で営業日か休業日かを判定する数式を組み立てておきます。「開始日」と「終了日」に同じ日付を指定し、「祭日」に祝日リストの日付をドラッグで指定、絶対参照にしておきます。
NETWORKDAYS関数で営業日か休業日かを判定するダイアログの指定
この数式「NETWORKDAYS(A2,A2,$D$2:$D$6)」をIF関数に入れ子して営業日に「通常営業」の文字列を表示させます。

IF関数の「論理式」に「NETWORKDAYS(A2,A2,$D$2:$D$6)」を入力し、その後に続けて「=1」と入れます。「NETWORKDAYS関数の戻り値が「1=営業日」なら」という論理式になります。その結果が「真の場合=営業日の場合」には「通常営業」の文字列を表示させ、「偽の場合=休業日の場合」には「休み」の文字列を表示させるように設定します。
NENETWORKDAYS関数を入れ子したIF関数の指定

全ての行にオートフィルコピーすると年末年始の営業日程が実装されます。
NETWORKDAYS関数とIF関数で表示された年末年始の営業日程

最終的な数式です =IF(NETWORKDAYS(A2,A2,$D$2:$D$6)=1,“通常営業”,”休み”)

NETWORKDAYS関数の使い方 まとめ
  • NETWORKDAYS関数は「開始日」と「終了日」を指定して、その期間の土日・祭日を除く稼働日数や営業日数を求めます
  • NETWORKDAYS関数の引数は「開始日」「終了日」と「祭日」です
  • NETWORKDAYS関数の引数「祭日」には個人的な休日もまとめて指定できます
  • NETWORKDAYS関数とWORKDAY関数は指定する引数と結果が違います。「日数」の数え方もNETWORKDAYSの方が1日多くなります
  • NETWORKDAYS関数とIF関数で営業日か休業日かを判定して営業日程を作成する使い方もできます
タイトルとURLをコピーしました