「うちの会社は水曜と日曜が定休なんだけど、稼働日数ってどうやって出すの?」。スプレッドシートで勤怠管理やシフト計算をしていると、こんな場面がありますよね。
NETWORKDAYS関数なら土日を自動で除外できます。でも、土日以外が休みの職場には対応できません。
そんなときに使うのがNETWORKDAYS.INTL関数です。「どの曜日を休みにするか」を自由に指定して、稼働日数を計算できます。
この記事では基本の書き方から週末パターンの指定方法、似た関数との違いまで解説しますよ。
NETWORKDAYS.INTL関数とは?NETWORKDAYSとの違い
NETWORKDAYS.INTL関数(読み方: ネットワークデイズ・インターナショナル関数)は、週末パターンをカスタムして稼働日数を求める関数です。
「INTL」は International(国際)の略です。国や業種によって休日が異なることに対応するために作られました。
通常のNETWORKDAYS関数は「土日=休み」が固定です。NETWORKDAYS.INTL関数は、この週末の定義を自由に変えられます。
たとえば次のような職場で活躍しますよ。
- 飲食店・小売店(火曜定休、水曜定休など)
- 美容室・クリニック(月曜定休)
- 海外拠点(金曜・土曜が休みの中東地域など)
- 日曜だけ休みの工場
NOTE
土日が休みの一般的なオフィスワークなら、NETWORKDAYS関数で十分です。土日以外を休みにしたい場合にだけ、NETWORKDAYS.INTL関数を使いましょう。
NETWORKDAYS.INTL関数の基本構文と引数
基本構文
=NETWORKDAYS.INTL(開始日, 終了日, [週末], [祝日])
NETWORKDAYS関数の引数に「週末」が追加された形です。全部で4つの引数があります。
引数一覧
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 開始日 | 必須 | 期間の始まりとなる日付 |
| 終了日 | 必須 | 期間の終わりとなる日付 |
| 週末 | 任意 | 週末(休日)とする曜日パターン(省略時は土日) |
| 祝日 | 任意 | 除外する祝日の日付リスト |
開始日と終了日が同じ日で、かつ稼働日なら結果は「1」です。開始日が終了日より後の場合は負の値を返します。
WARNING
第3引数が「週末」、第4引数が「祝日」です。NETWORKDAYS関数では第3引数が「祝日」なので、引数の位置がずれる点に注意してくださいね。
第3引数(週末):数値で指定する方法
第3引数には数値を入れて、どの曜日を週末にするかを指定します。
よく使う数値パターンは次のとおりです。
| 数値 | 週末(休日)になる曜日 |
|---|---|
| 1 | 土曜・日曜(デフォルト) |
| 2 | 日曜・月曜 |
| 3 | 月曜・火曜 |
| 4 | 火曜・水曜 |
| 5 | 水曜・木曜 |
| 6 | 木曜・金曜 |
| 7 | 金曜・土曜 |
| 11 | 日曜のみ |
| 12 | 月曜のみ |
| 13 | 火曜のみ |
| 14 | 水曜のみ |
| 15 | 木曜のみ |
| 16 | 金曜のみ |
| 17 | 土曜のみ |
たとえば、金曜・土曜が休みの中東拠点の稼働日数を求めるなら次のように書きます。
=NETWORKDAYS.INTL(A2, B2, 7)
日曜だけ休みの工場なら「11」を指定します。
=NETWORKDAYS.INTL(A2, B2, 11)
第3引数(週末):7文字の文字列で指定する方法
数値パターンにない組み合わせ(たとえば「水曜と日曜が休み」)は、7文字の文字列で指定します。
各文字が月曜から日曜に対応しています。「1」が休日、「0」が稼働日です。
月 火 水 木 金 土 日
↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 1 0 0 0 1
水曜と日曜が休みなら「0010001」です。
=NETWORKDAYS.INTL(A2, B2, "0010001")
いくつか例を挙げます。
| 文字列 | 休日になる曜日 | 想定される業種 |
|---|---|---|
| “0000011” | 土曜・日曜 | 一般オフィス |
| “0010001” | 水曜・日曜 | 飲食店 |
| “1000001” | 月曜・日曜 | 美容室 |
| “0000001” | 日曜のみ | 工場・小売 |
| “0000000” | 休日なし | 全日稼働 |
TIP
「0000000」を指定すると週末なし(毎日稼働)になります。祝日だけを除外したいときに便利ですよ。
NETWORKDAYS.INTL関数の基本的な使い方
数値で週末を指定する(日曜のみ休み)
日曜だけ休みの職場で、2025/4/1から2025/4/30までの稼働日数を求めます。
=NETWORKDAYS.INTL("2025/4/1", "2025/4/30", 11)
結果は「26」です。4月は30日間のうち日曜が4日あるので、30 – 4 = 26日ですね。
ちなみに同じ期間をNETWORKDAYS関数で計算すると「22」です。土日の8日が除外されるため、差が出ます。
文字列で週末を指定する(水曜・日曜休み)
水曜と日曜が定休の飲食店で、同じ期間の稼働日数を求めます。
=NETWORKDAYS.INTL("2025/4/1", "2025/4/30", "0010001")
結果は「22」です。水曜4日と日曜4日の計8日が除外されます。
祝日も除外する
第4引数に祝日リストを追加すれば、週末と祝日の両方を除外できます。
=NETWORKDAYS.INTL(A2, B2, "0010001", 祝日!A2:A20)
水曜・日曜を休みにしつつ、祝日シートの日付も差し引いた稼働日数が返ります。
NOTE
祝日の設定方法はNETWORKDAYS関数と同じです。別シートに祝日マスタを作って参照する方法がおすすめですよ。
実務で使えるNETWORKDAYS.INTL関数の活用例
シフト勤務の月間稼働日数を計算する
シフト制の店舗で、スタッフごとに定休日が違う場合を考えてみましょう。
| A列(スタッフ名) | B列(定休日パターン) | C列(月初日) | D列(月末日) | E列(稼働日数) | |
|---|---|---|---|---|---|
| 2行目 | 田中 | 0010001 | 2025/4/1 | 2025/4/30 | ? |
| 3行目 | 鈴木 | 1000001 | 2025/4/1 | 2025/4/30 | ? |
| 4行目 | 佐藤 | 0000001 | 2025/4/1 | 2025/4/30 | ? |
B列に各スタッフの週末パターンを文字列で入れておきます。E2セルには次の数式を入力します。
=NETWORKDAYS.INTL(C2, D2, B2, 祝日!A2:A20)
B2セルの値(”0010001″)が第3引数として読み込まれます。数式を下にコピーすれば、スタッフごとに異なる稼働日数が自動計算されますよ。
海外拠点の稼働日数を比較する
日本(土日休み)と中東拠点(金土休み)の稼働日数を並べて比較する例です。
=NETWORKDAYS.INTL(A2, B2, 1)
=NETWORKDAYS.INTL(A2, B2, 7)
第3引数を「1」(土日休み)と「7」(金土休み)で変えるだけです。同じ期間でも拠点によって稼働日数が異なることが一目でわかります。
全日稼働で祝日だけ除外する
週末の概念がない24時間営業の施設で、祝日だけを除外した日数を求めたい場合です。
=NETWORKDAYS.INTL(A2, B2, "0000000", 祝日!A2:A20)
「0000000」で毎日稼働を指定し、第4引数で祝日だけを除外します。DAYS関数では祝日を除外できないので、この方法が便利ですよ。
よくあるエラーと対処法
#VALUE!が出るときの原因と修正
NETWORKDAYS.INTL関数で#VALUE!が出る原因は主に3つです。
- 日付が「文字列」として入力されている
- 第3引数の文字列が7文字でない(例: “001001”は6文字でエラー)
- 第3引数の文字列に「0」「1」以外の文字が含まれている
日付の文字列問題は、DATE関数で日付を作り直すと解決します。
=NETWORKDAYS.INTL(DATE(2025,4,1), DATE(2025,4,30), "0010001")
第3引数の文字列は、必ず7文字で「0」と「1」だけを使ってください。
#NUM!が出るときの原因と修正
第3引数に無効な数値を指定すると#NUM!エラーになります。
使える数値は「1〜7」と「11〜17」の14種類だけです。「8」「9」「10」などは無効なので注意しましょう。
=NETWORKDAYS.INTL(A2, B2, 8)
この数式は#NUM!エラーになります。数値パターンに該当しない組み合わせは、7文字の文字列で指定してくださいね。
祝日が反映されないときの確認ポイント
祝日を指定したのに除外されない場合は、次の3点を確認しましょう。
- 祝日リストの日付形式: 祝日が文字列になっていないか
- 引数の位置: 祝日リストを第3引数に入れていないか(第4引数が正しい位置です)
- 祝日が期間外: 指定した祝日が開始日〜終了日の範囲外
特に注意したいのが「引数の位置」です。NETWORKDAYS関数では祝日が第3引数ですが、NETWORKDAYS.INTL関数では第4引数です。
NETWORKDAYS.INTL関数と似た関数の違い・使い分け
NETWORKDAYSファミリーと関連関数を表で比較します。
| 項目 | NETWORKDAYS.INTL | NETWORKDAYS | WORKDAY.INTL | WORKDAY |
|---|---|---|---|---|
| 用途 | 週末カスタムで稼働日数 | 土日固定で稼働日数 | 週末カスタムでN営業日後 | 土日固定でN営業日後 |
| 週末の定義 | 数値or文字列で自由に指定 | 土日固定 | 数値or文字列で自由に指定 | 土日固定 |
| 祝日除外 | あり(第4引数) | あり(第3引数) | あり(第4引数) | あり(第3引数) |
| 戻り値 | 日数(整数) | 日数(整数) | 日付 | 日付 |
NETWORKDAYSとの使い分け
違いは「週末パターンを変えられるかどうか」の1点だけです。
- 土日休み → NETWORKDAYS関数がシンプルでおすすめ
- 土日以外が休み → NETWORKDAYS.INTL関数を使う
NETWORKDAYS.INTL関数で第3引数を「1」にすれば、NETWORKDAYS関数とまったく同じ結果になります。
WORKDAY.INTLとの関係
WORKDAY.INTL関数は、NETWORKDAYS.INTL関数の「逆方向」です。
- NETWORKDAYS.INTL: 期間 → 稼働日数を返す
- WORKDAY.INTL: 日数 → 稼働日付を返す
たとえば「水曜・日曜休みで10営業日後はいつ?」を求めるならWORKDAY.INTLを使います。
=WORKDAY.INTL(A2, 10, "0010001", 祝日!A2:A20)
第3引数の週末パターンはNETWORKDAYS.INTL関数と共通です。同じ値を使えば計算結果が整合しますよ。
DAYSとの使い分け
DAYS関数は、週末も祝日も除外しないカレンダー日数を返します。
| やりたいこと | 使う関数 |
|---|---|
| 週末カスタムで稼働日数 | NETWORKDAYS.INTL関数 |
| 土日祝を除いた稼働日数 | NETWORKDAYS関数 |
| 週末・祝日を含むカレンダー日数 | DAYS関数 |
まとめ
NETWORKDAYS.INTL関数は、週末パターンをカスタムして稼働日数を求める関数です。
ポイントを整理します。
- 構文は
=NETWORKDAYS.INTL(開始日, 終了日, [週末], [祝日])の最大4引数 - 第3引数の数値(1〜7、11〜17)で週末パターンを選ぶ
- 数値にない組み合わせは7文字の文字列(”0010001″など)で指定する
- 祝日は第4引数(NETWORKDAYS関数の第3引数とはずれるので注意)
- 土日休みならNETWORKDAYS関数がシンプル
| やりたいこと | 使う関数 |
|---|---|
| 土日以外の休日パターンで稼働日数 | NETWORKDAYS.INTL関数 |
| 土日祝を除いた稼働日数 | NETWORKDAYS関数 |
| 週末カスタムでN営業日後の日付 | WORKDAY.INTL関数 |
| 土日祝を除いたN営業日後の日付 | WORKDAY関数 |
| 今日の日付を基準にしたい | TODAY関数と組み合わせ |
| カレンダー日数 | DAYS関数 |
まずは =NETWORKDAYS.INTL(A2, B2, 11) で日曜だけ休みの稼働日数を計算してみてください。7文字の文字列を使えば、どんな休日パターンにも対応できますよ。
