- ベストアンサー
エクセルで検索範囲より特定文字に対応するセルの値を求めたい。
教えてください。 A1~D4に,下記のようにDATAがある場合、 セルA7に ”A1”と入力すると セルB7に ”部品A”と表示させたい。 セルA8に ”D3”と入力すると セルB8に ”部品C”と表示させたい。 どのような関数で求められるでしょうか。 A B C D 1 使用部品 番号1 番号2 番号3 2 部品A A1 B1 3 部品B A2 A3 B5 4 部品C D1 D3 A4 5 部品D C2 C3 6 7 A1 部品A 8 D3 部品C 9 C3 部品D 10A4 部品C
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=INDEX($A$1:$A$5,SUMPRODUCT(($B$2:$D$5=A7)*ROW($2:$5))) =LOOKUP(0,0/MMULT(($B$2:$D$5=A7)*1,{1;1;1}),$A$2:$A$5) =OFFSET($A$1,SUMPRODUCT(($B$2:$D$5=A7)*{2;3;4;5})-1,) =INDIRECT("A"&SUMPRODUCT(($B$2:$D$5=A7)*{2;3;4;5}))
その他の回答 (3)
- rukuku
- ベストアンサー率42% (401/933)
はじめまして 「VLOOKUP」関数でできそうな問題なのですが、実際にはこのままではVLOOKUP関数は使えません。 そこで、シートの片隅を利用して、VLOOKUP関数が使えるよう、並び替えを行います。例としてH~Kの列を使用するとします。 前提条件として、番号が入っているのはB~Dの3列とします。(空欄があっても構いません) J1に =INT((ROW()-1)/3)+1 以下、部品数×3行までオートフィル(余分にオートフィルしても動作には影響はありません。) K1に =MOD(ROW()-1,3)+2 以下、部品数×3行までオートフィル とすると J列は 1,1,1,2,2,2,3,3,3… と3回同じ数字の繰り返して次の数字になります。 K列は 2,3,4,2,3,4,2,3,4… と2,3,4の繰り返しになります。 ここで、 H1に =INDIRECT("R"&J1&"C"&K1,FALSE)&"" 以下、同様にオートフィル I1に =INDIRECT("R"&J1&"C1",FALSE) 以下同様にオートフィル とすると次のような表になります。 A1 部品A B1 部品A 部品A A2 部品B A3 部品B B5 部品B D1 部品C D3 部品C A4 部品C C2 部品D C3 部品D 部品D この表ならばVLOOKUP関数が使えます。 B7に =VLOOKUP(A7,H:I,2,FALSE) 以下、必要に応じてオートフィルでできます。 ---------- H列の「&""」はおまじないです。 こうしないと、番号が空欄だった場合には「0」が入ってしまいます。 すると、VLOOKUP関数を使用する際に、A7が空欄のときはI3の値である「部品A」が表示されてしまいます。
お礼
ありがとうございました。 このような方法もあるのですね。 早速、実行させていただきました。 感動です。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
重いのでお勧めしませんが、良い案が浮かばないので・・・ =INDEX($A$2:$A$5,MATCH(1,MMULT(($B$2:$D$5=$A7)*1,{1;1;1}),0))
- web2525
- ベストアンサー率42% (1219/2850)
=INDEX($A$2:$A$5,MATCH(1,INDEX(($B$2:$B$5=A7)+($C$2:$C$5=A7)+($D$2:$D$5=A7),0,0),0),0) 重複なしならこんな感じで。
お礼
ありがとうございました。 関数の応用力について勉強したいと思います。 助かりました。