スクリーンショット_2019-09-10_16

【スプレッドシート】ARRAYFORMULA関数と組み合わせた時のIF関数に複数条件を指定する

## はじめに

タイトル分かり辛くてごめんなさい。

## 状況

スクリーンショット 2019-09-10 15.57.17

### 条件

- 土曜日か日曜日だったら`休み`、それ以外だったら`働く`と出力
- 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の場合は`*`で結合)

いいなと思ったら応援しよう!

あかやす
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!