- 締切済み
エクセルで検索結果が複数の場合すべて抽出する
Excelでシート営業とシート顧客の2つがあります。どちらも互いの部署のデータが入っています。 シートの説明をします。シート顧客のD列に部品コード【145847】のような数字が1000以上あり、シート営業にも同じ数字がB列に1000以上ランダムにあり更に同じ数字が出てきます。シート営業のA列には、取引先コードが【123-254】とあり、同じ部品コードでも違う取引先コードがいくつかあります。 そこで私の作りたいのは、シート顧客をベースにして、部品コードD1を検索値として、シート営業の部品コードB列の検索範囲から検索して、ヒットした取引先コードのみをシート顧客の部品コードD1隣空セルに入れたいのです。このとき、検索結果が複数あった場合はさらに隣の空セルにいれたいのです。開きセルE.F.G.H.I.Jのように10個程度必要です。つぎは部品コードD2を検索値として行います。これを1000以上繰返したいので、関数かVBAを考えています。 長くなってすみません。 マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすくプログラムを教えていただきたいのですが・・方法が分からず困っています。 お手数ですが、どうかお教えください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hiro-ss16
- ベストアンサー率42% (18/42)
考えられる一つの方法を紹介したいと思います。関数がやや複雑になるので、分かり易くするためもあって、顧客シートのA,B,C 列を空けて、ここに、シート顧客 のA,B列をコピーしたとして、説明します。 シート顧客 A B C D 1 取引先コード 顧客コード 顧客コード 2 123-234 145847 2 145847 123-234 123-236 3 123-235 145848 145855 4 123-236 145847 4 145856 5 123-237 145855 145857 6 123-238 145847 6 145858 2001 1 2 3 2002 145847 2 4 6 2003 145855 2001行のE列から横に 1 2 3・・・10と数字をいれる D列の1行~2000行を2002行~4001行にコピーします。 C2に次の式を入れ下にコピー =IF(B2=$D$2,ROW(),"") 下にコピー これは同じ顧客コードには行#を表示させるもの。 次に2002行のE列に次の式をいれる =IF(ISERROR(SMALL($C:$C,E2001),"",(SMALL($C:$C,E2001)) 横にコピー これは同じ顧客コードの飛び飛びを横に揃える。エラーは空白にするもの。 最後にE2の式は =INDEX($A:$A,E2002) 横にコピー これはE2002に表示させた行数を利用して取引先コードを表示させるものです (2001行の表示はずれてますがE列からです) このような考え方でやってみてください。
補足
回答ありがとうございます。同じようにやってみましたが、「2002行のE列に次の式をいれる =IF(ISERROR(SMALL($C:$C,E2001),"",(SMALL($C:$C,E2001))」でうまくできません。2002のE列に2とは表示されず、上記の式が表示されてしまいます。 すみませんが何が悪いんでしょうか。教えてください。よろしくお願いします。