if関数とweekday関数で曜日を調べる方法
if関数とweekday関数を組み合わせることで、指定した日付が何曜日かに応じて、処理を変えることができます。
例えば、指定した曜日が土曜日・日曜日の場合には「休日」と表示する。それ以外の場合は「平日」と表示するといったような処理は、if関数とweekday関数を組み合わせることで処理ができます。
なお、次のような処理の場合には、if関数とweekday関数の組み合わせではなく、別の機能を使います。
- 指定した日付に対応する曜日(月曜日~日曜日、月~日)を表示させたい
-
関数を使う必要はありません。
日付が入力されているセルの「ユーザ定義書式」で「aaa」「aaaa」などと設定することで、曜日が表示できます。
- 曜日に応じて、色・文字を変えたい場合
-
条件付き書式とweekday関数を組み合わせることで処理ができます。
→曜日に応じて書式を変えたい場合参照 - 翌営業日(あるいは前営業日)の日付を計算したい場合
-
workday.intl関数を使います
この記事の目次
weekdayで曜日を数値に変換する
A1セルに日付が入力されているとします。
その場合、A1セルの日付が何曜日かを調べるためにはweekday関数を使います。
weekday関数を使うことで、曜日を数値に変換して取得することができます。
weekdayの具体的な使い方ですが、
- 1つ目の引数は、曜日を知りたい「日付」を入れます
- 2つ目の引数は、曜日をどのように数値に変換するかの「ルール」を示す番号を入れます
多くの場合、一番便利なのは次のように2つめの引数に「2」を指定する方法です。
2つめの引数に「2」を指定した場合、各曜日に応じて、次のように数値に変換されてきます。
- 月曜日→1
- 火曜日→2
- 水曜日→3
- 木曜日→4
- 金曜日→5
- 土曜日→6
- 日曜日→7
この数値を、if関数の条件として使い、曜日を判定していきます。
weekday関数で得られた数値を使ってif関数で条件分岐
曜日に応じて処理を分けるためにif関数を使います。
- A1セルに入力された日付が日曜日の場合だけ「日曜日」と表示させる
-
=if(weekday(A1,2)=7, "日曜日","")
A1セルに入力された日付が日曜日の場合、weekday関数の結果は「7」になります。
ですから、weekday関数の結果が「7」に等しいかどうかを判定すればいいわけです。 - A1セルに入力された日付が土曜日または日曜日の場合だけ「土日」と表示させる
-
=if(weekday(A1,2)>=6, "土日","")
weekday関数の結果は、A1セルに入力された日付が土曜日の場合は「6」、日曜日の場合は「7」となります。
ですから、weekday関数の結果が「6」または「7」に等しい、、という条件を書いても、問題はありません。
ただ、「または」を使った条件は、書くのが若干面倒です(or関数を使う必要があります)。
そこで、もう少し考えてみると。
weekday関数を使った結果は、曜日に応じて、次のように「6」を境目にして綺麗に分かれます。
- 月曜日~金曜日 → 1~5
- 土曜日~日曜日 → 6~7
つまり、6以上であれば土曜日か日曜日であることがわかります。
そこで、if関数の条件として「weekday(A1,2)>=6」という指定をすることで、土曜日か日曜日のどちらか、という条件を表現しているのです。
weekday関数の2つ目の引数を「2」にする意味
先ほど、weekday関数の2つ目の引数で「2」を指定しました。
その理由は、先ほどの計算式にあります。
実は、weekday関数の2つ目の引数は、各曜日をどの数値に変換するかの「ルール」を指示する引数です。
そのため、2つ目の引数を変更すると、各曜日がどの数値に変換されるかが変わります。
例えば、2つ目の引数を省略した場合には、
- 日曜日 → 1
- 月曜日 → 2
- ・・・
- 土曜日 → 7
というように変換されます。
このように日曜日と土曜日に割り当てられる数値が離れてしまうと、「土曜日か日曜日」という条件を表現する「条件式」は複雑になってしまいます。
一方で、weekday関数の2つ目の引数を「2」に指定すると、
- 「土曜日→6」「日曜日→7」
- 他の曜日は「1~5」
に変換されます。
その結果、先ほどの計算式に出てきた「土曜日か日曜日」という「条件」を「6以上」という簡単な形で書けたのです。
weekday関数の2つ目の引数の選び方
weekday関数を使う場合には、2つ目の引数は、判定したい「曜日の条件」が書きやすいものを選ぶことが効果的です。
weekday関数の 2つ目の引数 |
得られる値 |
---|---|
1 または省略 | 1 (日曜) ~ 7 (土曜) |
2 | 1 (月曜) ~ 7 (日曜) |
3 | 0 (月曜) 〜 6 (日曜) |
11 | 1 (月曜) ~ 7 (日曜) |
12 | 1 (火曜) ~ 7 (月曜) |
13 | 1 (水曜) ~ 7 (火曜) |
14 | 1 (木曜) ~ 7 (水曜) |
15 | 1 (金曜) ~ 7 (木曜) |
16 | 1 (土曜) ~ 7 (金曜) |
17 | 1 (日曜) ~ 7 (土曜) |
例えば、「日曜日」か「月曜日」に該当する場合だけ、何か処理をしたい、という場合、
- 日曜日と月曜日が隣り合った数値
- その変換後の数値が端に固まっている(例えば、各曜日が1~7に変換される場合に、日曜日・月曜日が1と2に変換されるというような感じ)
ような変換ルールを選ぶと処理が書きやすいです。
上の中から選ぶとすれば、
weekday関数の 2つ目の引数 |
得られる値 |
---|---|
17 | 1 (日曜) ~ 7 (土曜) |
を選んでおけば、「日曜日→1」「月曜日→2」「他の曜日→3~7」と変換されるため、後続の条件判断が書きやすくなるのです。
曜日に応じて書式を変えたい場合
先ほどのif関数の条件部分を、「条件付き書式」の条件に指定することで、曜日に応じて文字色や背景色を変更することができます。
具体的には、
- リボンの「ホーム」→「条件付き書式」→「新しいルール」から
- 「数式を使用して、書式設定するセルを決定」を選び
- 下記の計算式を入力します
具体的な計算式の入力方法や考え方は、if関数で色分け。文字・背景色を変更して「赤字」で表示させる方法が参考になると思いますので、合わせてご覧ください。