Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : その他)
関数の条件が最大個数に満たない場合
投稿日時: 20/08/25 13:33:43
投稿者: mild2

関数の条件式で A.B.C.D の最大4条件があったとします。
そこで関数の入力時に最大4個の条件に対応できるように4個の条件を入力しました。
その場合、条件が4個あった場合は問題ないのですが、条件が4個に満たなかった場合にはエラーになります。そこで4個の条件をANDやORを組み合わせて試しましたが上手くいきませんでした。なってほしいのは、例えば条件が1個しか無かった場合は、その1個の条件のみで判定し残りの3個の条件は無かったもの、若しくは無視して1個だけで判定して欲しいのです。具体的にはFILTER関数で使用します。しかしFILTER関数に拘らなくて一般的な関数で考えて貰って結構かと思います。宜しくお願い致します。

回答
投稿日時: 20/08/25 14:29:21
投稿者: んなっと

下のような表形式の具体例と、欲しい結果を添えて質問してください。
 
   A   B   C  D   E
1 Key1 Key2 Key3  値 評価
2  01 2007   1 200   A
3  02 2008   1 500   C
4  03 2007   2 600   B
5  01 2007   1 300   A
6  04 2007   3 200   B
7  01 2007   5 700   A
8  06 2008   2 900   C
 

投稿日時: 20/08/25 15:48:28
投稿者: mild2

サンプルを作成しました。
   A   B   C  D   E
1 Key1 Key2 Key3  値 評価
2  01 2007   1 200   A
3  02 2008   1 500   C
4  03 2007   2 600   B
5  01 2007   1 300   A
6  04 2007   3 200   B
7  01 2007   5 700   A
8  06 2008   2 900   C
G2=2007 H2=A
A10=filter(A2:A8,Key2=G2*評価=A)
G2とH2のどちらもデータが入力されていたら、2条件を満たすデータが抽出されますがどちらか片方しかデータが入力されていなかったらエラーになります。今回は条件を2条件でサンプルを作成しました。またAND条件の*で試しましたがそれをOR条件の+に変えて試しましたがやはりうまくいきませんでした。欲しい結果はG2だけにデータがあったら条件をG2の条件だけで抽出し、H2だけにデータがあったらH2の条件のみで抽出して欲しいのです。つまりデータが空白の条件は無視して欲しいのです。

回答
投稿日時: 20/08/25 16:01:24
投稿者: んなっと

=FILTER(A2:E8,IF(G2="",1,B2:B8=G2)*IF(H2="",1,E2:E8=H2),"")
 

回答
投稿日時: 20/08/25 16:51:07
投稿者: んなっと

演算子を無理やり使うと
 
=FILTER(A2:E8,((G2="")+(B2:B8=G2))*((H2="")+(E2:E8=H2)),"")

投稿日時: 20/08/26 14:57:49
投稿者: mild2

んなっとさん、出来ました。⇓
=FILTER(A2:E8,IF(G2="",1,B2:B8=G2)*IF(H2="",1,E2:E8=H2),"")
の方がわかりやすかったです。
 
G2="",1 ⇒空白データの場合 1 に置き換えるのがポイントのようですね。
でも何でそれで出来たのか?
この意味がまだよく理解できていません。

投稿日時: 20/08/28 21:58:30
投稿者: mild2

んなっとさん、ありがとうございました。