- 締切済み
エクセルの関数について教えてください
こんにちは。 エクセル関数について教えてください。 (OS:WIN2000、エクセル2003) こんな表があって、別のシートの A1=200 A2=D A3=2・・・1行目D列の項目 と入力したときに A4に「はな」と表示させたいのですが Index関数とMatch関数の組み合わせだと思うんですが どうしたらいいですか? A列 B列 C列 D列 E列 1行 --- --- 1 2 3 2行 100 A いぬ くり 赤 3行 200 B ねこ いも 青 4行 300 C ぞう ねぎ 緑 5行 200 D とら はな 黄 6行 100 E うし みそ 朱 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
例データ Sheet1 A列 B列 c列 D列 E列 F列 100 A いぬ くり 赤 100A 200 B ねこ いも 青 200B 300 C ぞう ねぎ 緑 300C 200 D とら はな 黄 200D 100 E うし みそ 朱 100E ーー F列はF1に=A1&B1 と入れて、下方向に式を複写。 Sheet2で A1:A3 200 D 2 その他のセルに =INDEX(Sheet1!$A$1:$F$100,MATCH(A1&A2,Sheet1!$F$1:$F$100,0),4) 結果 はな 該当なしの場合のエラー表地対策は略。 ーー VLOOKUP利用型の問題だが、条件がA列 200、B列 C とあり、データが別列に分かれているため、結合した列を新たに作るほうがやり易い。 SQLなどは別として、VBAでも別列になっているデータから、2条件該当分を探すのは(総なめ法利用)以外は難しい。 そしてそうなると、作業列が検索データ範囲の最左列には来ないので、VLOOKUPは使えない。それで、MATCH関数の出番になる。MATCH関数を使う場合は、INDEX関数を使うことになる。
- nayuta_lot
- ベストアンサー率64% (133/205)
こんにちは VLOOKUP使ったほうがすっきりしますよ。 まず、キーの組み合わせがあるので、テーブル側のC列とD列の間に 1列挿入してそこに =B2&C2 と入力して100A、200B、300C‥というようなキーを作成します。 次に表示側のシートのA4に =VLOOKUP(A1&A2,Sheet1!D2:G6,A3+1,0) と入力します。 ※VLOOKUP(検索キー,検索範囲,列番号,照合の型) VLOOKUPは検索範囲の一番左端をキーにして行方向に検索して、一致 した場合に、その行の検索範囲の一番左の列を1列目(キー)として 指定した列の値を参照します。 従って、A3で指定した値に1足してあげれば目的の値を参照できます。 また、照合の型は完全一致が0なので、0と覚えておけば問題ないと 思います。 検索用に作ったキーは目障りでしたら隠しちゃってください。 ちなみにVLOOKUPは該当がない場合には#N/Aを返すので、 =IF(ISNA(VLOOKUP(A1&A2,Sheet1!D2:G6,A3+1,0)),"該当なし",VLOOKUP(A1&A2,Sheet1!D2:G6,A3+1,0)) とすると、該当がない場合に"該当なし"と表示できます。 以上、ご参考まで
[ANo.1]に示した表が見にくかったと思います。再掲します。 Sheet2 A B C D … 1 200 100 300 2 D E C 3 2 3 1 4 はな 朱 ぞう
「こんな表」が Sheet1 にあると仮定すれば、 Sheet2 A B C D … 1 200 100 300 2 D E C 3 2 3 1 4 はな 朱 ぞう Sheet2!A4: =OFFSET(Sheet1!$A1,SUMPRODUCT((Sheet1!$A1:$A100=A1)*(Sheet1!$B1:$B100=A2),ROW(Sheet1!A1:A100))-1,MATCH(A3,Sheet1!$A1:$E1,0)-1)
お礼
大変参考になりました。 ずばりできました。 ほんとに助かりました。 ありがとうございました。
お礼
ありがとうございました。 >まず、キーの組み合わせがあるので、 >テーブル側のC列とD列の間に1列挿入してそこに >=B2&C2 テーブル側のデータに挿入すれば確かにできましたが 運用上、列の挿入ができないデータでした。 でも、大変参考になりました。