- ベストアンサー
検索値が複数条件ある場合のエクセル関数
A列に抽選会の回数(1回~30回)、B列に当選番号(1番OR2番)、C列に商品番号(1番~10番)が入力されているデータが3000レコード 程入力されているデータがあります。 例えば、A列の抽選会の回数が5回&B列の当選番号が2番だった時のC列の商品番号を求めたいのですが、どんな式にすれば良いのでしょうか?入力されているデータの加工はできないので、セルを連結してVLOOKUP関数で検索値を求める事はできません。 どなたか、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>A列の抽選会の回数が5回&B列の当選番号が2番だった時のC列の商品番号 同じA列、B列の値に対してC列の値が複数ありますか? あるかないかで回答が変わります。 ないなら =IF(SUMPRODUCT((A1:A500=5)*(B1:B500=2))=1,INDEX(C1:C500,SUMPRODUCT((A1:A500=5)*(B1:B500=2)*ROW(A1:A500))),"該当なしまたは重複あり") 重複があるときで最小行の商品を検索するなら =IF(SUMPRODUCT((A1:A500=5)*(B1:B500=2))=0,"該当なし",INDEX(C1:C500,LARGE(INDEX(((A1:A500=5)*(B1:B500=2)*ROW(A1:A500)),),SUMPRODUCT((A1:A500=5)*(B1:B500=2))))) 重複があるときで最大行の商品を検索するなら =INDEX(C1:C500,MAX(INDEX(((A1:A500=5)*(B1:B500=2)*row(A1:A500),))) すみませんが式中の500は3000に読み替えてください
その他の回答 (1)
- 0kool0
- ベストアンサー率50% (1/2)
こんばんわ いくつか方法はありますが、例えばコレはいかがでしょうか。 =INDEX(C2:C3001,MATCH(5,IF(B2:B3001="2番",A2:A3001),0)) 見ての通りですが、 B2からB3001の範囲で 2番、且つA2からA3001の範囲で5の行のC列の値を返す という式です。 A列とB列を逆にしても大丈夫です。 =INDEX(C2:C3001,MATCH("2番",IF(A2:A3001=5,B2:B3001),0)) ご指定の検索条件である "2番" と 5 はセルを指定しても大丈夫です。 配列数式ですので、確定するときは Ctrl+Shift+Enter を押します。 応用としてこれでも大丈夫です。 =INDEX(C2:C3001,MATCH(5&"2番",A2:A3001&B2:B3001,0)) これのほうがわかりやすいですかね。 今回ご指定のデータはC列までで検索条件が2つですが、3つ以上になるならこれがいいかもしれません。match のあとに条件を増やせばいいだけですから。 ちなみにどの式も3001行にしてありますが、これは1行目は項目名でデータが3000と仮定しているからです。
お礼
回答有難うございます。ただ、私の理解不足なのか、欲しい値が出てきませんでした(?) 今回は、他の方のアドバイスを参考にさせていただきました。ご丁寧に有難うございました。
お礼
わざわざ複数ない&あるパターン両方教えていただき有難うございました。 おかげさまで欲しい値が求められるようになりました。