「来月の締め切りまで、営業日ベースであと何日だろう?」
仕事のスケジュール管理で、こんな場面はよくありますよね。カレンダーを見ながら土日に印をつけて、祝日を手作業で数えて……。地味に手間がかかるうえ、うっかり数え間違えると納期ズレやリスケの原因になります。
ExcelのNETWORKDAYS関数を使えば、2つの日付の間の営業日数を一発で計算できます。祝日の除外にも対応しているので、実務にそのまま使える万能選手です。
この記事では、NETWORKDAYS関数の基本から祝日リストの運用、実務テンプレ、よくあるエラーの対処法まで、事務職の方が今日から使えるように解説します。
NETWORKDAYS関数とは
NETWORKDAYS関数は、指定した期間の営業日数を返す関数です。読み方は「ネットワーク・デイズ」で、「稼働日(Network Days)」という意味に近いですね。
読み方・何ができる関数か
この関数は、開始日から終了日までのあいだで、土曜日と日曜日を自動的に除いた平日だけの日数をカウントしてくれます。第3引数で祝日リストを渡せば、祝日や会社独自の休業日もまとめて除外できるのがポイントです。
事務職の方がよく使うのは、こんな場面です。
- 納期までの残り営業日を自動表示したい
- 月ごとの稼働日数を集計して人件費を按分したい
- プロジェクトの工数見積もりで営業日ベースの期間を出したい
- SLA(合意した対応期間)から着手日を逆算したい
どれも「土日祝を除いた日数」が必要なので、NETWORKDAYS関数がぴたりとはまります。
基本構文と引数
構文は次のとおりです。
=NETWORKDAYS(開始日, 終了日, [祭日])
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 開始日 | 必須 | 期間の開始日を指定する |
| 終了日 | 必須 | 期間の終了日を指定する |
| 祭日 | 省略可 | 土日以外に除外したい日付のリスト |
日付はセル参照かDATE関数で指定するのがおすすめです。文字列で指定すると、環境や設定によっては #VALUE! エラーの原因になりますよ。
開始日・終了日は計算に含まれる(1日ズレの注意)
ここがいちばん見落としやすいポイントです。NETWORKDAYS関数は、開始日と終了日の両方を含めてカウントします。
たとえば、開始日と終了日が同じ日(平日)の場合を考えてみましょう。
=NETWORKDAYS("2026/4/20","2026/4/20")
→ 結果: 1(月曜日なので営業日1日)
「期間の長さ」ではなく「営業日の数」を返すと覚えておいてください。月曜から金曜までを指定したら結果は5になりますが、これは差分ではなくカウントだからです。
この仕様を知らずに「納期までの日数」と勘違いすると、1日ズレてしまいます。「残り何日営業できるか」で使うと頭の中が整理しやすくなりますよ。
対応バージョンと特性
NETWORKDAYS関数はExcel 2003以降のすべてのバージョンで使えます。Microsoft 365、Excel 2021、Excel for Mac、Excel Online(Web版)すべて対応しているので、互換性の心配はほぼありません。
特性として覚えておきたいポイントがいくつかあります。
- 日付に時刻が含まれていても、時刻部分は無視される
- 開始日が終了日より後の場合は負の値が返る(エラーにはならない仕様)
- 土日は常に固定(週末を変更したい場合はNETWORKDAYS.INTL関数を使う)
- 日付以外の値が渡されると
#VALUE!エラー
ExcelのNETWORKDAYS関数の基本的な使い方
2つの日付間の営業日数を求める
まずはもっともシンプルな使い方です。祝日を考慮せず、土日だけを除いた営業日数を求めます。
たとえば、2026年4月1日〜4月30日の営業日数を計算してみましょう。
=NETWORKDAYS("2026/4/1","2026/4/30")
→ 結果: 22
4月は30日間ありますが、土日を除くと22日になります。シンプルですよね。
セル参照での使い方も基本は同じです。A2に開始日、B2に終了日が入っていれば、こう書けます。
=NETWORKDAYS(A2, B2)
数式をコピーして使う場面が多いので、直書きよりセル参照にしておくほうが実務では便利です。
祝日リストを使って営業日を計算する
実務では祝日も除外したいですよね。第3引数に祝日リストを指定すれば対応できます。
たとえば、2026年のゴールデンウィーク前後の営業日数を計算したいとします。セルB2:B6に祝日を入力しておきましょう。
| セル | 内容 |
|---|---|
| B2 | 2026/4/29(昭和の日) |
| B3 | 2026/5/3(憲法記念日) |
| B4 | 2026/5/4(みどりの日) |
| B5 | 2026/5/5(こどもの日) |
| B6 | 2026/5/6(振替休日) |
この祝日リストを使って計算すると、次のようになります。
=NETWORKDAYS("2026/4/1","2026/5/31",B2:B6)
→ 結果: 38
祝日のうち土日と重なる日は二重に除外されません。平日に該当する祝日だけが差し引かれるので、数え方を心配する必要はありませんよ。
シリアル値と日付文字列の扱い
Excel は内部的に日付を「シリアル値」という数値で管理しています。たとえば2026/4/1は46113という数値です。
NETWORKDAYS関数の引数には、次のいずれかを渡せます。
- 日付型のセル参照(例:
A2) - DATE関数で組み立てた値(例:
DATE(2026,4,1)) - 日付文字列(例:
"2026/4/1") - シリアル値の数値(例:
46113)
いちばん安全なのはセル参照か DATE 関数です。文字列での指定は、PCのロケール設定や区切り記号の違いで解釈がブレる可能性があります。特にほかの人とファイルを共有するときは、セル参照にしておきましょう。
祝日リストの作り方と管理のコツ
祝日リストは関数の精度を左右する重要な部分です。ここでの管理が雑だと、計算結果がどんどんズレていきます。
祝日リストを作るときの3つのポイント
押さえておきたいポイントは3つです。
- 祝日は必ず日付型で入力する(文字列はNG)
- 振替休日は自動認識されないため手動で追加する
- 会社独自の休業日(創立記念日・夏季休暇など)も忘れずに含める
とくに振替休日は見落としがちなので注意してください。2026年だと5月6日(5月3日の日曜振替)がこれに該当します。
別シートで祝日を一元管理する方法
祝日リストは「祝日」という名前の別シートにまとめるのがおすすめです。ファイルのあちこちに同じリストが散らばると、年次更新のときに見落としが発生します。
手順は次のとおりです。
- 新しいシートを作成して「祝日」と名前をつける
- A列に日付、B列に祝日名を入力する
- NETWORKDAYS関数の第3引数で
祝日!A:Aのように参照する
=NETWORKDAYS(A2, B2, 祝日!A:A)
こうしておけば、年が変わっても祝日シートを更新するだけで済みます。複数の数式から同じリストを参照できるので、メンテナンスがとても楽になりますよ。
名前付き範囲で参照する方法
もう一段階スマートにするなら、祝日リストに「名前付き範囲」を定義する方法があります。
手順はかんたんです。
- 祝日シートで日付が入った範囲(例: A2:A17)を選択する
- 画面左上の名前ボックスに「祝日リスト」と入力してEnter
- 以降は数式内で
祝日リストと書くだけで参照できる
=NETWORKDAYS(A2, B2, 祝日リスト)
数式がぐっと読みやすくなりますよね。他のメンバーが数式を見たときも、何を除外しているかが一目でわかります。
毎年の更新を楽にする運用テンプレ
祝日は年ごとに日付が変わるので、毎年の更新作業が発生します。管理を楽にするテンプレをひとつ紹介します。
- 祝日シートの1行目に「年」「日付」「名称」「区分(国民の祝日/会社休業日)」の4列を設ける
- 名前付き範囲を列単位(A:A)で定義して、行を追加してもズレないようにする
- 次年度分を準備するときは、内閣府の「国民の祝日について」ページからコピペする
「来年になってから慌てて作る」のをやめると、年度末の事務作業がずいぶん楽になりますよ。
実務での活用例
納期・締切までの営業日カウント
「この案件、営業日であと何日残ってる?」という場面で便利です。TODAY関数と組み合わせれば、今日から締切日までの残り営業日を自動更新できます。
=NETWORKDAYS(TODAY(), C2, 祝日リスト)
C2に締切日を入力しておけば、ファイルを開くたびに最新の残日数が表示されます。タスク管理表に1列追加するだけで使えるので、特別な準備はいりません。
残日数が3日を切ったら赤くするといった条件付き書式と組み合わせれば、アラート表としても機能します。
月ごとの稼働日数を集計する
月次レポートで「今月の稼働日数は何日?」を自動計算する例です。
A列に月初日、B列に月末日を入れた表を用意します。
=NETWORKDAYS(A2, B2, 祝日リスト)
これを各月の行にコピーすれば、年間の稼働日数カレンダーが完成します。人件費の按分計算や工数見積もりにも活用できますよね。
2026年の月別稼働日数を概算すると、5月は祝日が多くて18日程度、10月は22日前後と幅があります。繁忙期の工数見積もりは、稼働日数ベースで見直すと納期がリアルになります。
給与の日割り按分計算
中途入社や退職などで、月の途中から給与を日割りにする場面で使えます。月給を営業日数で割り、実稼働日をかける方法です。
=月給 / NETWORKDAYS(月初, 月末, 祝日リスト) * NETWORKDAYS(入社日, 月末, 祝日リスト)
暦日割りに比べて、祝日の多い月の負担が軽くなりすぎない・重くなりすぎない公平な計算ができます。
プロジェクトの進捗率を営業日ベースで算出
工数管理では「今どのくらい進んでいるか」を営業日ベースで出したいケースがあります。
=NETWORKDAYS(開始日, TODAY(), 祝日リスト) / NETWORKDAYS(開始日, 終了予定日, 祝日リスト)
この数式を書式設定でパーセンテージ表示にすれば、進捗率(営業日ベース)として使えます。暦日ベースで計算するよりも、実際の作業可能日に即した数字が出てきますよ。
SLA逆算での着手日の判定
「回答期限10営業日前までに担当者アサインが必要」といった SLA 運用でも使えます。
=IF(NETWORKDAYS(TODAY(), 期限日, 祝日リスト) <= 10, "要アサイン", "余裕あり")
期限日までの残り営業日数が10日以下になったら「要アサイン」と表示する、といった判定ロジックが組めます。問い合わせ対応や契約更新のリマインドにも応用できる型です。
よくあるエラーと対処法
NETWORKDAYS関数で発生しやすいエラーと対処法をまとめました。
| エラー/症状 | 主な原因 | 対処法 |
|---|---|---|
#VALUE! | 日付がテキスト形式になっている | DATE関数で日付を組み立て直す |
#VALUE! | 祝日リストに文字列が混入している | リストの中身をすべて日付型に統一する |
| 結果がマイナス | 開始日と終了日が逆になっている | 引数の順番を入れ替える |
| 祝日が除外されない | 祝日リストの日付がシリアル値になっていない | セルの表示形式を「日付」に変更する |
| 期待値より1日多い・少ない | 開始日・終了日のカウント方法を誤解している | 「両方含まれる」を前提に計算しなおす |
#VALUE! エラーの原因と修正
もっとも多いのが、セルの見た目は日付なのに中身がテキストというケースです。Excel では「シングルクォートで始まる値」や「外部からコピーした値」が文字列として扱われることがあります。
確認するにはISNUMBER関数を使うのがいちばんかんたんです。
=ISNUMBER(A2)
→ TRUE: 数値(=日付型)
→ FALSE: 文字列(要修正)
FALSE が返ってきたら、日付として認識されていないサインです。DATEVALUE 関数で変換するか、セルに日付型としてあらためて入力しなおしましょう。
結果がマイナスになるとき
NETWORKDAYS関数は、開始日 > 終了日だと負の値を返します。バグではなく仕様です。
データ入力で日付が逆転している可能性があるので、IF 関数と組み合わせて安全弁を入れておくと安心です。
=IF(A2>B2, "日付が逆", NETWORKDAYS(A2,B2,祝日リスト))
祝日が除外されないときのチェックリスト
「祝日を渡したのに、結果が変わらない」ときは次の順で確認してみてください。
- 祝日リストが文字列ではなく日付型か(ISNUMBERで確認)
- 祝日リストの範囲指定が正しいか(空白セルを含めていないか)
- 渡している祝日がそもそも土日と重なっていないか(土日は元から除外されるため)
- 計算期間内に祝日が含まれているか(期間外の祝日は当然反映されない)
ISNUMBERで日付型を検証する
祝日リストが大量にあるときは、条件付き書式で文字列の混入を可視化すると便利です。
- 祝日リストの範囲を選択
- 条件付き書式 → 新しいルール → 数式を使用
- 数式に
=NOT(ISNUMBER(A2))を入力 - 書式を赤色背景に設定
これで、文字列が混ざっていたら一目でわかります。リスト作成後のセルフチェックに組み込んでおくと、事故予防になりますよ。
NETWORKDAYS.INTLとの使い分け
NETWORKDAYS関数は週末が土日固定で、週末パターンを変更できません。
「うちは水曜と日曜が休みなんだけど……」という場合は、NETWORKDAYS.INTL関数を使いましょう。Excel 2010以降で使えます。
両者の違いを比較表で確認
| 項目 | NETWORKDAYS | NETWORKDAYS.INTL |
|---|---|---|
| 週末の扱い | 土日固定(変更不可) | 数値コードや7桁文字列で自由に指定可能 |
| 引数 | 3つ(開始日・終了日・祭日) | 4つ(開始日・終了日・週末・祭日) |
| 対応バージョン | Excel 2003以降 | Excel 2010以降 |
| 使用シーン | 一般的な土日休みのオフィスワーク | シフト制・小売・飲食・医療など変則休日 |
どちらを使うべきか判断フロー
迷ったらこの順で判断すれば OK です。
- 土日休みならNETWORKDAYS関数
- 土日以外の曜日が休みならNETWORKDAYS.INTL関数
- 単一曜日だけ休みの場合もNETWORKDAYS.INTL関数(週末コード指定)
- 祝日リストはどちらでも使える(引数位置が違うだけ)
シンプルさで言えばNETWORKDAYSのほうが扱いやすいので、特殊な休日パターンがなければこちらで十分です。
関連関数との比較
WORKDAY関数との違い(日数 vs 日付)
NETWORKDAYS関数は「営業日数」を返します。一方、WORKDAY関数は「指定日数後の営業日の日付」を返します。
| 関数 | 戻り値 | 用途 |
|---|---|---|
| NETWORKDAYS | 営業日数(数値) | 「あと何日?」を知りたいとき |
| WORKDAY | 営業日の日付 | 「いつになる?」を知りたいとき |
「納期まで何営業日?」ならNETWORKDAYS、「10営業日後はいつ?」ならWORKDAYと覚えておくと迷いません。
DAYS関数との違い(暦日 vs 営業日)
DAYS関数は土日・祝日を含む暦日数を返します。NETWORKDAYS関数は営業日数を返します。
=DAYS("2026/4/30","2026/4/1") → 29(暦日)
=NETWORKDAYS("2026/4/1","2026/4/30") → 22(営業日)
契約日数など暦ベースの計算なら DAYS、実稼働の工数計算なら NETWORKDAYS が向いています。
DATEDIF関数との使い分け
DATEDIF関数は2つの日付の差を「年・月・日」の単位で返します。NETWORKDAYS関数とは用途がかなり違います。
| 関数 | 得意分野 |
|---|---|
| DATEDIF | 年齢計算、勤続年数、契約期間の年数・月数 |
| NETWORKDAYS | 営業日数、稼働日数、納期までの日数 |
「何年何ヶ月?」ならDATEDIF、「営業日で何日?」ならNETWORKDAYSと覚えておきましょう。
Microsoft 365 で使えるモダンな書き方
Microsoft 365 や Excel 2021 ではスピル機能とテーブル参照が使えるので、NETWORKDAYS関数も一歩進んだ書き方ができます。
スピルで月別稼働日数を一括表示
A2:A13 に各月の月初日、B2:B13 に月末日を入れた表があるとします。スピル対応環境なら、1つのセルにこう書くだけで12行分の結果が自動展開されます。
=NETWORKDAYS(A2:A13, B2:B13, 祝日リスト)
E2 セルに入れるだけで、E2:E13 に自動で結果が並びます。数式をコピーする必要がないので、表の行数が変わっても追従してくれます。
テーブル参照で祝日リストを堅牢に
祝日リストを Excel テーブル(Ctrl+T で変換)にしておくと、行を追加するだけで参照範囲が自動拡張されます。
=NETWORKDAYS(A2, B2, テーブル1[祝日])
毎年の祝日更新時に参照範囲を変更する必要がなくなるので、メンテナンスが格段に楽になります。社内で共有する集計表ほど、この書き方がおすすめですよ。
まとめ
NETWORKDAYS関数は、2つの日付間の営業日数を自動計算してくれる関数です。
ポイントをおさらいしましょう。
- 構文は
=NETWORKDAYS(開始日, 終了日, [祭日]) - 開始日と終了日の両方が計算に含まれる(1日ズレに注意)
- 祝日リストは別シートで一元管理するとメンテが楽
- 週末を土日以外にしたい場合はNETWORKDAYS.INTL関数
- 営業日数ではなく営業日の日付が欲しいならWORKDAY関数
- 暦日数ならDAYS関数、年月数ならDATEDIF関数
なお、Googleスプレッドシートでも同じ名前の関数が使えます。詳しくはスプレッドシートのNETWORKDAYS関数をご覧ください。
納期管理や稼働日数の集計など、実務で使える場面はたくさんあります。祝日リストの運用方法まで整えておけば、毎年の更新作業もスムーズですよ。ぜひ今日から活用してみてください。
