※本記事には広告・アフィリエイトリンクが含まれます。
「この案件、締め切りまで営業日はあと何日?」。土日や祝日を除いた日数を、カレンダーを見ながら数えるのは手間がかかります。ExcelのNETWORKDAYS関数を使えば、開始日から終了日までの稼働日の日数を求められます。
この記事では、Microsoft サポートの「NETWORKDAYS 関数」と「NETWORKDAYS.INTL 関数」のページをもとに、NETWORKDAYS関数の使い方を5つのポイントで整理します。後半の、仕事の表での使い方は、この記事の提案です。
※Microsoft サポートでは、NETWORKDAYS関数の適用先として、Excel for Microsoft 365、Excel 2024、Excel 2021、Excel 2019、Excel 2016などが挙げられています。画面や表示は、使っているExcelによって異なることがあります。
NETWORKDAYS関数とは
稼働日の日数を返す関数
Microsoft サポートでは、NETWORKDAYS関数は、開始日から終了日までの期間に含まれる稼動日の日数を返す関数と説明されています。稼働日とは、土曜、日曜、および指定された休日を除く日のことです。
どんなときに使う?
Microsoft サポートでは、特定期間内の稼動日数を基準にして従業員の給与を計算するときに使用する、と紹介されています。
書式
NETWORKDAYS(開始日, 終了日, [祭日])
| 引数 | 必須かどうか | 内容 |
|---|---|---|
| 開始日 | 必須 | 起算日を表す日付 |
| 終了日 | 必須 | 対象期間の最終日を表す日付 |
| 祭日(休日) | オプション | 稼働日数の計算から除外する日付のリスト |
NETWORKDAYS関数の5つのポイント
1. 土日は自動で除かれる
NETWORKDAYS関数では、土曜と日曜は稼働日から除かれます。開始日と終了日だけを指定すれば、土日を除いた日数が返ります。
2. 祝日は3つめの引数で指定する
国民の祝日や変動休日など、稼働日数の計算から除外する日付は、3つめの引数で指定します。Microsoft サポートでは、日付を含む一連のセルか、日付を示すシリアル値の配列定数で指定できるとされています。
3. 日付はDATE関数か数式で入れる
Microsoft サポートでは、日付は、DATE関数を使って入力するか、他の数式または他の関数の結果として指定するよう案内されています。日付を文字列として入力した場合、エラーが発生することがあると書かれています。
4. 無効な日付は#VALUE!
引数に無効な日付を指定すると、エラー値 #VALUE! が返されるとされています。
5. 土日以外の休みならNETWORKDAYS.INTL
週末の曜日と日数を示すパラメーターを使って稼動日を計算するには、NETWORKDAYS.INTL関数を使うよう案内されています。
5つのポイント早見表
| ポイント | Microsoft サポートに書かれている内容 |
|---|---|
| 土日 | 稼働日から除かれる |
| 祝日 | 3つめの引数で日付のリストを指定 |
| 日付の入れ方 | DATE関数か、数式・関数の結果で |
| エラー | 無効な日付は #VALUE! |
| 週末を変える | NETWORKDAYS.INTL関数を使う |
Microsoft サポートの使用例
サンプルデータ
Microsoft サポートの使用例では、次のようなデータが使われています。
| セル | 日付 | 説明 |
|---|---|---|
| A2 | 2012/10/1 | プロジェクトの開始日 |
| A3 | 2013/3/1 | プロジェクトの終了日 |
| A4 | 2012/11/22 | 祝日 |
| A5 | 2012/12/4 | 祝日 |
| A6 | 2013/1/21 | 祝日 |
数式と結果
| 数式 | 説明 | 結果 |
|---|---|---|
| =NETWORKDAYS(A2,A3) | 開始日から終了日までの稼働日の日数 | 110 |
| =NETWORKDAYS(A2,A3,A4) | 2012/11/22の祝日を除いた場合 | 109 |
| =NETWORKDAYS(A2,A3,A4:A6) | 3日間の祝日を除いた場合 | 107 |
祝日は範囲で指定できる
3つめの使用例のように、祝日を並べたセル範囲(A4:A6)をまとめて指定できます。祝日を1日足すごとに、結果が1日ずつ減っているのがわかります。
NETWORKDAYS.INTL関数で週末を変える
書式
NETWORKDAYS.INTL(開始日, 終了日, [週末], [休日])
Microsoft サポートでは、週末の曜日とその日数を示すパラメーターを使って、2つの日付の間の稼働日数を返す関数と説明されています。週末および休日として指定した日は、すべて稼働日と見なされません。
週末番号
| 週末番号 | 週末の曜日 |
|---|---|
| 1 または省略 | 土曜日と日曜日 |
| 2 | 日曜日と月曜日 |
| 7 | 金曜日と土曜日 |
| 11 | 日曜日のみ |
| 17 | 土曜日のみ |
週末番号は1〜7と11〜17が用意されていて、上の表はその一部です。
週末を文字列で指定する
週末は、7文字の文字列でも指定できます。文字列の各文字は月曜日から始まる各曜日を表し、1は非稼働日、0は稼働日を表します。たとえば、0000011と指定すると土曜日と日曜日が週末になると説明されています。1111111と指定すると、常に0が返されるとされています。
NETWORKDAYS.INTL関数の注意点
開始日が終了日より後なら負の値
Microsoft サポートでは、開始日が終了日より後の場合、稼働日数と同じ大きさの負の値が返されるとされています。
エラーになる場合
- 開始日または終了日が、現在の日付基準値の範囲外の場合は #NUM!
- 週末文字列が無効な長さの場合、または無効な文字が含まれている場合は #VALUE!
使用例
| 数式・条件 | 結果 |
|---|---|
| =NETWORKDAYS.INTL(DATE(2006,1,1),DATE(2006,1,31)) | 22 |
| =NETWORKDAYS.INTL(DATE(2006,2,28),DATE(2006,1,31)) | -21 |
| 2006/1/1〜2006/2/1、週末番号7(金曜日と土曜日)、休日2日(2006/1/2と2006/1/16を配列定数で指定) | 22 |
1つめの例について、Microsoft サポートでは、2つの日付間の合計31日から、非稼働日である週末の9日(土曜日5日と日曜日4日)を引いた結果と説明されています。
日付のしくみとNETWORKDAYS
日付はシリアル値で計算されている
Microsoft サポートの「NETWORKDAYS 関数」のページでは、Excelは日付を連続したシリアル値として処理することで日付の計算をしていると説明されています。既定では、1900年1月1日がシリアル値1として保存され、2012年1月1日は1900年1月1日から40,909日後に当たるので、シリアル値は40909になるとされています。
文字列の日付に注意する
日付が文字列として入っていると、見た目は日付でもExcelがシリアル値として扱えないことがあります。Microsoft サポートで、日付を文字列として入力した場合にエラーが発生することがあると注意されているのは、このためです。
2つの関数の違い
| 項目 | NETWORKDAYS | NETWORKDAYS.INTL |
|---|---|---|
| 週末 | 土曜と日曜 | 週末番号や7文字の文字列で指定 |
| 休日の指定 | 3つめの引数 | 4つめの引数 |
| 書式 | NETWORKDAYS(開始日, 終了日, [祭日]) | NETWORKDAYS.INTL(開始日, 終了日, [週末], [休日]) |
休日の日付の順番
NETWORKDAYS.INTL関数のページでは、休日の日付またはシリアル値は、任意の順序で指定できるとされています。祝日リストを日付順に並べ替えなくても使えます。
使うときの手順
ここでは、Microsoft サポートの使用例と同じ並べ方で、NETWORKDAYS関数を使う手順を整理します。
- A2セルに開始日、A3セルに終了日を入力する
- A4セルから下に、祝日や休業日を1日ずつ入力する
- 結果を出したいセルに =NETWORKDAYS(A2,A3,A4:A6) のように入力する
- 祝日の行を増やしたら、範囲(A4:A6の部分)も広げる
祝日を入れないときは、=NETWORKDAYS(A2,A3) のように、開始日と終了日だけを指定します。
仕事の表での使い方
ここからは、Microsoft サポートの説明をもとにした、この記事の提案です。
祝日リストを別の場所にまとめる
祝日や会社の休業日を、シートの端や別シートに1列で並べておくと、NETWORKDAYS関数の3つめの引数にその範囲を指定するだけで済みます。年が変わったら、そのリストだけ更新すればよくなります。
締め切りまでの残り営業日を出す
開始日にTODAY関数の結果、終了日に締め切り日のセルを指定すると、締め切りまでの稼働日の日数を出せます。Microsoft サポートでは、日付は他の関数の結果として指定できるとされています。
休みの曜日が違うチームは.INTLで
土日以外が休みのチームやシフトがある場合は、NETWORKDAYS.INTL関数の週末番号や7文字の文字列で、休みの曜日を指定してみてください。
よくある質問
開始日と終了日は日数に含まれる?
Microsoft サポートの使用例では、2006年1月1日から1月31日までについて「合計31日」から週末を引いて22と説明されているため、開始日と終了日も期間に含めて数えています。
祝日は自動で除かれる?
NETWORKDAYS関数で自動で除かれるのは土曜と日曜です。祝日は3つめの引数で指定します。
日付を「”2026/10/24″」のように入れてもいい?
Microsoft サポートでは、日付を文字列として入力した場合、エラーが発生することがあるとされています。DATE関数を使うか、日付が入ったセルを指定するのがよいでしょう。
結果がマイナスになったのはなぜ?
NETWORKDAYS.INTL関数では、開始日が終了日より後の場合、負の値が返されるとされています。開始日と終了日が逆になっていないか確かめてください。
NETWORKDAYS関数で営業日の数え間違いを減らそう
NETWORKDAYS関数は、開始日から終了日までの、土日と指定した休日を除いた稼働日の日数を返す関数です。祝日は3つめの引数で日付のリストを指定し、日付はDATE関数か数式の結果で入れます。土日以外が休みの場合は、NETWORKDAYS.INTL関数で週末の曜日を指定しましょう。