【Excel】エクセルで営業日数・平日のみ・土日祝日をカウントする方法(期間内・月数・日数・営業日数の計算も)
エクセルで「今月の営業日数は何日あるか」「指定した期間内に平日が何日あるか」「土日祝日を除いた日数を計算したい」といった集計を行いたい場面は、業務スケジュールの管理や工数計算などでよく出てきます。しかし、カレンダーを手で数えるのは手間がかかり、祝日の扱いが特に難しいと感じている方も多いのではないでしょうか。
エクセルにはNETWORKDAYS関数・NETWORKDAYS.INTL関数・WORKDAY関数など、営業日数の計算に特化した関数が用意されています。これらを使いこなすことで、祝日リストを参照しながら正確な営業日数・平日日数・土日祝日の日数を自動計算することが可能です。
この記事では、エクセルで営業日数・平日のみ・土日祝日をカウントする方法について、基本的な関数の使い方から期間内の日数・月数の計算、さらに営業日数の応用的な計算まで丁寧に解説します。スケジュール管理や勤務日数の集計にすぐ役立てていただける内容です。
エクセルで営業日数・平日の日数をカウントする基本的な方法
それではまず、エクセルで営業日数・平日の日数をカウントする基本的な方法について解説していきます。営業日数の計算にはNETWORKDAYS関数が最もよく使われる関数で、土日と任意の祝日を除いた日数を求めることができます。
NETWORKDAYS関数で営業日数を計算する方法
NETWORKDAYS関数は、開始日から終了日までの期間内にある営業日数(土日を除いた日数)を返す関数です。祝日リストを指定することで、祝日も除いた正確な営業日数を計算できます。
=NETWORKDAYS(開始日, 終了日, [祝日])開始日:期間の開始日を指定する
終了日:期間の終了日を指定する
祝日:省略可能。祝日の日付が入ったセル範囲を指定する
=NETWORKDAYS(A1,B1)
(土日を除いた営業日数が返る)

=NETWORKDAYS(A1,B1,E1:E20)
(土日と祝日を除いた営業日数が返る)

NETWORKDAYS関数は開始日と終了日の両方を含めてカウントします。たとえば月曜日から金曜日の5日間を指定すると、結果は5になります。この仕様を理解しておくと、日数の計算結果のズレを防げます。
NETWORKDAYS.INTL関数で休日の曜日を自由に設定する方法
NETWORKDAYS関数は土日固定で除外されますが、NETWORKDAYS.INTL関数を使うと休日とする曜日を自由にカスタマイズできます。週休1日制や特殊な休日設定にも対応できる便利な関数です。
=NETWORKDAYS.INTL(開始日, 終了日, [週末], [祝日])週末:休日とする曜日を番号または文字列で指定する
1(省略時):土日が休日
2:日月が休日
3:月火が休日
11:日曜のみ休日
12:月曜のみ休日
17:土曜のみ休日

“0000011”:土日のみ休日(通常の週休2日)
“1000001”:月曜と日曜が休日
“0000001”:日曜のみ休日(週休1日)
| 週末パラメータ | 休日となる曜日 | 主な用途 |
|---|---|---|
| 1(省略時) | 土・日 | 一般的な週休2日制 |
| 11 | 日曜のみ | 週休1日制(日曜休み) |
| 17 | 土曜のみ | 週休1日制(土曜休み) |
| 7 | 金・土 | 中東式の休日設定 |
今月の営業日数を自動計算する数式
毎月の営業日数を自動で表示させる数式を作成しておくと、スケジュール管理がとても便利になります。
=NETWORKDAYS(DATE(YEAR(TODAY()),MONTH(TODAY()),1),
EOMONTH(TODAY(),0),祝日リストの範囲)
DATE(YEAR(TODAY()),MONTH(TODAY()),1):今月1日の日付
EOMONTH(TODAY(),0):今月末日の日付
(EOMonthは月末日を返す関数)

=NETWORKDAYS(DATE(A1,B1,1),EOMONTH(DATE(A1,B1,1),0),祝日リスト)
EOMONTH関数と組み合わせることで、月末日を手動で入力する必要がなく、どの月でも自動的に正確な営業日数が求まります。
エクセルで土日祝日の日数をカウントする方法
続いては、エクセルで土日・祝日の日数をカウントする方法を確認していきます。営業日数の逆算として、期間内の休日日数を求める方法も実務でよく使われます。
期間内の土日の日数を計算する方法
NETWORKDAYS関数を使えば営業日数が求まるため、期間の総日数から営業日数を引くことで土日の日数を計算できます。
総日数:=B1-A1+1
(終了日から開始日を引いて1を足すと期間の総日数)
営業日数:=NETWORKDAYS(A1,B1)
土日の日数:=(B1-A1+1)-NETWORKDAYS(A1,B1)
=EOMONTH(TODAY(),0)-DATE(YEAR(TODAY()),MONTH(TODAY()),1)+1
-NETWORKDAYS(DATE(YEAR(TODAY()),MONTH(TODAY()),1),EOMONTH(TODAY(),0))
総日数から営業日数を引いた差が土日の日数になります。この計算は祝日リストを指定しない場合の土日のみの休日数を求める場合に使います。
祝日の日数をCOUNTIFS関数でカウントする方法
祝日リストを用意している場合、COUNTIFS関数を使って特定の期間内に含まれる祝日の件数を数えることができます。
=COUNTIFS(E1:E20,”>=”&A1,E1:E20,”<=”&B1)
E1:E20,”<=”&EOMONTH(TODAY(),0))
祝日リストは毎年更新が必要です。内閣府が公表する祝日一覧を参考に、シート内に祝日リストとして管理しておくと毎年の計算に使い回せます。
土曜・日曜をそれぞれ別々にカウントする方法
土曜日だけ・日曜日だけの件数をそれぞれカウントしたい場合は、WEEKDAY関数とSUMPRODUCT関数を組み合わせる方法が有効です。
=SUMPRODUCT((WEEKDAY(ROW(INDIRECT(A1&”:”&B1)),2)=6)*1)【期間内の日曜日の日数を数える例】
=SUMPRODUCT((WEEKDAY(ROW(INDIRECT(A1&”:”&B1)),2)=7)*1)
2を指定すると月曜=1、火曜=2、…、土曜=6、日曜=7となる
エクセルで期間内の日数・月数を計算する方法
続いては、エクセルで期間内の日数や月数を計算する方法を確認していきます。DATEDIF関数やDAYS関数など、日付の差分を求めるための関数を使いこなすことで、さまざまな期間計算に対応できます。
DAYS関数・単純な引き算で期間の日数を求める方法
2つの日付の間の日数を求める最もシンプルな方法は、終了日から開始日を引き算することです。
=B1-A1
(終了日から開始日を引いた日数。開始日を含めない場合)
=B1-A1+1
(開始日も含めた日数)
=DAYS(B1,A1)
(終了日から開始日を引いた日数が返る)
=DATEDIF(A1,B1,“D”)
(開始日から終了日までの日数を返す)
DATEDIF関数はExcelの関数一覧に表示されない隠し関数ですが、年・月・日単位での期間計算ができる非常に便利な関数です。互換性のために残されている関数のため、現在も問題なく使用できます。
DATEDIF関数で年数・月数・日数を求める方法
DATEDIF関数は第3引数に指定する文字によって、年数・月数・日数を切り替えて計算できます。
=DATEDIF(開始日, 終了日, 単位)【単位の指定方法】
“Y”:期間内の満年数
“M”:期間内の満月数
“D”:期間内の日数
“YM”:年数を除いた1年未満の月数
“MD”:月数を除いた1か月未満の日数
“YD”:年数を除いた1年未満の日数
=DATEDIF(A1,TODAY(),“Y”)&“年”&DATEDIF(A1,TODAY(),“YM”)&“か月”&DATEDIF(A1,TODAY(),“MD”)&“日”
(例:「2年3か月15日」のような形式で表示される)
| 単位 | 返される値 | 使用例 |
|---|---|---|
| “Y” | 満年数 | 勤続年数・年齢の計算 |
| “M” | 満月数 | 契約期間の月数計算 |
| “D” | 日数 | 経過日数・残日数の計算 |
| “YM” | 端数の月数 | 「〇年〇か月」の表示に活用 |
| “MD” | 端数の日数 | 「〇か月〇日」の表示に活用 |
WORKDAY関数でN営業日後の日付を求める方法
「今日から10営業日後の日付はいつか」を求めたい場合はWORKDAY関数を使います。納期計算や締め切り日の設定に非常に役立つ関数です。
=WORKDAY(開始日, 日数, [祝日])【使用例:今日から10営業日後の日付を求める】
=WORKDAY(TODAY(),10)
=WORKDAY(TODAY(),10,E1:E20)
(E1:E20に祝日リストがある場合)
=WORKDAY.INTL(TODAY(),10,11,E1:E20)
(週末パラメータ11は日曜のみ休日)
WORKDAY関数の日数にマイナスの値を指定すると、指定した日数分遡った営業日を求めることもできます。「10営業日前の日付を調べたい」といった逆算にも活用できる便利な使い方です。
営業日数カウントに関する実務での応用テクニック
続いては、営業日数カウントを実務でさらに活用するための応用テクニックを確認していきます。祝日リストの管理方法から、スケジュール表への組み込みまで、実際の業務で役立つ内容をまとめました。
祝日リストを正しく管理・参照する方法
NETWORKDAYS関数やWORKDAY関数で祝日を正確に除外するためには、祝日リストを別シートに整備しておくことが大切です。
手順1:新しいシートを作成し、シート名を「祝日リスト」などにする。
手順2:A列に祝日の日付を入力する(1行に1つの日付)。
手順3:B列に祝日名を入力しておくと管理しやすい。
手順4:入力した範囲に名前を定義しておく(例:「祝日」と命名)。
手順5:数式の祝日引数に名前を使って参照する:
=NETWORKDAYS(A1,B1,祝日)
祝日リストに名前を定義しておくことで、数式が読みやすくなり、祝日の範囲が変わっても数式を修正する必要がなくなります。毎年の祝日追加・更新もリストに行を追加するだけで対応できます。
月別の営業日数一覧表を自動作成する方法
年間の月別営業日数を一覧表にしておくと、スケジュール管理や工数計画に非常に役立ちます。
手順1:A列に1月〜12月の月初日(1/1、2/1、…)を入力する。
手順2:B列に月末日をEOMONTH関数で自動計算する:
=EOMONTH(A2,0)
手順3:C列に営業日数をNETWORKDAYS関数で計算する:
=NETWORKDAYS(A2,B2,祝日)
手順4:A列の年を別セルで管理し、DATE関数と組み合わせると年を変えるだけで全月が更新される。
| 月 | 月初日(自動) | 月末日(自動) | 営業日数(自動) |
|---|---|---|---|
| 1月 | =DATE(A1,1,1) | =EOMONTH(B2,0) | =NETWORKDAYS(B2,C2,祝日) |
| 2月 | =DATE(A1,2,1) | =EOMONTH(B3,0) | =NETWORKDAYS(B3,C3,祝日) |
| 3月 | =DATE(A1,3,1) | =EOMONTH(B4,0) | =NETWORKDAYS(B4,C4,祝日) |
条件付き書式で土日祝日の行を自動着色する方法
カレンダー形式のスケジュール表では、土日祝日の行を自動的に色付けしておくと視認性が大きく向上します。
手順1:着色したい範囲(例:A2:F32)を選択する。
手順2:「ホーム」→「条件付き書式」→「新しいルール」をクリックする。
手順3:「数式を使用して書式設定するセルを決定」を選択する。
手順4:数式欄に「=WEEKDAY($A2,2)=6」と入力する(土曜日の判定)。
手順5:書式の背景色を薄い青に設定して「OK」をクリックする。
手順6:同様に日曜日は「=WEEKDAY($A2,2)=7」で薄い赤を設定する。
手順4の数式欄に:
=COUNTIF(祝日,$A2)>0
(祝日リストにその日の日付が含まれていれば着色される)
まとめ
この記事では、エクセルで営業日数・平日のみ・土日祝日をカウントする方法について、NETWORKDAYS関数・NETWORKDAYS.INTL関数の基本的な使い方から、土日祝日の日数の求め方、DATEDIF関数による期間の日数・月数計算、WORKDAY関数でのN営業日後の日付算出、さらに祝日リストの管理方法や条件付き書式との組み合わせまで幅広く解説しました。
営業日数の計算ではNETWORKDAYS関数と祝日リストの組み合わせが基本となります。毎年の祝日をリストとして整備しておくことで、年間を通じた正確な営業日数の自動計算が実現できます。
WORKDAY関数やDATEDIF関数なども組み合わせることで、納期計算・工数管理・勤務日数の集計など、さまざまな業務シーンに対応できるようになるでしょう。この記事を参考に、エクセルでの日付・営業日計算をぜひ実務に活かしてみてください。