電子書籍の厳選無料作品が豊富!

Excelでシート営業とシート顧客の2つがあります。どちらも互いの部署のデータが入っています。
シートの説明をします。シート顧客のD列に部品コード【145847】のような数字が1000以上あり、シート営業にも同じ数字がB列に1000以上ランダムにあり更に同じ数字が出てきます。シート営業のA列には、取引先コードが【123-254】とあり、同じ部品コードでも違う取引先コードがいくつかあります。

そこで私の作りたいのは、シート顧客をベースにして、部品コードD1を検索値として、シート営業の部品コードB列の検索範囲から検索して、ヒットした取引先コードのみをシート顧客の部品コードD1隣空セルに入れたいのです。このとき、検索結果が複数あった場合はさらに隣の空セルにいれたいのです。開きセルE.F.G.H.I.Jのように10個程度必要です。つぎは部品コードD2を検索値として行います。これを1000以上繰返したいので、関数かVBAを考えています。
長くなってすみません。

マクロについては あまり詳しくないので
できれば関数を使いたいのですが 無理でしょうか?
マクロを使うのであれば 分かりやすくプログラムを教えていただきたいのですが・・方法が分からず困っています。
お手数ですが、どうかお教えください。

A 回答 (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列からです)
このような考え方でやってみてください。


  

この回答への補足

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

すみませんが何が悪いんでしょうか。教えてください。よろしくお願いします。

補足日時:2009/02/14 19:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!