- ベストアンサー
エクセル関数で、ある条件で表中の値を拾う方法は?
エクセル関数を使って、表からある条件下でセルを特定する方法を探しています。 match関数とchoose関数の組み合わせでそれなりにできたのですが、その計算式をコピーするにはまた数式を入れなおさなければならない事に気が付いて、その労力に挑む気にはなれません。 マクロを組むという事も考えましたが、関数で対応できそうな気がするので。 例えば、下表にて A列 B列 C列 1行目 5/12 りんご 300 2行目 5/14 みかん 400 3行目 5/21 いちご 450 4行目 5/24 バナナ 800 5行目 5/31 メロン 950 B列の中で、みかんに一致するセルを特定し、そのみかんを買った日付をセルに書き出したい。 日付だけではなく、その金額も隣のセルに書き出したい。 ちなみに、品目が重複する場合もあるのですがそれは無視していいです。 =choose(match("みかん",B1:B5,0),A1,A2,A3,A4,A5) で、やってみたのですが、実はChooseの引数にあたるものが25個あって、みかんにあたる品目が20個くらいありますので、この数式を20個作らなければならないので他の方法を探しています。 どなたかご存知の方がいましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 すみません、日付取得は =INDEX(A1:A5,MATCH("みかん",B1:B5,0)) でした。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
自称imogasi方式で解けます。 例データA1:E7 A列 B列 C列 E列 みかん 5月12日 りんご 300 0 5月14日 みかん 400 1 5月21日 いちご 450 1 5月24日 バナナ 800 1 5月31日 メロン 950 1 6月14日 みかん 800 2 E2に =COUNTIF($B$2:B2,$A$1)と入れて下方向に複写する。 結果は上記D列。 どこでも良いが、F2に =INDEX($A$2:$C$100,MATCH(ROW()-1,$D$2:$D100,0),2) と入れて下へ式を複写する。D列のMAX行だけ複写する。 $100は適当にデータ行数以上に指定。 別シートにも結果を出せる。 >品目が重複する場合もあるのですがそれは無視していいです あえてこの条件にしたがってません。 >日付だけではなく、その金額も隣のセルに・・ 項目の順序は式を変えればどうにでもなります。 「imogasi方式」で、OKWAVEで照会してもらえば、少し違うが似た質問に、同じようなやり方で答えています。
お礼
ありがとうございました。 他の回答例も参考にして、やってみます。
- merlionXX
- ベストアンサー率48% (1930/4007)
日付取得 =INDEX(C1:C5,MATCH("みかん",B1:B5,0)) で、セルの書式を日付にしてください。 金額取得 =INDEX(C1:C5,MATCH("みかん",B1:B5,0))
お礼
ありがとうございました。 早速やってみます。