仕事をする中で「営業日だけのカレンダー」を作る。とか、「〇〇営業日以内」を判断する機会が多い方がいるのではないでしょうか。
そんな時はWORKDAY関数を使いましょう。普段は殆ど使う機会がないWORKDAY関数ですが、実はとても優秀な関数で自動的に土日や休日を除外してくれます。
また、「週末が土日とは限らない」方向けにWORKDAY.INTL関数についても解説します。
営業日だけのカレンダーを作る
まずはWORKDAY関数の基本 =WORKDAY(開始日,日数,休日)となっています。以外に単純な引数ですが、実際にカレンダー等を作成するにはちょっとした工夫が必要です。
試しに単純なカレンダーを作ってみました。多少複雑な式となりましたが解説していきましょう。
まず基準となる引数の『開始日』の考え方ですが対象となる月の『1日』としそうですが、『営業日カレンダー』を作る場合は1日が『非営業日』となる可能性を考える必要があるため『開始日』を前月末日に設定します。
B2セルには『2024/1/1』を入れ表示形式で『2024年1月』で表示しています。この日付から前月末日をEOMONTH($B$2,-1)で取り出し『開始日』とします。
次は『日数』ですが、この『日数』は『開始日』を『0』と考えて営業日の『日数』となります。つまり、『日数』が『1』とは『開始日の翌営業日』となります。
今回はROWS関数を使い行数を『日数』として使っています。ROWS関数は引数内の行数が返ってきますのでROWS(B$3:B3)は『1』となり、これをコピーして範囲指定が相対参照となることで行数が増えていきます。
最後が『休日』部分ですが年間の休日一覧をまず作成し範囲で指定しています。土日は自動的に除外されるのでこの休日カレンダーには土日は入れる必要はありません。
休日カレンダーを作る時に気を付けたいのは、国が定めた休日以外も必ず入れるということです。例えば会社の創立記念日やお盆休み、年末年始の休みなど通常のカレンダーでは分からない非営業日も入れるのを忘れずに。
通常の休日が土日以外の場合
業種によっては『土日以外が休日』という場合がありますので、それをカバーして『営業日のカレンダー』を作れるのがWORKDAY.INTL関数です。
先程の式に少し引数が増えWORKDAY.INTL(開始日,日数,週末,休日)となり、『週末』という引数が増えています。
この『週末』は2パターンあり、まずは数字で1~7と11~17 1:土日,2:日月…、11:日,12:月・・・が通常休日の扱いとなります。
もう1パターンは数字列で通常休日を指定する方法で、例えば月曜と水曜が休みでれば”1010000″と数字列を”で囲って入れます。
あとは祝日の指定はWORKDAY関数と同様の指定の仕方をします。
先程と同様のカレンダーを作るとこうなります。
これまで、いちいち営業日だけを手入力していた無用な作業をやらなくて済みますね。