スポンサーリンク

[Excel]IF関数で曜日によって条件を分岐させる方法

IF曜日分岐 エクセル

エクセルで表を作成しているとき、IF関数で曜日によって条件を分岐させようとしたら、上手く反映できなくて困ったことはないでしょうか?

日付にセルの書式設定で曜日を表示させている場合、IF関数では「”日”」などの条件を指定できないので、そんなときに役立つテクニックを2つ紹介します。

この記事でわかること

IF関数を使って曜日によって条件を分岐させる方法

スポンサーリンク

この記事が役に立つ状況の例

例:予定表の中で、日曜日の予定だけ「休み」と表示したい

IF関数で曜日を条件にする

ちなみに今回、C列の「曜日」にはセルの書式設定で表示形式「aaa」で曜日を表示しています。

完成イメージ

完成イメージがこちらです。

IFで曜日を条件に

日曜日だけ「休み」と表示することができました。

方法①: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/省略2345671
23456712
30123456
111234567
127123456
136712345
145671234
154567123
163456712
172345671

正直、覚えるだけ無駄なような気がしますが、使い道としては例えばIF関数で「土日なら」という条件分岐を指定したい場合は、2つ目の引数を「2」にしておくことで、「=WEEKDAY(日付,2)<=2」といった具合に関数の書き方を簡素化することができるということくらいでしょうか。

まとめ

曜日をIF関数で条件分岐させる方法を2つ紹介しましたが、おすすめするのは断然①のTEXT関数です。

関数も短くシンプルですので、曜日の表示をいじれる状態であれば、TEXT関数を使ってなるべく簡素な関数を使うようにしましょう。

コメント

タイトルとURLをコピーしました