【スプレッドシート】ARRAYFORMULA関数と組み合わせた時のIF関数に複数条件を指定する
## はじめに
タイトル分かり辛くてごめんなさい。
## 状況
### 条件
- 土曜日か日曜日だったら`休み`、それ以外だったら`働く`と出力
- ARRAYFORMULA関数で一括処理
この場合の式を作成するのが今回の目的。
## どうするの
まず最初に思い浮かぶ式はこれだと思います。
```excel:Case1
=ARRAYFORMULA(IF(A2:A8="","",IF(OR(WEEKDAY(A2:A8)=1,WEEKDAY(A2:A8)=7),"休み","働く")))
```
この式は間違いです。
正しくは次の通りです。
```excel:Case2
=ARRAYFORMULA(IF(A2:A8="","",IF((WEEKDAY(A2:A8)=1)+(WEEKDAY(A2:A8)=7),"休み","働く")))
```
## 解説
Case1はOR関数で判定していて、Case2ではそれぞれの式を`+`で結合しています。
OR関数で判定すると、 列内に1つでも条件を満たしている値があると全てTRUEを返します。
一方、`+`で結合する方法は以下の通りに動きます。
A2セル
1. (WEEKDAY(A2:A8)=1)は、WEEKDAY関数の結果が`1`なので`True`
2. (WEEKDAY(A2:A8)=7)は、WEEKDAY関数の結果が`1`なので`False`
3. True + False = Trueなので`休み`が返る
A3セル
4. (WEEKDAY(A2:A8)=1)は、WEEKDAY関数の結果が`2`なので`False`
5. (WEEKDAY(A2:A8)=7)は、WEEKDAY関数の結果が`2`なので`False`
6. False + False = Falseなので`働く`が返る
7. 以下繰り返し
## 結論
ARRAYFORMULA関数とIF関数を組み合わる時に複数条件にしたい場合は`+`で結合で指定する。
というか、IF関数内の複数条件の時は`+`で結合する癖を付けるのが一番良い。(ANDの場合は`*`で結合)
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!