- ベストアンサー
エクセルでのデータ抽出について
こんにちは!関数初心者です・・・。 どうしてもできなくて教えていただきたいのですが、たくさんのデータの中から一致するデータを表示したいのです。 下記のようなデータがあったとき、検索する文字列を入れるセルをA1とします。検索結果をB1に表示したいのです。 たとえば品目にある「鉛筆」の商品ID「AA-001」を探したいとき、セルA1に「鉛筆」と入力したら、セルB1に「AA-001」と表示したいのですが、どうしてもうまくいきません。 商品ID 業者NO 科目 品目 単価 AA-001 スズキ100 文具 鉛筆 100 AA-002 スズキ200 文具 ノート 200 BB-001 タナカ100 食品 卵 100 BB-002 タナカ200 食品 チーズ 200 CC-001 サトウ100 衣類 シャツ 100 CC-002 サトウ200 衣類 スーツ 200 どなたかおわかりになりましたら教えてください!! よろしくお願いいたします!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 データをsheet1として、sheet2のA1に品目名、B1に抽出結果を表示します。 =IF(COUNTIF(sheet1!D:D,A1),INDEX(Sheet1!A:A,MATCH(A1,Sheet1!D:D,0)),"")
その他の回答 (4)
- wisemac21
- ベストアンサー率39% (171/429)
品目の列を昇順に並び替えれば、LOOKUP関数を使うこともできます。
- imogasi
- ベストアンサー率27% (4737/17069)
>どうしてもうまくいきません。 エクセルでの「検索」(=存在する行を見つける)は 1つしか該当が無いことが保証されて確実な場合は VLOOKUP か MATCH (その他VBAもあるが) のどちらを使うしかないと言う単純なものです。 何を勉強してたのですか。IF関数ですか。 ーー ただしVLOOKUPは探す列が最左列で無いと使えないというものです。 従ってMATCH関数しかありません。 これで行を求めて、その同じ行の別列のせルの値は INDEX か OFFSET 関数で求めます。 INDEXは既回答なので、OFFSETで ーー 例データ A1:C3 a 1 x b 2 y c 3 z F1に y(探すものを入力) 式 =OFFSET($A$1,MATCH(F1,$C$1:$C$3,0)-1,0) OFFSET 関数の第2、第3引数は、A1セルからの「ずれ」で記述しますので、-1した値で示します。 結果 b ーー 以上は定石で>どなたかおわかりになりましたら教えてください・・ といった大層なものではないのですよ。 ーー 該当が、1列に2つ以上あるのを引き出してくる質問も多いが、こちらは上記のように簡単ではない。参考に。
- hallo-2007
- ベストアンサー率41% (888/2115)
VLOOKUP関数では、左端を検索するので出来なかったとの事ですか? 品目に重複はないものとして A B C D E F 商品ID 業者 NO 科目 品目 単価 AA-001 スズキ 100 文具 鉛筆 100 AA-002 スズキ 200 文具 ノート 200 ・・・・ 別シートのA1に 鉛筆 と入れてあったとして B1に =INDEX(商品シート!A:A,MATCH($A1,商品シート!$E:$E,FALSE)) といれて右へコピィしてみてください。 エラー処理なしです。
お礼
できました!ありがとうございました! 急いで作成しなくてはいけなくて、勉強する暇もなく、関数に無知な私は本当に悩んでいました。。。ありがとうございました!
- ore-summer
- ベストアンサー率29% (133/454)
VLOOKUPでの抽出でしょうか。 VLOOKUPでの検索文字列は一番左側の列でないとエラーになります。 この場合、品目が一番左側でないとだめです。 http://exinfo.biz/func/func_vlookup.shtml
お礼
できました!ありがとうございました! 急いで作成しなくてはいけなくて、勉強する暇もなく、関数に無知な私は本当に悩んでいました。。。ありがとうございました!