こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

7 A1    部品A
8 D3    部品C
9 C3    部品D
10A4    部品C  

投稿日時 - 2009-02-07 00:27:40

QNo.4695718

困ってます

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

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

投稿日時 - 2009-02-07 02:36:32

お礼

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

投稿日時 - 2009-02-07 10:56:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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」が表示されてしまいます。

投稿日時 - 2009-02-07 10:53:26

お礼

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

投稿日時 - 2009-02-08 00:41:10

ANo.2

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

投稿日時 - 2009-02-07 01:34:20

ANo.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)

重複なしならこんな感じで。

投稿日時 - 2009-02-07 01:04:38

あなたにオススメの質問