• ベストアンサー

エクセルで検索範囲より特定文字に対応するセルの値を求めたい。

教えてください。 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  

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

=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}))

airi0321
質問者

お礼

ありがとうございました。 関数の応用力について勉強したいと思います。 助かりました。

その他の回答 (3)

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.4

はじめまして 「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」が表示されてしまいます。

airi0321
質問者

お礼

ありがとうございました。 このような方法もあるのですね。 早速、実行させていただきました。 感動です。

回答No.2

重いのでお勧めしませんが、良い案が浮かばないので・・・ =INDEX($A$2:$A$5,MATCH(1,MMULT(($B$2:$D$5=$A7)*1,{1;1;1}),0))

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

=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) 重複なしならこんな感じで。

関連するQ&A