エクセルで営業日判定を実現するWORKDAY関数の使い方


WORKDAY関数アイキャッチ

みなさん、こんにちは!
フジタニ(@libartweb)です。

スケジュールは場合によっては「営業日」の計算が必要で、土日祝日を考慮しなきゃいけないことが多々あるかと思います。

例えば毎月8日固定の定例作業、土日祝日の場合は翌営業日に実施など・・・

エクセル関数を使いこなすことができれば、土日の判定はもちろん、祝日まで判定することが可能です。

毎月の定例作業などを表示するスケジュール表をエクセルを使って自動で作成することもできます。

今回は、スケジュール表の作成や見積書作成などの「営業日」計算が必要な際に便利なWORKDAY関数を紹介します!

エクセルで祝日を判定するには工夫が必要

エクセルは土日を判定することは可能なのですが、祝日の判定は標準の機能では不可能です。

土日の場合のみであれば以下のWEEKDAY関数の戻り値でその日付が何曜日か?を判定することができます。

WEEKDAY関数は日付が何曜日かを判定する関数です。

書式は下記の通り。

WEEKDAY(シリアル値,[種類])

引数として与えた日付が何曜日か?をデフォルトでは1(=日曜日)から7(=土曜日)の数値で返します。

引数「種類」はデフォルトで1です。他には以下の戻り値の種類があります。基本、デフォルトでOKです。

種類 戻り値
1(省略可) 1:日 2:月 3:火 4:水 5:木 6:金 7:土
2 1:月 2:火 3:水 4:木 5:金 6:土 7:日
3 0:月 1:火 2:水 3:木 4:金 5:土 6:日

しかし、祝日に関してはこういった関数を使用した「戻り値」で判定することは不可能です。

祝日を判定する機能を実現するには、一工夫が必要となってきます。

WORKDAY関数の使い方

祝日はデフォルトでは判断できません、そこでWORKDAY関数を使用します。

WORKDAY関数は引数として与えた日付から土日を除いた日数を計算することができます。更にそこから指定した日にち(祝日)を除いた日付を返します。

WORKDAY関数の書式は以下の通りです。

WORKDAY(開始日,日数,除外する日(祝日))
引数 設定内容
開始日 求めたい日付の基準日
日数 〇営業日後、前を指定
除外する日(祝日) 事前に設定しておいた祝日の表を範囲指定

例えば

  • 〇月〇日の5営業日後を求めたい
  • 〇月〇日の前営業日を求めたい

などといった土日祝日を考慮した営業日の計算を簡単に行えるのがこの関数の特徴です。

これをエクセルVBAなどでコーディングすると非常にややこしいことになるので、この関数の一番の利点として使うことができます。

前準備として祝日の一覧表を作成する

WORKDAY関数は指定の日にちを除外することができます。そこで、祝日の一覧をWORKDAY関数の除外日として扱うようにしましょう。

まずは、エクセル上に祝日一覧表を作成する必要があります。

WEB上に祝日の一覧が配布されていますので、それをコピーするのが一番早いでしょう。

Excel2010:祝日一覧(2017年〜2022年まで) - 教えて!HELPDESK
Excelで利用できる2017年〜2022年までの祝日一覧をご用意しました。

このように、とりあえずエクセル上のどこでもいいので祝日一覧表をコピーしましょう。
祝日一覧

WORKDAY関数で営業日を求める

実際にWORKDAY関数を使用して営業日を計算してみましょう。

2018年9月21日の前営業日を求めたい場合

開始日の前営業日

基準となる「開始日」を設定し、その何営業日後(前)を求めたいかを「日数」に指定します。今回の例は「前営業日」なので開始日からマイナスとなります。「-1」を指定してください。

最後に、「除外する日」として事前に作成しておいた祝日一覧を範囲指定します。

その結果、土日祝日を考慮した「営業日」の算出が可能です。

開始日が土日祝日の場合のみ翌営業日を求める場合

開始日が土日祝日の場合のみ翌営業日

開始日を「-1」し、その翌営業日を求めることで、開始日が土日祝日の場合のみ翌営業日を求めることができます。

つまり上記例だと、9月20日の翌営業日を求めていることになります。

開始日2018年9月21日は金曜日で平日なのでそのまま「開始日」が返されていますね!(2018年9月20日の翌営業日が返されています)

では試しに、「開始日」を土日祝日にして求めてみましょう。

開始日が土日祝日の場合のみ翌営業日

「開始日」2018年9月22日は土曜日なので、その翌営業日である2018年9月25日が返されています。

開始日の5営業日後を求めたい場合

5営業日後

  • 翌営業日の場合は1
  • 2営業日後の場合は2
  • 5営業日後の場合は5

など、求めたい日付に従って任意の値を「日数」に指定してください。

まとめ&次回予告

以上、エクセルで営業日判定を実現するWORKDAY関数の使い方についてお伝えしました。

日付を扱う業務や資料は想像以上にたくさん存在します。

WORKDAY関数を賢く使うことで、そういった業務の自動化も進みます。

今回は関数単体での使用方法をお伝えしましたが

次回はWORKDAY関数をVBAと組み合わせるにはどうすればいいか?をシリーズでお伝えしていきます。

実際にVBAとWORKDAY関数を組み合わせたスケジュール表の自動作成の方法を紹介します。

より実用的に使いこなしていただけます。

どうぞお楽しみに!

連載目次:エクセルVBAで営業日を考慮したスケジュール表を自動で作成する

WORKDAY関数とエクセルVBAを組み合わせ、営業日を考慮したスケジュール表を自動作成する方法をお伝えします。 実務で使いこなすことができればとても便利なツールとして活用できるはずです!
  1. エクセルで営業日判定を実現するWORKDAY関数の使い方
  2. エクセルVBAとWORKDAY関数の組み合わせでスケジュール表を自動作成する最初の一歩
  3. エクセル関数だけで営業日を考慮した月間スケジュールを作成する方法

  投稿者プロフィール

フジタニ
フジタニLibArt代表
複業エンジニアとして「フリーランス」、「会社員」の2つの視点で業務効率化を提案。VBAによる自動化はもちろん、ビジネスチャットの推進(電話が大嫌い。)などを日々行っています。自転車が大好きな、走れるエンジニアです!

コメント