SUMPRODUCT関数でOR条件を使う方法をご紹介します。
AND条件 … SUMPRODUCT((配列○の条件)*(配列○の条件))
OR条件 … SUMPRODUCT((配列1の条件)+(配列1の条件))
★条件が同一フィールド
OR条件 … SUMPRODUCT((配列1の条件)+(配列2の条件))-SUMPRODUCT((配列1の条件)*(配列2の条件))
★条件が異なるフィールド
例:3歳以下または60歳以上は何人?区内または4歳以下は何人?(OR条件)
★ 条件が同じ配列(フィールド)なら足せばカウントできます。
◆ 3歳以下または60歳以上
SUMPRODUCT((C2:C7<=3)+(C2:C7>=60))
解説:配列の各要素の結果がTrue(1)かFalse(0)で返され、それを配列数式で足したものを合計する
→ 結果3人
年齢 |
3以下 |
|
60以上 |
|
結果 |
3
60
35
4
21
82 |
1
0
0
0
0
0 |
+ |
0
1
0
0
0
1 |
= |
1
1
0
0
0
1 |
★ 条件が異なる配列(フィールド)では重複することがあるので、足した後に重複分を引く必要があります。
◆
区内または4歳以下
SUMPRODUCT((C2:C7<=4)+(D2:D7="区内"))-SUMPRODUCT((C2:C7<=4)*(D2:D7="区内"))
※ 足すだけでは「区内」かつ「4歳」の人が2回カウントされてしまう(区内で1、4歳以下で1)ので【区内の4歳】分を引きます。
解説:配列の各要素の結果がTrue(1)かFalse(0)で返されたものを足し、重複分を引いて合計する
→ 結果5人
区
内
外 |
区内 |
|
年齢 |
4以
下 |
|
|
|
重
複
分 |
|
結果 |
外
内
外
内
内内 |
0
1
0
1
1
1 |
+ |
3
60
35
4
21
82 |
1
0
0
1
0
0 |
= |
1
1
0
2
1
1 |
- |
0
0
0
1
0
0 |
= |
1
1
0
1
1
1 |
仕組み
SUMPRODUCT関数は各配列の条件が合致するとTrue(1)、合致しないならFalse(0)で返します。それを掛けると1×1の場合のみ1が返るので(0×1も0×0も0)AND条件で計算できます。OR条件では同じフィールドの場合は足す(1+0、0+0)と1が返る場合に合計することでカウントできます。異なるフィールドのOR条件は0+1または1+0であればOKですが、どちらのフィールドにも合致すると1+1となってしまうので、その分引く必要があります。
@
AND条件 … 配列1の結果と、配列2の結果を掛ける→どちらにも合致した場合のみ1×1=1が返るのでこれを配列計算できます。
A
OR条件 … 配列1の結果と、配列2の結果を足す →
どちらかに合致した場合に1以上が返る(0+1か1+1)のでこれを配列計算できます。但しどちらにも合致した分が重複してしまうので、これを引く必要があります。(注:引くのは異なるフィールド(配列)の複数条件の場合。同じフィールド(配列)のOR条件では引く必要はありません)
|