WORKDAY.INTL関数で定休日が連休ではない場合や、週3日以上定休の場合の設定

解説記事内の画像はExcel 2016のものですが、操作方法は下記のバージョンで同じです。
  • Excel 2016, 2013, 2010
Excel 2016・2013・2010用 練習ファイル
(workday-intl-weekend.xlsx  9.09KB)

指定の曜日を除き、必要ならば祝日や独自の休業日も除いて、○営業日後または○営業日前の日付を求めるWORKDAY.INTL関数。

WORKDAY.INTL関数の引数 この関数の基本的な使い方は、「指定の曜日や祝日を除いた○営業日後の日付を求めるWORKDAY.INTL関数」を見ていただくとして、このページのテーマは、毎週何曜日を定休日として除外するかを設定する、引数[週末]の指定。

指定の曜日や祝日を除いた○営業日後の日付を求めるWORKDAY.INTL関数」では、引数[週末]の基本的な設定として、下記のようにご紹介しています。

引数[週末]で指定する番号

1または省略 土曜日と日曜日
2 日曜日と月曜日
3 月曜日と火曜日
4 火曜日と水曜日
5 水曜日と木曜日
6 木曜日と金曜日
7 金曜日と土曜日
11 日曜日のみ
12 月曜日のみ
13 火曜日のみ
14 水曜日のみ
15 木曜日のみ
16 金曜日のみ
17 土曜日のみ

ところが、上記のような指定では、毎週何曜日のみか、毎週の連続した曜日のみしか指定できません。
でも、毎週水曜日と日曜日が定休です、のように、定休日が連続した曜日にならないところだってたくさんあるでしょうし、または、毎週月〜木曜日が休みで、金・土・日だけの営業なんです、なんていうお店もあるでしょう。
そういった定休日の場合には、数字の「0(ゼロ)」と「1」の組み合わせで、引数[週末]を指定していきます!

引数[週末]を数字の「0」と「1」で指定する方法

引数[週末]を数字の「0」と「1」の組み合わせで指定したい場合には、営業日を「0」、休業日を「1」として、月曜日を先頭に7桁の数字を並べた「文字」として定休日を表現します。

例えば、毎週水曜日と日曜日が定休日の場合、営業日を「0」、休業日を「1」として、月曜日の分から並べていけばいいので、

0 0 1 0 0 0 1

となり、引数[週末]に「0010001」と設定すると、毎週水曜日と日曜日が定休であることを表せます。

引数[週末]をダブルクォーテーションで囲まないとこうなる そしてこの、「0」と「1」を並べた「0010001」は、そのまま数式内に入力してしまうと、「先頭の0(ゼロ)が消える!「001」が「1」になってしまう」の理屈で、Excelさんは先頭にあるゼロはすべて削り取ってしまいます。
ですので、引数[週末]に入力する数字は、「これは曜日を表す暗号文のようなものだから、文字です」と、Excelさんにお伝えしながら設定しなければなりません。
もちろん、先頭が「0」ではなく「1」から始まる場合でも、「これは曜日を表す暗号文のようなものだから、文字です」とExcelさんにお伝えすることに変わりはありません。

Excelを怒らせないための関数・数式のお作法:ダブルクォーテーション編」でご紹介しているように、

数式内に文字を設定する場合には、その文字の前後をダブルクォーテーションで囲む

というのはお作法なので、

引数[週末]をダブルクォーテーションで囲む 毎週水曜日と日曜日が定休であることを表す暗号文「0010001」も、その文字の前後をダブルクォーテーションで囲みます。

数式ではなく、「セル」に直接「文字」として扱ってほしい数字を入力するときは、「先頭の0(ゼロ)が消える!「001」が「1」になってしまう」でご紹介しているように、先頭にシングルクォーテーションを入力しますが、「数式」内に「文字」として扱ってほしい数字を入力するときは、「Excelを怒らせないための関数・数式のお作法:ダブルクォーテーション編」でご紹介しているように、その前後をダブルクォーテーションで囲みます。

これから関数を設定する表 というわけで、図のような表で、B3番地に、A3番地に入力されている日付の、毎週水曜日と日曜日を除いた3営業日後の日付を表示させたい場合には、

WORKDAY.INTL関数の引数の設定 このような数式を設定すれば、
(この例では、除外するのは毎週水曜日と日曜日だけで、祝日は除外していません。)

WORKDAY.INTL関数の設定 完了 毎週水曜日と日曜日を除いた3営業日後の日付を表示させることができました!

WORKDAY.INTL関数の結果が数字で表示された WORKDAY.INTL関数で求めた結果が、日付ではなく数字で表示された場合は、「指定の曜日や祝日を除いた○営業日後の日付を求めるWORKDAY.INTL関数」の最後の章をご覧ください。

週3日以上の定休日があっても大丈夫

毎週月曜日から木曜日までが定休日の場合も、営業日を「0」、休業日を「1」として、月曜日の分から並べていけばよいわけですから、

1 1 1 1 0 0 0

となり、引数[週末]に「1111000」と設定すると、毎週月曜日から木曜日までが定休であることを表せます。

引数[週末]をダブルクォーテーションで囲む もちろん、「0(ゼロ)」と「1」の組み合わせで、引数[週末]を指定する場合には、「この数字の組み合わせは、曜日を表す暗号文のようなものだから、文字です」と、Excelさんにお伝えしながら設定しなければならないので、この数字の組み合わせの前後を半角ダブルクォーテーションで囲むのがお約束です。

これから関数を設定する表 というわけで、図のような表で、B3番地に、A3番地に入力されている日付の、毎週月曜日から木曜日までを除いた3営業日後の日付を表示させたい場合には、

WORKDAY.INTL関数の引数の設定 このような数式を設定すれば、
(この例では、除外するのは毎週月曜日から木曜日までで、祝日は除外していません。)

WORKDAY.INTL関数の結果が数字で表示された 毎週月曜日から木曜日までを除いた3営業日後の日付を表示させることができました!
WORKDAY.INTL関数で求めた結果が、日付ではなく数字で表示された場合は、「指定の曜日や祝日を除いた○営業日後の日付を求めるWORKDAY.INTL関数」の最後の章をご覧ください。

スポンサーリンク