以前エクセルで簡単なスケジュール管理表を作った時のことです。
あるタスクで開始日と終了日をこれくらいかな?って設定したら、いったい営業日は何日になるのだろう?って思ったことがありました。
会社の仕事なので非稼働日は除かないといけない。
でも、その期間には会社の休日や祝日がある。
カレンダーを見ながら「いち、にぃ、さん・・・」って数えなあかんのか?と。
どうやったら会社の休日も祝日もちゃんと除外して営業日ベースで数えられるんだろう?
そう思って調べたことがありました。
エクセルで営業日数を計算する方法(祝日や会社の休日を除いて数える)
エクセルで営業日数を計算する(数える)にはNETWORKDAYS関数を使います。
NETWORKDAYS関数の定義は下記の通りです。
NETWORKDAYS(開始日, 終了日, [祭日])
- 開始日:営業日数を数える対象期間の開始日を指定します(必ず設定が必要)
- 終了日:営業日数を数える対象期間の終了日を指定します(必ず設定が必要)
- 祭日:営業日数のカウントから除外する日を指定します(設定は任意)
<返値>
開始日から終了日までのうち、土日および祭日で指定された休日を除いた日数
※NETWORKDAYS関数は、土日を休日として扱います
NETWORKDAYS関数の使用が適する場面
下記の条件を満たすときに営業日数を数えるときは、NETWORKDAYS関数の利用が最適です。
- 土日を休日(非稼働日)として扱う
- 開始日と終了日が決まっていて、その間の営業日数を数えたい
- 任意の休日を設定し、その休日は営業日数に数えない
NETWORKDAYS関数の使用例
それではNETWORKDAYS関数の使い方を具体例を使って説明します。
営業日数を自動計算するタスク管理表
あるプロジェクトでタスク管理表をExcelで作ることになったとしましょう。
プロジェクトの開始日と終了日が厳格に決められています。
したがって、その期間内で各タスクにかける日数を配分しないといけません。
各タスクも開始日と終了日を決めて工数が足りない分は人を増やすなどの対策を打ちたいと考えています。
よって、このタスク管理表には次の要件が求められています。
- プロジェクトの開始日と終了日は決まっているため各タスクも開始日と終了日でスケジュールしたい
- 開始日と終了日を先に決めたとき、各タスクに実際に使える日数(営業日数)を計算したい
- 日数が不足するタスクには増員するなどの対策を打つ(だから日数を可視化する必要がある)
要件を満たすタスク管理表の作成例
上記の要件を満たすタスク管理表を簡単に作ってみました。

E列とF列に日付を入力すると、G列に自動でその間の営業日数が計算される仕組みにしています。
G列にはNETWORKDAYS関数を次のように設定しました。
=NETWORKDAYS([@[開始日(予定)]], [@[終了日(予定)]], 祝日マスター[休日])
第1引数はE列、第2引数はF列を指定しています。
第3引数にはテーブルで定義した祝日マスター(会社の休日や祝日を一覧化したもの)を指定しました。
下の表がその祝日マスターです。
会社の休日や祝日に加えて有給休暇も入ってます。
年始は多くの人が休むので休日扱いにして営業日数として数えないようにしました。

まとめ
以上で説明は終わりです。
NETWORKDAYS関数を使って営業日数を数える方法はお分かりいただけたでしょうか。
最後にポイントをまとめておきます。
- 土日および休日を除く営業日数を数えることは、NETWORKDAYS関数で実現できる
- NETWORKDAYS関数の第3引数に指定する休日は予めテーブルで定義しておく
上のまとめの2つ目のポイントについて少し補足しておきます。
休日一覧をテーブルで定義しておくのはメンテナンス性が良くなるのが理由の1つです。
これについて別記事で説明しているので参考にしてください。
なお、開始日からある日数が経過した日付を求める方法を知りたい場合はこちらの記事を読んでみてください。
コメント