NETWORKDAYS・WORKDAY関数で営業日・納期を計算する|祝日除外・稼働日数・期限管理の実務パターンとMOS試験対策

「プロジェクトの開始日から納期まで何営業日あるのか」「今日から10営業日後は何月何日か」「祝日を除いた稼働日数はいくつか」——こうした日付計算の需要は、製造業・物流・建設・事務職を問わず日常業務に頻繁に生じます。単純に「終了日-開始日」とExcelで引き算しても、土日と祝日が含まれているため正確な営業日数は出ません。

ExcelのNETWORKDAYS関数・WORKDAY関数はこの「営業日計算」を自動化するための専用関数です。NETWORKDAYS関数で2つの日付の間の稼働日数を算出し、WORKDAY関数でn営業日後の日付を自動計算できます。さらに週休3日制や特殊な勤務体系に対応したNETWORKDAYS.INTL・WORKDAY.INTL関数を使えば、曜日パターンを自由にカスタマイズできます。本記事では基本構文から祝日除外の設定方法、業務シナリオ別の実践パターン、よくあるエラーの対処法、MOS Excel試験の頻出問題まで一気通貫で解説します。

「Excelで納期管理や勤怠集計を自動化したい」「MOS Excel試験でNETWORKDAYS関連の問題を確実に得点したい」という方は、ぜひ最後までご覧ください。

目次

NETWORKDAYS関数が必要な理由:単純な日付引き算との違い

Excelで日付の差を求める方法として最も直感的なのは「=終了日-開始日」という引き算です。しかしこの計算には土曜日・日曜日・祝日がすべて含まれているため、「実際に仕事ができる日数(稼働日数)」とは一致しません。たとえば月曜日から翌週金曜日まで5営業日の期間でも、引き算では「10」(2週間分の暦日数)と計算されます。

計算方法結果の意味週末・祝日の扱い適した使用場面
終了日-開始日暦上の総日数(土日・祝日含む)含む期間の長さを暦日数で確認するだけの場合
NETWORKDAYS関数稼働日数(土日除外)土日のみ除外実稼働日数・工期・締め切りまでの営業日数
NETWORKDAYS関数(祝日リスト付き)稼働日数(土日+祝日除外)土日+祝日を除外より精密な営業日管理・勤怠集計・プロジェクト管理

NETWORKDAYS関数はデフォルトで土曜日・日曜日を除外します。第3引数に祝日リストを指定することで、ゴールデンウィーク・お盆・年末年始なども除外した正確な稼働日数が計算できます。単純な引き算では対応できない「実際の業務日程管理」にはNETWORKDAYS関数を使うのが基本です。

NETWORKDAYS関数の構文と基本的な使い方

NETWORKDAYS関数の構文

NETWORKDAYS関数の構文は以下のとおりです。

=NETWORKDAYS(開始日, 終了日, [祝日])
引数必須/省略可説明
開始日必須計算の起点となる日付。日付値・セル参照・DATE関数の結果を指定できる
終了日必須計算の終点となる日付。開始日と同じ日付を指定すると「1」を返す
祝日省略可除外する祝日の日付リスト(セル範囲・配列で指定)。省略すると土日のみ除外される

NETWORKDAYS関数は開始日と終了日の両方を含む形で稼働日数を返します。たとえば月曜日から月曜日(同日)を指定すると「1」、月曜日から火曜日を指定すると「2」となります。開始日と終了日の順序が逆(終了日が開始日より前)になると負の値を返します。

祝日リストなしの基本的な稼働日数計算

まず祝日を考慮しない基本的な使い方を確認します。A2セルに開始日、B2セルに終了日が入っている場合の例を示します。

数式開始日終了日結果意味
=NETWORKDAYS(A2, B2)2026/6/1(月)2026/6/5(金)5月~金の5営業日
=NETWORKDAYS(A2, B2)2026/6/1(月)2026/6/14(日)102週間の暦日数14日のうち土日4日を除いた10営業日
=NETWORKDAYS(A2, B2)2026/6/5(金)2026/6/8(月)2金曜日と月曜日のみ(土日は稼働日から除外)
=NETWORKDAYS(A2, B2)2026/6/1(月)2026/6/1(月)1同日を指定すると「1」を返す

注意点として、開始日・終了日が土日に該当していても、その日は稼働日数にカウントされません。たとえば土曜日を開始日、次の月曜日を終了日に指定した場合、土曜日と日曜日は除外されて月曜日の「1」だけが返ります。

第3引数「祝日」で祝日を除外する方法

NETWORKDAYS関数の第3引数に祝日リストを指定すると、土日に加えて指定した日付も稼働日数から除外されます。祝日リストは別シートや別の列にまとめて管理するのが一般的です。

たとえば「祝日」シートのA1:A30に2026年の祝日一覧が入力されている場合、数式は次のようになります。

=NETWORKDAYS(B2, C2, 祝日!$A$1:$A$30)

同じシートのD列に祝日リストが入っている場合は「=NETWORKDAYS(B2, C2, $D$2:$D$20)」と直接セル範囲を指定します。数式をコピーする場合は第3引数を絶対参照($記号付き)にしておくと、コピー先でも正しい祝日リストを参照できます。祝日リストに入力する値はExcelが認識できる日付書式(シリアル値)である必要があります。書式が「文字列」になっているセルはNETWORKDAYS関数に正しく認識されないため注意が必要です。

数式開始日終了日祝日結果
=NETWORKDAYS(B2, C2)2026/5/1(金)2026/5/8(金)指定なし6(土日のみ除外)
=NETWORKDAYS(B2, C2, D2:D5)2026/5/1(金)2026/5/8(金)5/3・5/4・5/5・5/6の4日間2(土日+祝日除外)

祝日リストの管理には、内閣府が毎年公表する「国民の祝日」一覧を参考にするのが確実です。振替休日(代替休日)も業務上「休日」として扱う場合は、そちらも祝日リストに追加しておきましょう。会社独自の創立記念日・夏期休暇・年末年始休暇なども祝日リストに加えることで、より実態に近い稼働日数が計算できます。

NETWORKDAYS.INTL関数でカスタム週末を設定する

NETWORKDAYS関数は土曜日・日曜日を「週末」として固定的に除外します。しかし実際の職場では月曜日が休みのシフト制、週休3日制、日曜日のみ休みの接客業など、週末の定義が異なるケースが多くあります。そのような場合に使うのがNETWORKDAYS.INTL関数です。

NETWORKDAYS.INTL関数の構文

=NETWORKDAYS.INTL(開始日, 終了日, [週末], [祝日])
引数必須/省略可説明
開始日必須計算の起点となる日付
終了日必須計算の終点となる日付
週末省略可週末の曜日を数値コード(1~17)または7文字の文字列で指定。省略時は土日(1)が適用される
祝日省略可NETWORKDAYS関数と同様、除外する日付のリスト

週末指定の数値コード一覧

週末引数に指定できる数値コードは以下のとおりです。よく使うのは1(土日・省略時の既定値)・7(金土)・11(日曜のみ)などです。

数値コード週末として除外する曜日主な適用場面
1(省略時の既定値)土曜日・日曜日一般的な会社・事務職
2日曜日・月曜日飲食・観光業など
3月曜日・火曜日特定シフト勤務
4火曜日・水曜日特定シフト勤務
5水曜日・木曜日特定シフト勤務
6木曜日・金曜日特定シフト勤務
7金曜日・土曜日中東・一部の業種
11日曜日のみ週休1日制(日曜休み)
12月曜日のみ週休1日制(月曜休み)
13火曜日のみ週休1日制(火曜休み)
14水曜日のみ週休1日制(水曜休み)
15木曜日のみ週休1日制(木曜休み)
16金曜日のみ週休1日制(金曜休み)
17土曜日のみ週休1日制(土曜休み)

文字列形式での週末指定

数値コードでは対応できない特殊な週末パターン(週3休・特定の曜日組み合わせなど)には、7文字の文字列で週末を指定できます。文字列の各文字は月曜日から日曜日の順に対応し、「1」が休日・「0」が稼働日を意味します。

=NETWORKDAYS.INTL(開始日, 終了日, "0000011")

上の例は「月・火・水・木・金が稼働日(0)、土・日が休日(1)」を意味し、通常の土日休みと同じ結果になります(数値コード1と同等)。

文字列指定例意味
“0000011”稼働稼働稼働稼働稼働休日休日通常の土日休み(数値コード1と同じ)
“0000001”稼働稼働稼働稼働稼働稼働休日日曜のみ休み(数値コード11と同じ)
“0100011”稼働休日稼働稼働稼働休日休日火・土・日の週3休
“1000011”休日稼働稼働稼働稼働休日休日月・土・日の週3休

文字列は7文字固定で、「0」「1」以外の文字が含まれると#VALUE!エラーになります。また全桁が「1」(稼働日ゼロ)の場合も#VALUE!エラーが返ります。数値コードで対応できる場合は数値コードを優先するほうがミスが少なくなります。

WORKDAY関数でn営業日後の日付を計算する

NETWORKDAYS関数が「2つの日付の間の稼働日数」を求めるのに対して、WORKDAY関数は「開始日からn営業日後(または前)の日付」を返します。「発注から10営業日後の納品期限を自動表示したい」「今日から5営業日後にリマインドを設定したい」という用途に最適です。

WORKDAY関数の構文

=WORKDAY(開始日, 日数, [祝日])
引数必須/省略可説明
開始日必須起算日となる日付。この日はカウントに含まれず、翌営業日から数え始める
日数必須正の値でn営業日後、負の値でn営業日前を求める。小数点以下は切り捨てられる
祝日省略可NETWORKDAYS関数と同様、除外する日付のリスト

WORKDAY関数の重要な仕様として、開始日はカウントに含まれません。「=WORKDAY(“2026/6/1”, 1)」は2026年6月1日(月曜日)の「1営業日後」である2026年6月2日(火曜日)を返します。開始日自体を1日目としてカウントしたい場合は「=WORKDAY(開始日-1, 日数)」のように1日前から数え始めるよう調整します。

基本的な納期計算の例

A2セルに発注日、B2セルにリードタイム(営業日数)が入っている場合の例を示します。

数式開始日日数結果説明
=WORKDAY(A2, 10)2026/6/1(月)102026/6/15(月)6/1から10営業日後。6/6-7・6/13-14は土日なので除外
=WORKDAY(A2, 5)2026/6/1(月)52026/6/8(月)6/1から5営業日後。6/6-7の土日を除外
=WORKDAY(A2, -3)2026/6/10(水)-32026/6/5(金)3営業日前。6/6-7の土日を跨いで遡る

WORKDAY関数の戻り値はシリアル値(数値)なので、結果のセルを日付書式(yyyy/m/dなど)に設定しないと「46000」のような整数が表示されます。書式設定は「ホーム」タブの表示形式ドロップダウンから「短い日付形式」を選ぶか、Ctrl+1でセルの書式設定を開いて「日付」カテゴリから設定します。

祝日を除外したWORKDAY関数の使い方

NETWORKDAYS関数と同様、第3引数に祝日リストを指定することで土日と祝日の両方を除外した日付が求められます。

=WORKDAY(A2, B2, 祝日!$A$1:$A$30)

ゴールデンウィーク期間を含む納期計算では祝日除外が特に重要です。たとえば4月28日(火)から10営業日後を祝日リストなしで計算すると5月12日(火)になりますが、5月3日(日)・5月4日(月)・5月5日(火)・5月6日(水)を祝日リストに追加すると正確な稼働日数を反映した5月15日(金)が返ります。祝日リストの精度が納期計算の正確性に直結します。

WORKDAY.INTL関数でカスタム週末を設定する

WORKDAY.INTL関数はNETWORKDAYS.INTLと同様に週末パターンをカスタマイズできます。

=WORKDAY.INTL(開始日, 日数, [週末], [祝日])

週末引数の数値コード・文字列の指定方法はNETWORKDAYS.INTLと完全に同じです。「=WORKDAY.INTL(A2, 10, 2)」とすると、日曜日・月曜日を週末として除外したうえでA2から10営業日後の日付を返します。接客業や医療・介護など土日以外に定休日がある職場のシフト計算に活用できます。

業務シナリオ別の実践パターン

発注・受注管理:納品期限の自動計算

受注管理台帳で受注日と標準リードタイム(営業日数)から納品期限を自動計算する構成例を示します。

内容数式例
A列受注日手入力
B列標準リードタイム(営業日)手入力(例:10)
C列納品期限=WORKDAY(A2, B2, 祝日!$A$1:$A$30)
D列今日から残り営業日=MAX(0, NETWORKDAYS(TODAY(), C2, 祝日!$A$1:$A$30)-1)
E列遅延フラグ=IF(TODAY()>C2, “遅延”, “”)

D列の「残り営業日」でNETWORKDAYS(TODAY(), C2)を使うとき、TODAY()自体を「残り1日」としてカウントしたい場合は結果から1を引きます。MAX(0, …)でラップしておくと、納期超過後に負の値が表示されるのを防げます。現場のルール(当日を含む/含まない)に合わせてこの調整を行ってください。

月間営業日数の自動集計

年度計画や目標設定表で月ごとの稼働可能日数を自動表示したい場合、NETWORKDAYS関数とEOMONTH関数を組み合わせます。

=NETWORKDAYS(DATE(B1, A2, 1), EOMONTH(DATE(B1, A2, 1), 0), 祝日!$A$1:$A$30)

B1セルに年(2026)、A2セルに月(6)が入っている場合、DATE(B1, A2, 1)で月初日を、EOMONTH(DATE(B1, A2, 1), 0)で月末日を生成して月全体の営業日数を計算します。祝日リストを指定することで祝日分を除外した正確な営業日数が得られます。同じロジックを全12か月分の行に適用すると、年間の月別営業日数一覧が自動で作成できます。工数計画・売上目標設定・シフト管理など幅広い用途に応用できます。

締め切り前の残り営業日カウントダウン

プロジェクト管理表で「重要な締め切りまであと何営業日か」を常に表示したい場合は、TODAY()を起点にNETWORKDAYS関数を使います。

=MAX(0, NETWORKDAYS(TODAY(), 締切日セル, 祝日リスト)-1)

「-1」しているのは、TODAY()からTODAY()を指定するとNETWORKDAYSが「1」を返すためです(当日を「残り0日」として表示したい場合の調整)。MAX(0, …)で期限超過後も「0」として表示されます。さらに条件付き書式を組み合わせると「残り3日以下は赤色」「残り7日以下は黄色」のような視覚的なアラートも簡単に設定できます。

工程表:各フェーズの開始日・終了日を連鎖計算する

複数フェーズからなるプロジェクト工程表では、前フェーズの終了日(WORKDAY関数で求めた日付)を次フェーズの開始日として連鎖させることで、工程全体を自動更新できます。

フェーズ開始日(B列)稼働日数(C列)終了日(D列)
企画(手入力)2026/7/15=WORKDAY(B2, C2, 祝日!$A:$A)
設計=WORKDAY(D2, 1, 祝日!$A:$A)(翌営業日)10=WORKDAY(B3, C3, 祝日!$A:$A)
開発=WORKDAY(D3, 1, 祝日!$A:$A)20=WORKDAY(B4, C4, 祝日!$A:$A)
テスト=WORKDAY(D4, 1, 祝日!$A:$A)5=WORKDAY(B5, C5, 祝日!$A:$A)

この設計なら最初の開始日や各フェーズの稼働日数を変更するだけで、後続フェーズの日程が全自動で更新されます。次フェーズの開始日を「前フェーズ終了の翌営業日」として取得する場合は「WORKDAY(前フェーズ終了日, 1, 祝日リスト)」とすることで、土日や祝日をまたいだ場合も正確な翌稼働日を起点にできます。

よくあるエラーと対処法

NETWORKDAYS・WORKDAY関数を使う際に発生しやすいエラーと、それぞれの原因・対処法を整理します。

#VALUE!エラー:引数に認識できない値が含まれている

  • 日付が文字列として入力されている:セルに「2026/6/1」と見えていても、書式が「文字列」になっている場合はエラーになります。セルを選択して「ホーム」タブの表示形式が「文字列」になっていないか確認し、「日付」または「標準」に変更してください。DATEVALUE関数(=DATEVALUE(“2026/6/1”))で文字列を日付シリアル値に変換する方法も使えます
  • 祝日リストに文字列が混入している:祝日として指定したセル範囲にヘッダー行の文字列などが含まれているとエラーになります。ヘッダー行を除いたデータ部分のみを範囲指定するか、名前付き範囲(「祝日リスト」など)を定義して管理してください
  • NETWORKDAYS.INTLの週末文字列が不正:週末を文字列で指定する場合、7文字かつ「0」「1」のみで構成されている必要があります。文字数が違う・「0」「1」以外の文字を含む・全桁「1」の場合はすべて#VALUE!エラーになります

WORKDAY関数の結果が数値で表示される

WORKDAY関数の戻り値はシリアル値(整数)です。結果のセルが日付書式に設定されていないと「46458」のような数値が表示されます。対処法はセルを選択して「ホーム」タブの表示形式ドロップダウンから「短い日付形式」または「長い日付形式」を選ぶか、Ctrl+1でセルの書式設定を開いて「日付」カテゴリから希望の表示形式を選ぶことです。

土日に該当する日付を開始日にしたときの動作

WORKDAY関数の開始日に土曜日・日曜日を指定した場合、エラーにはなりませんが意図しない日付を返す場合があります。たとえば土曜日(2026/6/6)から「1営業日後」を求めると月曜日(2026/6/8)が返ります(日曜日は休日のため)。開始日が稼働日かどうかが不明な場合は「=WORKDAY(WORKDAY(開始日, 0), 日数)」のように「0日後」で次の稼働日に正規化してから計算する方法が安全です。

NETWORKDAYSが期待より1日多い・少ない

NETWORKDAYS関数は開始日と終了日の両端を含む仕様です。「月曜日から月曜日(同日)」を指定すると「1」が返ります。これを「0日間」と解釈したい場合は「=NETWORKDAYS(A2, B2)-1」のように1を引いて調整します。業務上の「稼働日数」の定義(始点を含む/含まないか)に合わせてこの調整を行ってください。また、NETWORKDAYS(TODAY(), 締切日)で「残り稼働日」を求める場合も同様に、TODAY()が1日分カウントされる点を考慮して調整します。

MOS Excel試験でのNETWORKDAYS・WORKDAY関数出題パターンと攻略法

MOS Excel 365(MO-201/MO-210)の試験では、日付関数の中でもNETWORKDAYS・WORKDAYは実務に直結する関数として出題対象になっています。よく見られる出題形式と得点のポイントを解説します。

出題パターン1:稼働日数の計算と祝日リストの活用

「セルB2の開始日からC2の終了日までの稼働日数を、F列の祝日リストを参照してD2に表示せよ」のような指示が典型的です。

  • 「稼働日数」という語句が出たらNETWORKDAYS関数と結び付ける
  • 祝日リストが指示されている場合は第3引数を必ず指定する(省略すると土日しか除外されず正解にならない)
  • 祝日リストをほかの行にもコピーする場合は第3引数を絶対参照($F$2:$F$30など)にする
  • 開始日・終了日に時刻情報が含まれている場合はINT(開始日セル)のように整数部分だけ取り出してから使う

出題パターン2:n営業日後の日付計算

「A2の発注日からB2に指定した営業日数後の納品期限をC2に計算せよ(祝日はD列を参照)」という形式で出題されます。

  • 「n営業日後の日付」が求められるときはWORKDAY関数を使う。NETWORKDAYS関数との混同に注意(NETWORKDAYSは日数を返し、WORKDAYは日付を返す)
  • WORKDAY関数の戻り値はシリアル値であるため、問題文に「日付として表示せよ」とあればセルの書式設定を忘れない
  • 「前営業日」「n営業日前」が出てくる場合は日数引数に負の値(-1など)を使う

出題パターン3:カスタム週末の設定(上位試験向け)

MOS Excel 365のExpert試験(MO-210)では「日曜日のみを休日として稼働日数を計算せよ」のようにNETWORKDAYS.INTL/WORKDAY.INTLの使用を要求する問題も出ます。

  • 「日曜のみ」が週末の場合は数値コード11を第3引数に指定する
  • 週末の指定が問題文に明示されている場合は通常のNETWORKDAYS/WORKDAYではなくINTL版を使うことを意識する
  • 文字列形式(”0000001″など)は桁数・文字を間違えやすいため、数値コードで対応できる場合は数値コードを優先する

MOS試験対策クイックリファレンス

出題されやすい操作使う関数と数式パターン
2日付間の稼働日数(土日除外)=NETWORKDAYS(開始日, 終了日)
2日付間の稼働日数(土日+祝日除外)=NETWORKDAYS(開始日, 終了日, 祝日リスト)
n営業日後の日付(土日除外)=WORKDAY(開始日, 日数)
n営業日後の日付(土日+祝日除外)=WORKDAY(開始日, 日数, 祝日リスト)
n営業日前の日付=WORKDAY(開始日, -日数, 祝日リスト)
日曜のみ休日で稼働日数を計算=NETWORKDAYS.INTL(開始日, 終了日, 11)
日曜のみ休日でn営業日後の日付=WORKDAY.INTL(開始日, 日数, 11)
週末を文字列で任意指定(土日休み)=NETWORKDAYS.INTL(開始日, 終了日, “0000011”)
今日から締め切りまでの残り営業日=MAX(0, NETWORKDAYS(TODAY(), 締切日, 祝日リスト)-1)
月全体の営業日数=NETWORKDAYS(DATE(年, 月, 1), EOMONTH(DATE(年, 月, 1), 0), 祝日リスト)

まとめ:NETWORKDAYS・WORKDAY関数で営業日管理を自動化する

NETWORKDAYS・WORKDAY・NETWORKDAYS.INTL・WORKDAY.INTL関数を使うことで、手作業では困難な営業日ベースの日程管理をExcelで完全に自動化できます。要点をまとめます。

  • NETWORKDAYS関数は2つの日付の間の稼働日数を計算する。土日は自動除外され、第3引数に祝日リストを指定すると祝日も除外できる。開始日・終了日の両端を含む仕様なので、「0日間」が必要な場合は結果から1を引いて調整する
  • WORKDAY関数は開始日からn営業日後(負の値で前)の日付を返す。戻り値はシリアル値なのでセルを日付書式に設定する必要がある。開始日はカウントに含まれない点に注意する
  • NETWORKDAYS.INTL・WORKDAY.INTL関数を使うと、土日以外の週末パターンに対応できる。週末は数値コード(1~17)または7文字の文字列(月曜から日曜の順、1=休日・0=稼働日)で指定する
  • 祝日リストは別シートや別列にまとめ、第3引数は絶対参照($A$1:$A$30)で指定する。数式コピー時に祝日リストの参照がずれなくなる
  • 業務での典型的な活用例:受注台帳への納品期限自動計算・月間営業日数の集計表・プロジェクト工程表の連鎖計算・締め切りカウントダウン
  • MOS試験では「稼働日数の計算」→NETWORKDAYS、「n営業日後の日付」→WORKDAY、「カスタム週末」→INTL版という対応関係を確実に覚えておくことが得点のカギとなる

当サイトでは、Excel・Word・PowerPoint・AccessのOffice操作やMOS試験対策に関する記事を多数発信しています。ぜひ他の記事もご覧ください。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次