Amazonで商品を見るセール会場へ

Googleスプレッドシート│営業日数と経過日数を求める関数|NETWORKDAYS

営業日数を数えるにはNETWORKDAYSを使い、土日と指定した休業日を除きます。

開始日・終了日が営業日なら両方を含め、日本の祝日は休業日一覧へ自分で登録します。

この記事では、固定した2026年10月の入力で、総営業日・基準日を含む経過営業日・残り営業日を計算します。

ここでいう進捗率は営業日の経過割合で、タスクの完了率ではありません。

土日・祝日も含めた暦日の日数とは区別してください。

5記事共通の練習ファイル(ZIP)をダウンロードできます。

ZIPを展開し、layout-practice.xlsxをGoogle Sheetsへ読み込んで「営業日」シートを開きます。

Google用の式はformula-234.txtにあり、当月の初日・末日と、総営業日・経過営業日・経過率の5本を収録しています。

実務のシートへ入れる前にシートを複製し、既存の式やルールを控えてください。

目次

コピペで使える数式まとめ(総営業日・経過営業日・進捗率・残り営業日)

A2に開始日、B2に終了日、C2に基準日(当日)、D2:D10に休業日の一覧が入っている前提です。

意味と注意点は下の各節で説明します。

求めるもの数式
総営業日数=NETWORKDAYS(A2,B2,D2:D10)
経過営業日数(期間外を0と終了日で止める)=IF(C2<A2,0,NETWORKDAYS(A2,MIN(C2,B2),D2:D10))
進捗率(経過率)=IF(F2=0,"対象営業日なし",G2/F2)
残り営業日数=MAX(0,F2-G2)
今月の初日=EOMONTH(TODAY(),-1)+1
今月の末日=EOMONTH(TODAY(),0)
週末を指定する営業日数(この式は土日休み)=NETWORKDAYS.INTL(A2,B2,"0000011",D2:D10)

進捗率の式は F2 に総営業日数、G2 に経過営業日数が入っている前提です。

割る数が0のときにエラーを出さないため、IF で先に0を判定しています。

残り営業日数の MAX(0,…) は、終了日を過ぎてもマイナスにならないようにするためのものです。

スポンサーリンク

営業日シートに日付を入力する

セル入力
A2:開始日2026-10-01
B2:終了日2026-10-31
C2:基準日2026-10-02
D2:休業日2026-10-12
D3:D10空欄

この例は土日休みで、10月12日を除外します。

10月12日は2026年のスポーツの日として内閣府の一覧で確認できます。

D列は祝日の名称ではなく、日付の値を入れる列です。

A2・B2・C2は空欄にせず、日付として入力してください。

出力にはF2:I2を使うため、既存データがある場合は別の練習用シートで試します。

総営業日・経過営業日・経過率を計算する

F2へ総営業日を求める式を入れます。

開始日と終了日が営業日なら、その両方も数えます。

=NETWORKDAYS(A2,B2,D2:D10)

G2へ基準日までの営業日を求める式を入れます。

固定期間を扱うので、期間前なら0、期間後なら終了日までに抑えます。

=IF(C2<A2,0,NETWORKDAYS(A2,MIN(C2,B2),D2:D10))

H2へ次の式を入れ、表示形式をパーセントにします。

総営業日が0の場合は割り算をせず、対象営業日なしと表示します。

=IF(F2=0,"対象営業日なし",G2/F2)

I1に「残り営業日」と入力し、I2へ次の式を入れます。

=MAX(0,F2-G2)

基準日を経過営業日に含めるため、I2は基準日の翌日以降に残る営業日数です。

この入力なら21日−2日で19日となり、当日の残り勤務時間は表しません。

確認結果と境界の日付

入力条件Google Sheetsの確認結果
2026-10-02総21日/経過2日/9.52%
C2を2026-09-30へ変更経過0日/0%
C2を2026-11-01へ変更経過21日/100%
A2を10月3日、B2を10月4日へ変更総0日/経過0日/対象営業日なし

10月2日の営業日を含む値であり、その日の勤務が終わったことを表す値ではありません。

上表は2026年10月2日に、基準日・期間の変更と元の入力への復旧までGoogle Sheetsで確認した記録です。

Google Sheetsの営業日計算。2026年10月の総営業日21、10月2日まで2日、経過率9.52パーセント
Google Sheetsで練習用データを確認(2026/10/02時点の表示)。

毎月自動更新する場合

A2を当月初日に、B2を当月末日にするには、次の式を順に入れます。

C2は固定した検証日です。

実務で当日を基準に自動更新する場合は、C2へ =TODAY() を入れます。

A2・B2だけを当月の式にしてC2を固定日のままにすると、経過営業日数は今日までの値になりません。

=EOMONTH(TODAY(),-1)+1
=EOMONTH(TODAY(),0)

TODAYは最後に再計算された時点の当日の日付を返します。

日付が更新されない場合は、ファイルの設定でタイムゾーンと再計算の設定を確認します。

2026年10月2日の検証用シートは、日本のタイムゾーンで確認しました。

開始日が終了日より後になった場合は、式で隠さず入力した期間を直してください。

祝日と会社の休業日をそろえる

Google の公式ヘルプでは、NETWORKDAYS の構文は NETWORKDAYS(start_date, end_date, [holidays]) で、第3引数の holidays は「休日として扱う日付のシリアル番号を含む範囲または配列定数」と説明されています。

また、この関数が週末として扱うのは土曜日と日曜日だけです(Google ドキュメント エディタ ヘルプ)。

つまり、祝日リストは次の2つの形で渡せます。

  • 範囲で渡す:D2:D10 のように、シートに縦に並べた日付のセル範囲を指定する(本記事の方法)
  • 配列定数で渡す:{DATE(2026,10,12)} のように式の中に直接書く(件数が少ないとき)

範囲で渡す場合は、セルの中身を日付の値にします。

=ISNUMBER(D2) が FALSE なら数値として扱われていません。

右寄せなどの配置は文字列にも設定できるので、判定には使えません。

TRUE は数値であることを示すだけで、意図した日付かどうかまでは保証しません。

日付表示にして年月日も確認し、この練習なら =DATE(2026,10,12) を入力すると値を明確にできます。

会社の休業日(夏季休暇・年末年始・創立記念日など)は、同じ列に並べて足すだけで反映されます。

祝日と休業日を別の列にしたい場合は、2つの範囲を {D2:D10;E2:E10} のように縦に連結して渡します。

NETWORKDAYSは日本の祝日を自動で取得しません。

対象年の祝日、振替休日、会社独自の休業日をD列へ入れます。

年が変わったら内閣府の一覧で対象年を確認し、日付データを更新してください。

この練習の休日範囲はD2:D10です。

休日が10行目を超える場合は、F2とG2の両方の範囲を休日一覧の最終行まで広げます。

土日以外を毎週の休みにする場合はNETWORKDAYS.INTLの週末指定を使います。

土日以外が休みの場合は NETWORKDAYS.INTL を使う

NETWORKDAYS は土日を固定で週末として扱うため、「日曜だけ休み」「水曜と日曜が休み」といった職場では使えません。

その場合は週末を指定できる NETWORKDAYS.INTL を使います。

構文は NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays]) です(Google ドキュメント エディタ ヘルプ)。

第3引数の weekend は、番号か7桁の文字列で指定します。

指定意味
1土曜・日曜が週末(省略時と同じ)
2日曜・月曜が週末
7金曜・土曜が週末(2〜7は1日ずつずれていく)
11日曜だけが週末
17土曜だけが週末(11〜17は1日ずつずれていく)
"0000011"7桁の文字列。先頭が月曜、末尾が日曜で、0が稼働日・1が週末。この例は土日が週末

日曜だけ休みなら、次のどちらでも同じです。

=NETWORKDAYS.INTL(A2,B2,11,D2:D10)
=NETWORKDAYS.INTL(A2,B2,"0000001",D2:D10)

水曜と日曜が休みのように番号で表せない組み合わせは、文字列で指定します(月火水木金土日の順で、水と日に1を立てる)。

=NETWORKDAYS.INTL(A2,B2,"0010001",D2:D10)

総営業日数を求めるF2と、経過営業日数を求めるG2の両方で、NETWORKDAYS.INTL の第3引数に同じ週末指定、第4引数に同じ休日範囲を指定します。

G2の期間前・期間後を抑えるIFとMINは残します。

H2の経過率とI2の残り営業日数は、F2・G2を参照するため式を変えません。

たとえば日曜だけを休みにするなら、F2は上記の第3引数が11の式に替え、G2は次の式に替えます。

=IF(C2<A2,0,NETWORKDAYS.INTL(A2,MIN(C2,B2),11,D2:D10))

水曜・日曜休みなら、このG2の11も"0010001"へ替えます。

この指定は毎週の休日に使うため、特定の土曜日だけ出勤する不規則な勤務表には、そのまま当てはめないでください。

値が合わない場合と戻し方

  • 祝日が除かれていない:休業日の値と、F2・G2の休日範囲を確認する。=ISNUMBER(D2) が FALSE なら日付として認識されていない。
  • 進捗率が100%を超える:F2・G2で休日条件が同じか、経過営業日の式で終了日を上限にしているか確認する。MIN(C2,B2) で終了日で止める。
  • 期間が始まる前なのに値が出る:IF(C2<A2,0,…) の判定が入っていない。
  • #DIV/0! が出る:総営業日が0。IF(F2=0,…) で先に判定する。
  • 土曜出勤がある職場で数が合わない:NETWORKDAYS は土日固定。NETWORKDAYS.INTL に替える(上の節)。
  • 月が変わっても数字が変わらない:開始日・終了日・基準日が固定値になっていないか確認する。A2を =EOMONTH(TODAY(),-1)+1、B2を =EOMONTH(TODAY(),0)、C2を =TODAY() にすると、当月の今日までを基準にできる。
  • 進捗率が小数で出る:H2の式とF2・G2の値を確認し、正しければ表示形式をパーセントにする。

土日が数えられる、休業日が除外されない場合は、日付が文字列になっていないか、休日一覧の範囲が足りるかを調べます。

日付を式へ直接書く場合はDATEを使い、10/12/2026のような割り算になる書き方を避けます。

練習を戻すときはA2・B2・C2・D2を最初の入力へ戻します。

実務のシートから外すときは、今回追加したF2:I2の式を変更前のコピーへ戻し、既存の休日一覧を残します。

公式仕様・参考資料

NETWORKDAYS

ISNUMBER:数値かどうかの判定/TODAY:現在の日付

2026年10月25日に公式仕様と配布ZIP内の式を照合しました。

画像と実シートの確認結果は2026年10月2日の記録です。

今回、Google Sheetsでの再計算や画面の再確認は行っていません。

国民の祝日について:対象年と振替休日

練習ファイルの使い方

この記事ではformula-234.txtを使います。

XLSXの互換用の式とGoogle用の式の違いはZIPのREADMEで確認できます。

残り営業日のI2とNETWORKDAYS.INTLの式はZIPに含まれないため、必要な場合は本文から追加してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

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