「この案件、開始から納品まで営業日ベースで何日あるんだろう?」。スプレッドシートでプロジェクト管理をしていると、こんな疑問がよく出てきますよね。
カレンダーを見ながら土日を1日ずつ数える方法もあります。でも、祝日まで含めると数え間違いが起きやすいです。
GoogleスプレッドシートのNETWORKDAYS関数を使えば、土日と祝日を自動で除いた稼働日数を一発で計算できます。
この記事では基本の書き方から祝日リストの設定方法、似た関数との違いまで解説しますよ。
NETWORKDAYS関数とは?できることを30秒で理解する
NETWORKDAYS関数(読み方: ネットワークデイズ関数)は、2つの日付の間の稼働日数を返す関数です。
名前は「net work days(正味の就業日数)」に由来しています。ネットワーク(通信網)とは関係ないので安心してくださいね。
たとえば「2025/4/1」から「2025/4/30」までの稼働日数を求めると、土日を除いた「22」が返ります。祝日リストを指定すれば、祝日も差し引いた「20」のような結果になりますよ。
ポイントは次の3つです。
- 土日は自動で除外される
- 開始日と終了日の両端を含む日数を返す
- 祝日は自分でリストを用意する必要がある
NOTE
スプレッドシートは日本の祝日を自動認識しません。祝日も除外したい場合は、第3引数で祝日リストを指定します。設定方法はこのあと詳しく説明しますね。
NETWORKDAYS関数の基本構文と引数
基本構文
=NETWORKDAYS(開始日, 終了日, [祝日])
カッコの中に「開始日」「終了日」を順番に入れます。3つ目の「祝日」は任意です。
第1引数・第2引数:開始日と終了日
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 開始日 | 必須 | 期間の始まりとなる日付 |
| 終了日 | 必須 | 期間の終わりとなる日付 |
| 祝日 | 任意 | 除外する祝日の日付リスト |
開始日と終了日が同じ日で、かつ平日なら結果は「1」です。開始日が終了日より後の場合は負の値を返します。
WARNING
DAYS関数は「終了日, 開始日」の順ですが、NETWORKDAYS関数は「開始日, 終了日」の順です。引数の順番が逆なので注意してくださいね。
第3引数(祝日):3パターンの指定方法
祝日の指定方法は主に3パターンあります。
- 省略する → 土日のみ除外(祝日は含む)
- セル範囲を指定する → 祝日リストのセル範囲を参照
- 別シートを参照する → 祝日マスタを別シートに作成
それぞれの書き方を次のセクションで解説しますね。
祝日リストの設定方法3パターン
パターン1:第3引数を省略する(土日のみ除外)
祝日を考慮しなくてよい場合は、第3引数を省略します。
=NETWORKDAYS(A2, B2)
A2が「2025/4/1」、B2が「2025/4/30」なら、結果は「22」です。4月の土日8日を除いた稼働日数ですね。
社内だけの計算で祝日の影響が小さい場合は、このシンプルな書き方で十分ですよ。
パターン2:同一シートのセル範囲を指定する
祝日をセルに入力して、その範囲を第3引数に指定する方法です。
たとえばD2:D4に祝日が入っているとします。
| セル | 値 |
|---|---|
| D2 | 2025/4/29 |
| D3 | 2025/5/3 |
| D4 | 2025/5/5 |
次のように書きます。
=NETWORKDAYS(A2, B2, D2:D4)
A2が「2025/4/1」、B2が「2025/5/31」なら、土日を除いた営業日からさらに祝日3日分が差し引かれます。
少数の祝日を手早く設定したいときに便利な方法です。
パターン3:別シートの祝日リストを参照する(実務推奨)
実務では「祝日」シートを作って年間の祝日をまとめておくのがおすすめです。
まず「祝日」という名前のシートを作り、A列に祝日の日付を入力します。
=NETWORKDAYS(A2, B2, 祝日!A2:A20)
「祝日!A2:A20」が別シートへの参照です。シート名のあとに「!」をつけて、セル範囲を続けます。
この方法のメリットは次の3つです。
- 祝日リストを1か所で管理できる
- 複数の数式から同じリストを参照できる
- 年が変わっても祝日シートだけ更新すればOK
TIP
祝日リストは余裕を持った範囲で指定しましょう。A2:A20のように多めに取っておけば、祝日を追加しても数式を書き直す必要がありません。空白セルは無視されるので安心ですよ。
実践例:プロジェクト期間の稼働日数を計算する
実際の業務シーンを想定して、NETWORKDAYS関数を使ってみましょう。
サンプルデータ
次のようなプロジェクト管理表があるとします。
| A列(タスク名) | B列(開始日) | C列(終了日) | D列(稼働日数) | |
|---|---|---|---|---|
| 2行目 | 要件定義 | 2025/4/1 | 2025/4/18 | ? |
| 3行目 | 設計 | 2025/4/21 | 2025/5/9 | ? |
| 4行目 | 開発 | 2025/5/12 | 2025/6/30 | ? |
祝日シートのA2:A20に年間の祝日が入っているとします。
ステップ1:稼働日数を求める
D2セルに次の数式を入力します。
=NETWORKDAYS(B2, C2, 祝日!A2:A20)
結果は「14」です。4/1〜4/18の期間から土日4日を除いた稼働日数ですね。
D3・D4にも同じ数式をコピーすれば、各タスクの稼働日数が一覧で確認できます。
ステップ2:TODAY関数と組み合わせて残り稼働日数を出す
「今日から終了日まであと何営業日か」を知りたいときは、開始日にTODAY関数(今日の日付を返す関数)を使います。
=NETWORKDAYS(TODAY(), C2, 祝日!A2:A20)
TODAY関数はファイルを開くたびに自動更新されます。毎日の残り稼働日数を常に最新の状態で確認できますよ。
ステップ3:EDATE関数と組み合わせて月単位の稼働日数を出す
「今月の稼働日数は何日?」を求めたい場合は、EDATE関数(月単位で日付を加減する関数)と組み合わせます。
=NETWORKDAYS(DATE(2025,4,1), EDATE(DATE(2025,4,1),1)-1, 祝日!A2:A20)
DATE関数で月初日を作り、EDATE関数で1か月後の日付を求めます。そこから1を引くと月末日になります。
2025年4月なら、稼働日数は祝日(4/29:昭和の日)を除いた「21」が返りますよ。
NETWORKDAYS・NETWORKDAYS.INTL・WORKDAY・DAYSの違いを比較
NETWORKDAYSと似た関数がいくつかあります。違いを表で整理しましょう。
| 項目 | NETWORKDAYS | NETWORKDAYS.INTL | WORKDAY | DAYS |
|---|---|---|---|---|
| 用途 | 期間の稼働日数を求める | 週末パターンを変えて稼働日数を求める | N営業日後の日付を求める | カレンダー日数を求める |
| 構文 | (開始日, 終了日, [祝日]) | (開始日, 終了日, [週末], [祝日]) | (開始日, 日数, [祝日]) | (終了日, 開始日) |
| 週末の定義 | 土日固定 | 数値または文字列で指定可能 | 土日固定 | 除外しない |
| 祝日除外 | あり | あり | あり | なし |
| 戻り値 | 日数(整数) | 日数(整数) | 日付 | 日数(整数) |
| 引数の順序 | 開始日→終了日 | 開始日→終了日 | 開始日→日数 | 終了日→開始日 |
NETWORKDAYS.INTLとの違い
NETWORKDAYS.INTL関数は、土日以外を週末に設定できる拡張版です。
=NETWORKDAYS.INTL(A2, B2, 7, 祝日!A2:A20)
第3引数の数値で週末パターンを指定します。たとえば「7」は金曜・土曜が休みです。
主な週末パターンは次のとおりです。
- 1 = 土曜・日曜(デフォルト・NETWORKDAYSと同じ)
- 2 = 日曜・月曜
- 7 = 金曜・土曜
- 11 = 日曜のみ
7文字の文字列でも指定できます。各文字が月〜日に対応し、「1」が休日、「0」が稼働日です。
=NETWORKDAYS.INTL(A2, B2, "0000011", 祝日!A2:A20)
「0000011」は土日が休みという意味です。飲食業やサービス業など、土日以外が定休日の場合に活躍しますよ。
通常のオフィスワークなら、土日固定のNETWORKDAYS関数で十分です。
WORKDAYとの違い
WORKDAY関数は、方向が逆です。
- NETWORKDAYS: 期間 → 稼働日数を返す
- WORKDAY: 日数 → 稼働日付を返す
たとえば「2025/4/1から10営業日後はいつ?」を求めるにはWORKDAY関数を使います。
=WORKDAY(A2, 10, 祝日!A2:A20)
結果は「2025/4/15」です。納期の計算によく使いますよ。
よくあるエラーと対処法
#VALUE!が出るときの原因と修正
NETWORKDAYS関数で#VALUE!が出る原因は、引数が日付として認識されていないことです。
よくある原因は次の3つです。
- セルに日付が「文字列」として入力されている
- 全角数字やスペースが混じっている
- 祝日リストに日付以外の値が含まれている
対処法はDATE関数で日付を作り直すことです。
=NETWORKDAYS(DATE(2025,4,1), DATE(2025,4,30))
DATE関数を経由すれば、確実に日付データとして処理されます。
セルの値が文字列かどうかを見分けるコツがあります。日付データなら右寄せ、文字列なら左寄せで表示されるので、配置をチェックしてみてください。
祝日が反映されないときの確認ポイント
祝日を指定したのに除外されない場合は、次の3点を確認しましょう。
- 祝日リストの日付形式: 祝日が文字列になっていないか
- セル範囲の指定ミス: 祝日リストの範囲がずれていないか
- 祝日が期間外: 指定した祝日が開始日〜終了日の範囲外
特に多いのが1つ目の「文字列問題」です。祝日セルをクリックして、数式バーに日付が表示されるか確認してください。
TIP
祝日リストを作るときは手入力よりもDATE関数を使うのがおすすめです。
“`
=DATE(2025,1,1)
“`
こうすれば確実に日付データになるので、認識エラーを防げますよ。
結果が日付で表示されるとき
NETWORKDAYS関数の結果は「日数(整数)」ですが、セルの表示形式が「日付」になっていると、数値ではなく日付のように表示されることがあります。
対処法はセルの表示形式を「数値」に変更することです。メニューから「表示形式」→「数値」→「数値」を選択すれば正しい日数が表示されますよ。
まとめ
NETWORKDAYS関数は、土日と祝日を除いた稼働日数を求める関数です。
ポイントを整理します。
- 構文は
=NETWORKDAYS(開始日, 終了日, [祝日])の最大3引数 - 土日は自動で除外される。祝日は第3引数で手動設定
- 開始日・終了日の両端を含む日数を返す
- 祝日リストは別シートにまとめるのが実務のおすすめ
- 土日以外を休みにしたいなら、NETWORKDAYS.INTL関数を使う
| やりたいこと | 使う関数 |
|---|---|
| 土日祝を除いた稼働日数 | NETWORKDAYS関数 |
| 週末パターンをカスタムしたい | NETWORKDAYS.INTL関数 |
| N営業日後の日付を知りたい | WORKDAY関数 |
| 土日祝を含むカレンダー日数 | DAYS関数 |
| 今日の日付を基準にしたい | TODAY関数と組み合わせ |
| 月末日を求めたい | EDATE関数と組み合わせ |
まずは =NETWORKDAYS(A2, B2) で土日を除いた稼働日数を計算するところから試してみてください。祝日リストを追加すれば、より正確な営業日計算ができますよ。
