エクセルで表を作成しているとき、IF関数で曜日によって条件を分岐させようとしたら、上手く反映できなくて困ったことはないでしょうか?
日付にセルの書式設定で曜日を表示させている場合、IF関数では「”日”」などの条件を指定できないので、そんなときに役立つテクニックを2つ紹介します。
IF関数を使って曜日によって条件を分岐させる方法
この記事が役に立つ状況の例
例:予定表の中で、日曜日の予定だけ「休み」と表示したい

ちなみに今回、C列の「曜日」にはセルの書式設定で表示形式「aaa」で曜日を表示しています。
完成イメージ
完成イメージがこちらです。

日曜日だけ「休み」と表示することができました。
方法①:TEXT関数で曜日のタイプを文字列にする
使用した関数はこちらです。
- TEXT
TEXT関数を使い曜日の表示方法を変えることで、IF関数の内容はそのままにIF関数の条件にひっかかるようにする方法です。
関数の書き方①
=TEXT(日付,”aaa”)
曜日の表示方法をセルの書式設定から行うのではなく、TEXT関数で曜日を表示することで、IF関数で「”日”」を条件に指定することができるようになりました。
なぜそうなるかの解説①
セルの書式設定では、表示形式を変更するだけで値のタイプを変更することはありません。
しかし、TEXT関数は値を文字列に変更する関数ですので、表示されている曜日がIF関数で条件指定することが可能な文字列になりました。
方法②:IF関数とWEEKDAY関数を組み合わせる
使用した関数はこちらです。
- IF
- WEEKDAY
この2つの関数を組み合わせることで、文字列ではない日付でもIF関数で条件を指定することができるようになります。
関数の書き方②
=IF(WEEKDAY(日付)=1,”休み“,””)
曜日を表示する元となっている日付を条件にいれることで、「何曜日であれば」という条件を指定することができます。
なぜそうなるかの解説②
WEEKDAY関数は日付を表示させる関数ですが、曜日にはそれぞれシリアル値が与えられています。
今回「WEEKDAY(日付)=1」をIF関数の論理式に入れたのは、日曜日のシリアル値が1だからです。
つまり、「日付のシリアル値が1(日曜日)であれば」という条件分岐をIF関数に入れたということですね。
ちなみに各曜日にはシリアル値が与えられていますが、WEEKDAY関数の2つ目の引数を調整することで曜日に与えるシリアル値を変更することができます。
=WEEKDAY(日付,種類)
2つ目の引数を変更することで、得られる値は以下の表のように変化します。
2つ目の引数 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
1/省略 | 2 | 3 | 4 | 5 | 6 | 7 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 1 | 2 |
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
11 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
12 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
13 | 6 | 7 | 1 | 2 | 3 | 4 | 5 |
14 | 5 | 6 | 7 | 1 | 2 | 3 | 4 |
15 | 4 | 5 | 6 | 7 | 1 | 2 | 3 |
16 | 3 | 4 | 5 | 6 | 7 | 1 | 2 |
17 | 2 | 3 | 4 | 5 | 6 | 7 | 1 |
正直、覚えるだけ無駄なような気がしますが、使い道としては例えばIF関数で「土日なら」という条件分岐を指定したい場合は、2つ目の引数を「2」にしておくことで、「=WEEKDAY(日付,2)<=2」といった具合に関数の書き方を簡素化することができるということくらいでしょうか。
まとめ
曜日をIF関数で条件分岐させる方法を2つ紹介しましたが、おすすめするのは断然①のTEXT関数です。
関数も短くシンプルですので、曜日の表示をいじれる状態であれば、TEXT関数を使ってなるべく簡素な関数を使うようにしましょう。
コメント