「X日後」などの日付を計算するときに、休日を除いた営業日ベースで日数をカウントしたい場合もあるだろう。ただし、このような計算は、通常の数式では実行できない。そこでExcelには、土日祝を除いたX日後を計算できる「関数WORKDAY」が用意されている。3営業日後などの日付を求めたい場合に活用できるので覚えておくとよいだろう。
X日後の日付を自動計算するには?
今回は、土日祝を除いた営業日ベースで「X日後」の日付を求めてくれる「関数WORKDAY」の使い方を紹介していこう。「発送は3営業日後になります」などを通知する書類を作成する場合にも活用できるので、この機会に使い方を把握しておくとよいだろう。
まずは、今回の連載で例とするワークシート(書類の雛形)から紹介していこう。以下の図は、Excelで受注伝票を作成した例だ。この受注伝票には、商品到着の目安がわかるように「発送予定日」を記す項目が用意されている。
今回の例では「曜日」が重要な鍵を握るので、日付に曜日も表示できるように表示形式を指定しておこう。日付を表示するセルを選択し、「セルの書式設定」を呼び出す。
日付データに曜日も表示したいときは「ユーザー定義」を選択し、「yyyy/mm/dd(aaa)」などのコードを記述すればよい。
念のため、各コードの指定内容を紹介しておこう。
yyyy ・・・ 年(西暦)を4桁で示す
mm ・・・・ 月を2桁(01~12)で示す
dd ・・・・ 日を2桁(01~31)で示す
aaa ・・・ 曜日を漢字1文字(日~土)で示す
上記のように表示形式を指定すると、日付データが「年/月/日(曜日)」の形式で表示されるようになる。
ここでは「注文日から3日後に商品を発送する」と仮定して話を進めていこう。これまでの連載でも紹介してきたように、Excelは「1日」を数値(シリアル値)の「1」として扱う仕組みになっている。よって、3日後の日付は以下の数式で求めることができる。
このように数式を利用して「X日後」を自動計算することも可能であるが、ビジネスの現場で使うとなると、かなりの確率で問題が生じてしまう。というのも、この計算には「休日」が考慮されていないからだ。
たとえば「注文日」を2023年2月16日に変更すると、「発送予定日」は2023年2月19日と自動計算される。2023年2月19日は日曜日になるので、この場合、日曜日に出荷作業を行わなければならないことになる。
365日、無休で稼働しているのであれば特に問題は生じないが、定期的に休日がある場合は「実際には使えない手法・・・」となってしまう。
土日を除いて「N日後」の日付を求める関数WORDKAY
このような状況に備えて、土曜日と日曜日を除いた「X日後」を手軽に求められる「関数WORKDAY」が用意されている。
その使い方は、第1引数に「開始日」の日付を指定し、第2引数に「X日後」のXを数値で指定するだけ。第3引数(※)も指定できるが、この部分は省略しても構わない仕様になっている。
※第3引数の使い方は、後ほど詳しく解説。
■WORKDAY関数の書式
=WORKDAY(開始日, 日数, [祝日])
具体的な例を紹介していこう。たとえば、F6セルに入力した日付の「3営業日後」を求めたい場合は、以下のように関数を記述すればよい。
上図の例では、開始日は2月16日の「木曜日」になっている。よって、土日を除いた3営業日後は、金曜日(1日後)、月曜日(2日後)、火曜日(3日後)となり、日付で示すと2月21日になる。このように関数WORKDAYを使うと、土日を除いた「X日後」を手軽に求めることが可能となる。
ちなみに、第2引数(日数)にマイナスの数値を指定することも可能だ。この場合は「X日前」の日付を営業日ベース(土日を除いた日付)で求めることができる。
これで、かなり正確に「X営業日後」を自動計算できるようになった。しかし、それでも完全とは言えないレベルである。というのも、実際には不定期に祝日が存在しているからだ。たとえば「注文日」を2023年5月1日に変更すると、「発送予定日」は2023年5月4日と計算されてしまう。
実際のカレンダーでは、5月3日は「憲法記念日」、5月4日は「みどりの日」、5月5日は「こどもの日」で、いずれも祝日(休日)となる。よって、「5月4日に発送予定です」と通知してしまうと、問題が生じる恐れがある。
祝日も除いて「N日後」の日付を求めるには?
関数WORKDAYは、こういった祝日にも対応できる仕様になっている。ただし、祝日は国ごとに異なるため、自分で祝日のデータベースを作成しなければならない。データベースというと難しそうに聞こえるが、その実態は祝日の一覧を作成表するだけの話でしかない。よって、誰でも簡単に実行できる作業となる。
2023年の場合、祝日となる日付は以下の図のとおり。これを各セルに続けて入力していけばよい。各年における祝日の日付は、ネット検索などで簡単に調べられるだろう。
なお、祝日リストを作成するときに覚えておくべき注意点が2つある。
ひとつ目は、年を含むように日付データを入力すること。単に「月/日」と入力すると「今年の日付」として扱われるので、年末などに「来年の祝日」を入力するときは「年/月/日」と年を含めて日付データを入力しなければならない。
ふたつ目は、振替休日も忘れずに入力しておくこと。基本的には、月曜日~金曜日のうち「休日となる日付」を祝日としてリスト化しておけばよい。
準備ができたら、あとは「祝日のセル範囲」を関数WORKDAYの第3引数に指定するだけ。これで、土曜日/日曜日/祝日を除いた「X営業日後」の日付を自動算出できる。
念のため、上図の例について検証しておこう。注文日は5月1日の「月曜日」なので、5月2日(火)が1営業日後になる。5月3日(水)~5月5日(金)は祝日なのでカウントしない。5月6日(土)と5月7日(日)も休日なのでカウントしない。よって、5月8日(月)が2営業日後、そして5月9日(火)が3営業日後となる。関数WORKDAYにより、このような計算が即座に行われていることを確認できるだろう。
なお、関数WORKDAYをオートフィルなどでコピーして利用する場合は、第3引数(祝日リスト)の指定方法に注意しておく必要がある。第3引数のセル範囲を普通に「相対参照」で指定すると、関数をコピーした際にそのセル範囲も自動補正されてしまう。祝日リストの範囲を固定するには、第3引数を「絶対参照」で指定しておく必要がある。間違えないように注意しておこう。
ビジネスシーンでは「X営業日後」という表現を用いるケースが多々ある。このとき、いちいちカレンダーを見て日付を確認しているようでは無駄な作業が発生してしまう。少し面倒でも、いちど関数WORKDAYで「X営業日後」を自動計算する仕組みを作成しておくと、以降の作業を効率化できるだろう。その後も毎年、祝日リストを更新していけば、ずっと使い続けられるツールになるはずだ。
なお、店舗のように土日以外が定休日になるケースもあるだろう。そこで次回は、土日以外を休日として扱う方法、ならびに「締切まで営業日ベースであと何日あるか?」を計算する方法を紹介していこう。