• 締切済み

エクセルで検索結果が複数の場合すべて抽出する

Excelでシート営業とシート顧客の2つがあります。どちらも互いの部署のデータが入っています。 シートの説明をします。シート顧客のD列に部品コード【145847】のような数字が1000以上あり、シート営業にも同じ数字がB列に1000以上ランダムにあり更に同じ数字が出てきます。シート営業のA列には、取引先コードが【123-254】とあり、同じ部品コードでも違う取引先コードがいくつかあります。 そこで私の作りたいのは、シート顧客をベースにして、部品コードD1を検索値として、シート営業の部品コードB列の検索範囲から検索して、ヒットした取引先コードのみをシート顧客の部品コードD1隣空セルに入れたいのです。このとき、検索結果が複数あった場合はさらに隣の空セルにいれたいのです。開きセルE.F.G.H.I.Jのように10個程度必要です。つぎは部品コードD2を検索値として行います。これを1000以上繰返したいので、関数かVBAを考えています。 長くなってすみません。 マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすくプログラムを教えていただきたいのですが・・方法が分からず困っています。 お手数ですが、どうかお教えください。

みんなの回答

  • hiro-ss16
  • ベストアンサー率42% (18/42)
回答No.1

考えられる一つの方法を紹介したいと思います。関数がやや複雑になるので、分かり易くするためもあって、顧客シートの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列からです) このような考え方でやってみてください。   

mao_786
質問者

補足

回答ありがとうございます。同じようにやってみましたが、「2002行のE列に次の式をいれる  =IF(ISERROR(SMALL($C:$C,E2001),"",(SMALL($C:$C,E2001))」でうまくできません。2002のE列に2とは表示されず、上記の式が表示されてしまいます。 すみませんが何が悪いんでしょうか。教えてください。よろしくお願いします。

関連するQ&A