一般の消費者を相手にする業界では「土日休み」というのはレアな存在で、土日以外の曜日に定休日が設けられている場合が多い。このような場合は、WORKDAY.INTLという関数を使うと「X営業日後」の日付を自動計算できる。そのほか、指定した期間内に「営業日数が何日あるか?」を調べられる関数NETWORKDAYSの使い方も紹介しておこう。

土日以外が定休日の場合の「X営業日後」の計算

前回の連載では、土日祝を除いた営業日ベースで「X営業日後」を自動計算する関数WORKDAYの使い方を紹介した。ただし、この関数を使えるのは「定休日が土曜日と日曜日」のケースに限定されてしまう。実際には、土日以外を定休日にしている店舗・事業所なども沢山あるだろう。

そこでExcelには、定休日を自由に指定してX営業日後を計算する「WORKDAY.INTL」という関数も用意されている。また、「締切までに営業日数が何日あるか?」を手軽に調べられる「NETWORKDAYS」や「NETWORKDAYS.INTL」といった関数の使い方も学んでおくと、より効率的に営業日を計算できるようになる。ぜひ、覚えておくとよい。

  • 「定休日を自由に指定する方法」と「締切までの営業日数を求める方法」

今回も「発送予定日」を通知する受注伝票を例にして話を進めていこう。前回の連載と異なる点は、土日ではなく、他の曜日が定休日(休業日)になっていることだ。

  • 発送予定日を知らせる文書(受注伝票)

前回の連載で紹介した関数WORKDAYは、「土曜日」と「日曜日」を休業日として扱うことが大前提になっている。このため、水曜定休などの店舗(事業所)では利用できない関数となる。そこで、定休日を柔軟に指定できる「関数WORKDAY.INTL」の使い方も覚えておくとよい。

■関数WORKDAY.INTLの書式
 =WORKDAY.INTL(開始日, 日数, [定休日], [定休日以外の休日])

第1引数と第2引数に指定する内容は、基本的に「関数WORKDAY」と同じである。よくわからない方は、先に前回の連載を一読しておくとよいだろう。続いて、第3引数で「定休日は何曜日か?」を指定する。

この指定は、以下の数値(週末番号)で指定する仕組みになっている。

 1 ・・・・ 土曜日と日曜日
 2 ・・・・ 日曜日と月曜日
 3 ・・・・ 月曜日と火曜日
 4 ・・・・ 火曜日と水曜日
 5 ・・・・ 水曜日と木曜日
 6 ・・・・ 木曜日と金曜日
 7 ・・・・ 金曜日と土曜日

 11 ・・・・ 日曜日のみ
 12 ・・・・ 月曜日のみ
 13 ・・・・ 火曜日のみ
 14 ・・・・ 水曜日のみ
 15 ・・・・ 木曜日のみ
 16 ・・・・ 金曜日のみ
 17 ・・・・ 土曜日のみ

これらの数値を暗記するのは大変なので、実際には関数を入力しながら「指定すべき数値」を確認するとよい。関数の入力を第3引数まで進めていくと、以下の図のように「週末番号の一覧」が画面に表示される。

  • 関数WORKDAY.INTLの入力(週末番号の指定)

これを見ながら、自身の定休日に合致する数値を指定すればよい。たとえば「水曜定休」の場合は、第3引数に「14」を指定することになる。

  • 関数WORKDAY.INTLの入力

以上で関数WORKDAY.INTLの入力は完了。「Enter」キーを押すと、「X営業日後」の日付が自動計算される。

  • 関数WORKDAY.INTLにより算出された3営業日後の日付

簡単に補足しておこう。上図は、F6セル(2023年3月6日)の3営業日後の日付を「水曜定休」で求めた場合の例となる。3月6日は月曜日なので、翌日の3月7日(火)が1営業日後になる。その翌日の3月8日は水曜日なので定休日になる。そして、3月9日(木)が2営業日後、3月10日(金)が3営業日後となる。

このような日付計算を手軽に行えるのが「関数WORKDAY.INTL」の特徴となる。前回の連載で紹介した関数WORKDAYと同様に、「定休日以外の休日」を指定することも可能だ。この場合は、第4引数に「休業日リストのセル範囲」を指定すればよい。

たとえば「水曜定休」で「祝日も休業日」になる場合は、祝日リストを作成してから以下のように関数を記述すればよい。引数の数が異なるだけで、基本的な考え方は「関数WORKDAY」と同じだ(詳しくは前回の連載を参照)。

  • 「定休日以外の休日」を指定する場合

上図の例では期間中に祝日がないため、3営業日後は先ほどと同じ3月10日(金)になる。

  • 関数WORKDAY.INTLにより算出された3営業日後の日付

第4引数が正しく機能していることを確認するために、別の日付を入力した例も紹介しておこう。たとえば「注文日」を2023年2月20日(月)に変更すると、その3営業日後は2月25日(土)と自動計算される。

  • 期間中に「定休日以外の休日」を含む場合

この期間内には2月23日(木)に祝日(天皇誕生日)があるため、水曜日だけでなく木曜日も休業日になる。よって、3営業日後は2月25日の土曜日になる。営業日ベースで正しく日付が計算されていることを確認できるだろう。

定休日が離れている場合や不定休の場合は?

続いては、もっと変則的な定休日に対応する方法を紹介していこう。ここでは「火曜日」と「金曜日」が定休日の場合を考えてみる。関数WORKDAY.INTLには、定休日を「火曜日と金曜日」に指定する数値が用意されていない。このため、このままでは第3引数を指定できなくなってしまう。

このような場合は、0と1で構成される「7桁の文字列」で定休日を指定する。この文字列は、1桁目が「月曜日」、2桁目が「火曜日」、3桁目が「水曜日」、・・・、6桁目が「土曜日」、7桁目が「日曜日」に対応している。

そして、営業日を「0」、定休日を「1」と記述することで定休日を指定する仕組みになっている。よって、「火曜日」と「金曜日」を定休日にする場合は、「=WORKDAY.INTL(F6,3,"0100100")」のように関数を記述すればよい。

  • 定休日を「0」と「1」で指定する場合

上図の例では、月曜日に注文を受けている。「火金休み」であれば、以降の営業日は、水曜日、木曜日、土曜日となる。よって、3営業日後は2月25日(土)になる。

  • 関数WORKDAY.INTLにより算出された3営業日後の日付

もちろん、この場合も「定休日以外の休日」を指定することが可能だ。「火曜日」と「金曜日」だけでなく、「祝日」も休業日にするときは、以下の図のように関数を記述すればよい。

  • 「定休日以外の休日」を指定する場合

すると、2023年2月23日(木)も休業日として扱われるため、3営業日後はさらに1日後の2月26日(日)になる。

  • 期間中に「定休日以外の休日」を含む場合

なお、少し強引ではあるが、0と1を使って「隔週休み」や「不定休」などの休業日を指定することも可能だ。この場合は、すべての曜日を「0」(営業日)にして、第4引数で休業日のリストを指定すればよい。

たとえば、定休日が「第1水曜日」と「第3水曜日」で「年末年始」なども休業日とする場合は、以下の図のように「休業日リスト」を作成してから関数WORKDAY.INTLを入力すればよい。

  • 不定休の場合の対処方法

関数WORKDAY.INTLの応用的な使い方として、覚えておいても損はないだろう。

期間中の営業日数をカウントできる関数NETWORKDAYS

続いては、「期間中の営業日数」をカウントする「関数NETWORKDAYS」の使い方を紹介していこう。この関数は、「営業日ベースで締切まであと何日残っているか?」を確認したい場合などに活用できる。

■関数NETWORKDAYSの書式
 =NETWORKDAYS(開始日, 終了日, [祝日])

その使い方は、第1引数に「開始日」、第2引数に「終了日」(締切日)を指定するだけ。さらに、第3引数に「祝日リスト」を指定することも可能なっている。なお、関数NETWORKDAYSは「土日を定休日」として扱う関数になるため、以降は「土日定休日」として話を進めていこう。

ここでは「納品までに残された作業日数」を確認する表を例にして、具体的な使い方を紹介する。

まずは、「開始日」として「今日の日付」を入力する。「今日の日付」を入力するときは、いちいち手作業で日付データを入力するのではなく、「関数TODAY」(引数なし)を利用するとよい。

  • 関数TODAYで「今日の日付」を自動入力

すると、Excelファイルを開いた時の日付(=今日の日付)が自動入力されるようになる。なお、日付を表示するセルには、曜日も把握できるようにmm/dd(aaa)という表示形式を指定してある。

続いて、「終了日」を数式で計算する。この例では、それぞれの発注者から「納品日」を指定されているが、商品が届くまでに「輸送日数」が必要になるため、それを差し引いた日付を「発送締切」(作業できる最終日)としている。

  • 「発送締切」を計算する数式

この数式をオートフィルでコピーすると、個々の「発送締切」を自動計算できる。あとは、関数NETWORKDAYSで「作業可能な残り日数」を計算するだけだ。

第1引数の「開始日」には「今日の日付」を示すC2セルを指定する。関数NETWORKDAYSをコピーした際に、このセル参照が変化しないように「絶対参照」でC2セルを指定している。 第2引数の「終了日」には、それぞれの「発送締切」を指定すればよい。こちらはコピーした際にセル参照が自動補正されるように「相対参照」でセル番号を記述する。

続けて、第3引数に「祝日リスト」(土日以外の休業日)を指定する。この考え方は、これまでに解説してきた「関数WORKDAY」や「関数WORKDAY.INTL」と同じだ。こちらもコピーした際にセル範囲が自動補正されないように「絶対参照」で指定する。

  • 関数NETWORKDAYSの入力

以上で、関数NETWORKDAYSの入力は完了。今回の例では「3」という結果が表示された。つまり、あと3日間で作業しなければならない、という訳だ。

  • 関数NETWORKDAYSにより算出された稼働日数

ちなみに、関数NETWORKDAYSにより算出される数値は「開始日も含めた日数」となる。つまり、開始日を1日目としてカウントする仕組みになる。

上図の例の場合、2023年2月20日(月)が1日目、2月21日(火)が2日目、2月22日(水)が3日目としてカウントされる。期間中に休業日(土日祝)はないので、期間内の日数がそのまま「稼働日数」としてカウントされる。

関数NETWORKDAYSをオートフィルでコピーすると、他の注文に対しても「残りの作業日数」を調べることができる。

  • オートフィル関数NETWORKDAYSをコピー

表の1番目と2番目のデータを見比べてみよう。「○○施工」の発送締切は「××工務店」より3日遅いが、「残り作業日数」はプラス1日しか増えていない。このような結果になるのは以下の2点が原因となる。

 ・2月23日は祝日なので休業日になる
 ・2月25日は土曜日なので、前日の2月24日(金)に発送しなければならない

よって、作業できる日数がマイナス2日されることになり、発送締切が3日遅くても実際の作業日数はプラス1日だけ、という結果になる。

このように関数NETWORKDAYSを使うと、「締切まで営業日ベースであと何日?」を即座に調べられるようになる。今後のスケジュールを立てる際などに参考にできるので、その使い方を確認しておくとよいだろう。

なお、土日以外を休業日に指定できる「関数NETWORKDAYS.INTL」も用意されている。

■関数NETWORKDAYS.INTLの書式
 =NETWORKDAYS.INTL(開始日, 終了日, [定休日], [定休日以外の休日])

基本的な使い方は「関数NETWORKDAYS」と同じだが、こちらは第3引数に「定休日」を指定する仕様になっている。「定休日」の指定方法は「関数WORKDAY.INTL」と同じなので、その使い方を理解していれば、この関数もすぐに利用できるだろう。土日以外が休業日の方は、こちらの関数の使い方も確認しておくとよいだろう。