- ベストアンサー
【Excel-関数】複数条件に一致する値抽出
Vlookupやsumifs、if&andのネストでもうまくいかないので、ご質問させていただきました。どなたかお力になっていただけるとありがたいです。 まず、このような「商品マスター」があります。 商品名 サイズ下限(mm) サイズ上限(mm) 金額(円) abc 5 5.9 100 abc 6 6.9 200 abc 7 7.9 300 def 5 5.9 400 def 6 6.9 500 def 7 7.9 600 説明:abcという商品で薄さが5mm~5.9mmは100。 6mm~6.9だと200。 金額は”商品名”そして”サイズ”(薄さ)によって決まります。 そして問題の「売上表」 商品名 サイズ 金額 def 5.2 400 ←ここの「400」を数式で自動的に出したい abc 6.5 200 金額部分を出すには、 商品が一致、サイズで指定した値の「以上」や「以下」の判断をさせなければいけないので、複数条件になるかと思います。 オートフィルタだったら簡単なんですが、別の表に商品名とサイズを入力したら、金額が出てくるようにしたいので、やはり関数かなと、、。 以上、わかりにくい説明で申し訳ありませんが、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 ご例示の表サイズで商品名の有無チェック等は考慮していません。 =INDEX(D:D,SUMPRODUCT((A2:A7=商品名)*(B2:B7<=サイズ)*(C2:C7>=サイズ)*ROW(A2:A7)))
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像のように表を作っておきます。 質問では○以上~△以下 ということですが、 表では○以上~△未満 ということになります。 尚、表のF・G列は不要なのですが、判りやすくするために敢えて残しておきます。 表のC2セルに =IF(COUNTBLANK(A2:B2)>0,"",INDEX($H$2:$I$6,MATCH(B2,$E$2:$E$6,1),MATCH(A2,$H$1:$I$1,0))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 何とか希望に近い形にならないでしょうか? 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
お礼
お~これも素晴らしいですね。 こちらでも出来ました。 index関数とMATCH関数を使用し、マスターの表で指定した行列でぶつかる所を取りだすんですね~。すごい。 図付きでとてもわかりやすかったです。 行の数値を求めるMATCH関数の引数の検索の型に「1」を使うのもポイントですね。 ありがとうございました。 とても参考になりました。
お礼
すごい!スバラシイです。 SUMPRODUCTにこのようなやり方があったとは知りませんでした。 配列で単価×数量 のようなものだけだと思っていました。 indexとrowを組み合わせれば出来るんですね。 チャレンジしてみたら、出来ました。 ほんと感謝します。_(_^_)_ ありがとうございました。