プロが教えるわが家の防犯対策術!

A列に抽選会の回数(1回~30回)、B列に当選番号(1番OR2番)、C列に商品番号(1番~10番)が入力されているデータが3000レコード
程入力されているデータがあります。

例えば、A列の抽選会の回数が5回&B列の当選番号が2番だった時のC列の商品番号を求めたいのですが、どんな式にすれば良いのでしょうか?入力されているデータの加工はできないので、セルを連結してVLOOKUP関数で検索値を求める事はできません。

どなたか、宜しくお願い致します。

A 回答 (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と仮定しているからです。

参考URL:http://support.microsoft.com/kb/214142/ja
    • good
    • 0
この回答へのお礼

回答有難うございます。ただ、私の理解不足なのか、欲しい値が出てきませんでした(?) 今回は、他の方のアドバイスを参考にさせていただきました。ご丁寧に有難うございました。

お礼日時:2007/06/17 11:52

>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に読み替えてください
    • good
    • 0
この回答へのお礼

わざわざ複数ない&あるパターン両方教えていただき有難うございました。
おかげさまで欲しい値が求められるようになりました。

お礼日時:2007/06/17 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!