プロジェクト管理に役立つ!エクセルで曜日指定休日を含めた稼働日計算の手順

エクセルで曜日指定休日を含めた稼働日計算の手順 数式/関数
この記事は約5分で読めます。

土日を休日とした場合に営業日数をカウントするにはNETWORKDAYS関数を使います。
詳しくはこちらの記事で紹介しています。

しかし、この方法には1つ問題があります。
それは土日が休日であるという前提で考えているということです。

でも、土日は休みではなくて、月曜日が休みだという場合もありますよね。
「土日が休みじゃないと営業日数を数えられないのか??」ってなりますね。
それを解決するのがこの記事で紹介する方法です。

この記事でわかること
  • 土日が営業日であっても正しく営業日数を計算する方法がわかる
  • 使用するNETWORKDAYS.INTL関数の使い方がわかる

エクセルで曜日指定休日を含めた稼働日計算の方法

任意の曜日を休日として扱うためにはNETWORKDAYS.INTL関数を使います。
まずはNETWORKDAYS.INTL関数の定義を確認しておきます。

NETWORKDAYS.INTL関数の定義

NETWORKDAYS.INTL(開始日, 終了日, [週末], [祭日])

  1. 開始日:営業日数を数える対象期間の開始日を指定します(必ず設定が必要)
  2. 終了日:営業日数を数える対象期間の終了日を指定します(必ず設定が必要)
  3. 週末:毎週の休日として扱う曜日を指定する数値※1(設定は任意)
  4. 祭日:営業日数のカウントから除外する日を指定します(設定は任意)

<返値>
開始日から終了日までのうち、週末祭日で指定された休日を除いた日数

第3引数の値休日として扱われる曜日第3引数の値休日として扱われる曜日
1土曜日と日曜日11日曜日のみ
2日曜日と月曜日12月曜日のみ
3月曜日と火曜日13火曜日のみ
4火曜日と水曜日14水曜日のみ
5水曜日と木曜日15木曜日のみ
6木曜日と金曜日16金曜日のみ
7金曜日と土曜日17土曜日のみ
※1 毎週の休日として扱う曜日を指定する数値の一覧

ちなみにNETWORKDAYS.INTL関数の第3引数を1にすればNETWORKDAYS関数と全く同じ動きになります。

NETWORKDAYS.INTL関数の使用が適する場面

NETWORKDAYS.INTL関数とNETWORKDAYS関数との違いは、「週末」設定の有無にあります。
定休日を土日に固定するのがNETWORKDAYS関数、任意の曜日を設定できるのがNETWORKDAYS.INTL関数です。
よって、その違いがNETWORKDAYS関数とNETWORKDAYS.INTL関数の使い分けのポイントになります。

NETWORKDAYS.INTL関数の利用が最適になる条件
  • 任意の曜日を休日(非稼働日)として扱う
  • 開始日と終了日が決まっていて、その間の営業日数を数えたい
  • 任意の休日を設定し、その休日は営業日数に数えない

NETWORKDAYS.INTL関数の使用例

ここからはNETWORKDAYS.INTL関数の使い方を具体例を使って説明します。

営業日数を自動計算するタスク管理表

関連記事NETWORKDAYS関数を説明する記事でも使った例を再び使います。

おじたか
おじたか

NETWORKDAYS.INTL関数の使い方を説明するための具体例については詳しい説明を省略します。詳しい説明が必要な場合はNETWORKDAYS関数の記事を読んでおいてください。
この部分の冒頭に書いています。

タスク管理表を作成する場面を考えます。
そのタスク管理表に対する要件は次の通りです。

タスク管理表の要件
  • プロジェクトの開始日と終了日は決まっているため各タスクも開始日と終了日でスケジュールしたい
  • 開始日と終了日を先に決めたとき、各タスクに実際に使える日数(営業日数)を計算したい
  • 毎週月曜日のみを休日とする
  • 日数が不足するタスクには増員するなどの対策を打つ(だから日数を可視化する必要がある)

要件を満たすタスク管理表の作成例

この要件を満たすタスク管理表を作成しました。
毎週月曜日を休日として設定する必要があるのでNETWORKDAYS.INTL関数を使います。

NETWORKDAYS.INTL関数を利用したタスク管理表
NETWORKDAYS.INTL関数を使ったタスク管理表の例

E列とF列に日付を入力すると、G列に自動でその間の営業日数が計算される仕組みにしています。
G列にはNETWORKDAYS関数を次のように設定しました。

=NETWORKDAYS.INTL([@[開始日(予定)]], [@[終了日(予定)]], 12, 祝日マスター[休日])

第1引数はE列、第2引数はF列を指定しています。
第3引数には上に記載した表に従って「12」を指定しました。(月曜日のみを休日としたいので12を指定)
第4引数はテーブルで定義した祝日マスター(会社の休日や祝日を一覧化したもの)を指定しました。

タスク管理表で参照する祝日リスト
祝日マスター(休日を一覧化したマスターテーブル)

まとめ

NETWORKDAYS.INTL関数は、土日ではなく任意の曜日を休日として設定できます。
例えば、飲食店などのサービス業は土日はお仕事されますよね。
そういう場合にはNETWORKDAYS.INTL関数が役に立つと思います。

この記事のまとめ
  • 任意の曜日および休日を除く営業日数を数えることは、NETWORKDAYS.INTL関数で実現できる
  • NETWORKDAYS関数の第4引数に指定する休日は予めテーブルで定義しておく
  • NETWORKDAYS.INTL関数とNETWORKDAYS関数の違いは、必ず土日が休日かどうかにある

土日を休日とする場合は、NETWORKDAYS関数の方が便利です。
NETWORKDAYS関数について説明していますので良かったら参考にしてください。

また、NETWORKDAYS.INTL関数と似た機能を持つWORKDAY.INTLという関数もあります。
こちらも参考にしてみてください。

コメント

タイトルとURLをコピーしました