• ベストアンサー

エクセル関数で複数条件を 探す

表1で、A1 りんご B1 あまい       A2 ぶどう B2 まずい という表があります。   表2で、A1 りんご少しあまい       A2 ぶどうとてもまずい という表があります。  表1の「りんご」と「あまい」のふたつの条件を満たすものを表2のA列で探すという作業をしているのですが、関数を使って簡単に探す方法はありますか?  ちなみに今は 表1のA1とB1のふたつの条件を「りんご*あまい」としてCtrl+Fで 表2のA列で検索して 一致したら ○を 横につけていくという地道な作業をしています。4000件近くありますので何かいい方法ありましたらよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

もしかしたらこの質問は表1の複数の条件組み合わせの1つに合致したら「○」をつけるという意味ですか? そうでないと表1に二つの条件が書かれている意味が分かりません。 質問の例では、表2で  りんご少しあまい  ○  りんごとてもまずい ○  ぶどう少しあまい という結果を得たいということと解釈しました。 そうだとすると表2のB1セルの式は以下の2つのようになります。どちらかを貼り付けて下方向にコピーしてください。  =IF(MAX(INDEX(ISNUMBER(FIND(表1!$A$1:$A$2,A1))+ISNUMBER(FIND(表1!$B$1:$B$2,A1)),))=2,"○","") もしくは  =IF(MAX(INDEX(COUNTIF(A1,表1!$A$1:$A$2&"*")+COUNTIF(A1,"*"&表1!$B$1:$B$2),))=2,"○","") なお「表1!$A$1:$A$2」「表1!$B$1:$B$2」の箇所は表1の条件の範囲に修正して下さい

shi-zuu
質問者

お礼

御礼が遅くなりました。その後何度も色々試してみました。結果的に一番思っていたものと近いものができました。ありがとうございました。

その他の回答 (5)

回答No.5

すいません。A1じゃなかったですB1に下記の式を入れて下さい。 B1=IF(AND(COUNTIF(A1,"りんご*")=1,COUNTIF(A1,"*あまい")=1),"○","") って、考えている間にたくさんの答えの書き込みがあったみたいですね;;

回答No.4

関数を入れるなら、COUNTIF()で りんご と あまい の 2つが入ったセルがあれば○を付けるという方法でどうでしょう? 下記の式は基本的にりんごが文の一番左側、 あまいが一番右側にあるのが前提です。 もし、文の中間にあるのなら"*りんご*"のように 両方をワイルドカードで挟んで下さい。 A1=IF(AND(COUNTIF(A1,"りんご*")=1,COUNTIF(A1,"*あまい")=1),"○","") この式をB列に入れ、下までドラッグコピーして引っ張れば 出来ると思います。

回答No.3

関数を組み合わせると1つのセルに納められますが、式がややこしくなるので、3列を使う方法を回答します。 まず、表2のC1セルに、 =IF(ISERROR(FIND(表1!$A$1,A1)),"",1) と式を入力します。FIND関数はFIND(A,B)と書くと、Bの文字列の中にAという言葉があるか探し、あればその最初の文字の位置を数字で返します。もしなければ、#VALUE!というエラーを返します。 そこで、ISERROR関数でこれがエラーかどうかを判断し、エラーなら""(何もひょうじしない)、見つかれば1を表示するようにします。 次に、表2のD1セルに =IF(ISERROR(FIND(表1!$B$1,A1)),"",1) と入力します。式はさっきと同じで、FIND関数の最初の引数がB1セルになっただけです。 そして、表2のE1セルに =if((C1="")+(D1=""),"","○") と入力します。 これはC1セルが""かD1セルが""の時は""を返し、それ以外(つまり両方に1がある時に○を返します。 あとは、このC1~E1を下に4000行分コピーするだけです。 E列に○があれば、両方の条件に合ったものということになります。 なお、C1,D1のセルで、表1!$A$1、表1!$B$1 と絶対番地表示にしておかなくてはなりません。

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.2

ちょっと考えれば簡単な作業ですよね。 求める結果は(「あまい」がある)AND(「りんご」がある)でしょ? (「○○」がある)は、=FIND("○○",A1) がエラーしてなければいいわけですから =ISERROR(FIND("りんご",A1)) で、(「りんご」がある)ならば「FALSE」が帰ってきますね。 同じように(「あまい」がある)ならば「FALSE」を返せますから、 =OR(ISERROR(FIND("りんご",A1)),ISERROR(FIND("あまい",A1))) これで「FALSE」が出てきたデータが「りんごがあまい」データです。 後は「データ」「フィルタ」で「FALSE」を検索すればオッケーです。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

表2で B1=IF(COUNTIF(A1,表1!$A$1&"*"&表1!$B$1),"○","×")

関連するQ&A

専門家に質問してみよう