営業日数を数えるにはNETWORKDAYSを使い、土日と指定した休業日を除きます。
開始日・終了日が営業日なら両方を含め、日本の祝日は休業日一覧へ自分で登録します。
この記事では、固定した2026年10月の入力で、総営業日・基準日を含む経過営業日・残り営業日を計算します。
ここでいう進捗率は営業日の経過割合で、タスクの完了率ではありません。
土日・祝日も含めた暦日の日数とは区別してください。
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で確認した記録です。

毎月自動更新する場合
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の式を変更前のコピーへ戻し、既存の休日一覧を残します。
公式仕様・参考資料
ISNUMBER:数値かどうかの判定/TODAY:現在の日付
2026年10月25日に公式仕様と配布ZIP内の式を照合しました。
画像と実シートの確認結果は2026年10月2日の記録です。
今回、Google Sheetsでの再計算や画面の再確認は行っていません。
練習ファイルの使い方
この記事ではformula-234.txtを使います。
XLSXの互換用の式とGoogle用の式の違いはZIPのREADMEで確認できます。
残り営業日のI2とNETWORKDAYS.INTLの式はZIPに含まれないため、必要な場合は本文から追加してください。





