• 締切済み

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

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

  • 複数の検索結果を抽出したい

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

  • Excelでの数式について(検索結果の複数表示)

    販売記録としての簡単な表です。 A列には日付、B列には取引先コード、C列には商品コード、D列には商品名が入力してあります。 日付ごとに、取引先・商品名を入力するので、一つの列の中にはもちろん重複するデータがあります。 そこで、やりたい事はというと、 たとえば、セルE1に取引先コードを一つ入力すると、F列に、B列の中から同じコードをすべて探して、その行のD列にある商品名を表示させたいということです。 10件あったら10件とも(たとえ同じものでも)表示させたいのですが、どうしたらいいのでしょう? とりあえず、『=VLOOKUP(E1,B2:D30,3,TRUE)』といった感じににやってはみたのですが、これでは一つしか表示しないのです。 これをExcelで作りたいのですが、どなたか良い解決方法を教えてください。 お願いします。

  • エクセル 別シートから一覧を抽出したい

    部品一覧表を作成しているのですが、2シートあり 1入力シート・2部品コードシートとあります。 部品コードシートにはB列に部品番号・C列部品名・D列部品番号・E列部品名と2行ずつ使い番号・品名がB~Wまで47行分入力されています。 B1:C47、D1:E47…と2列47行にはそれぞれ【A】、【B】、…とセルの名前の定義をつけました。現在【H】までありますが、今後増える可能性があります。 入力シートに、セルの名前を指定したときに部品コードのシートから 一覧を抽出したいのですが、どの関数を使えばよいのかわかりません。 入力シート                 |部品コードシート G   H                  | A Bコード C部品名  Dコード E部品名 4式入力用にあけています。     |1 1800  ユニットA   1501 電源A 5コード 部品名             |2 1801  ユニットB   1502 電源B 6                       |3 G4に関数を入れてG6~G52まで部品コードのシートA1~A47を一気に表示 させたいのです。部品コードシートの行数が変わることはありません。 マクロを使わないと、関数では難しいでしょうか?

  • (エクセル)複数の検索ワードから検索し転記する。

    (エクセル) 複数の条件にあうレコードを検索し転記する方法を教えてください。 会社で加工履歴を入力し、それを加工のデーターベース及び、単価表としても使用しようと考えています。 以前は、部品コードを入力すると、VLOOKUPで別シートにある一覧から部品コードを検索し、その型式・部品名・金額・処理を出せるようにしていたのですが、同じ部品コードで違う処理加工をするケースが存在し、VLOOKUPでは先頭の1つのみしか結果が出せない為、手入力で行っていたのですが、手入力の際、そこのセルの数式が飛んでしまい、使いやすいのか使いにくいのかわからない状態でした。 そこで、部品コードと行った処理(合計4セル)から一致するものを検索し、言い換えれば、写真下段の加工フォームの様に、C4・C5・D5・E5の4種から一致するレコードを検索し、写真上段の一覧からその結果をC7・E7・C8に挿入すればいいのかと思い、色々とマクロを組んでみましたが、一向に作動しません。 このようなケースの場合、どういったマクロを組めばいいのでしょうか? どなたか、御教授願います。

  • 複数シートからのデータ検索、コピー

    シートから条件に合致するデータを検索して、別ファイルの新しいシートにそれぞれ必要なデータ部分だけをコピーしたいのですが、検索するシートも複数で、また検索条件も複数のためか、過去の質問等を見ましても良く分かりませんでした。(マクロ等は余り使ったことが無い初心者です。)そこで、どなたかお詳しい方に教えて頂ければ、と思いまして投稿致しました。 シートは”貸借対照表”と”損益計算書”の2つあります。 抽出データは4行目からなのですが(A4から)、A列:コード(数字)、B列:勘定科目(文字)、C列:繰越額(数字)、D列:借方額(数字)、E列:貸方額(数字)、F列:残高(数字)、G列:比率(%)となっております。 各シートの構成として、A列は三桁または四桁の数字なのですが、(A4から)A列が三桁の数字の行を選んで、なおかつ、D列とE列が両方とも0で無い行のB列、D列、E列の値を二つのシートそれでれで検索し、別シートにコピーしたいのです。(どちらのシートからでも構いません。A列のコードの値はシート毎ではダブらないので、両方で抽出されたB、D、E列の値が列記できれば良いです。) ただ、2つのシートの列数は決まっておらず、一方のシートの抽出データともう一方のシートの抽出データがダブってコピーされない様に、 したいな、とは思っております。 桁数での検索はLEN関数があるらしいのですが、複数のシートが対象となっており、マクロという機能を使った方が良いのでしょうか? 当方も初心者ゆえ、分かりやすく教えて頂ける方、よろしくお願い致します。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセルVBA 検索機能を利用したデータ抽出方法

    ■主な目的 顧客の住所データベースのうち 市町村の合併等により変更されたものを 抽出します。 自分で考えたのですが行き詰りました。 誰か助けてください。 ■エクセルファイルのシート構成と処理方法 シートは3枚あります。 (1)sheet1 旧住所一覧 A列に旧住所の一覧が約60行にわたって記載されいてます。 西白河郡表郷村 大野郡和泉村 神崎郡神崎町 ・ ・ (2)sheet2 顧客データベース A列に顧客コード、B列に顧客名、C列に郵便番号、D列に顧客住所が約7000行にわたって記載されています。 (3)sheet3 抽出用シート sheet1のA1の値をsheet2のD列を対象として検索をかけ、該当した行(A~D列)をそのままsheet3にコピーし、あとはそれを繰り返します。 私のやり方は cells(行、列)、ForNext、seach関数等を組み合わせてやろうとしましたが、serch関数のセル位置取得がRange("行列")形式になり、それをどうやったらsheet3に行をA~Dまで丸ごとコピーできるのかわからず降参しました。 よろしくおねがいします。

  • Excelで検索する列をメーカー毎に変えたい

    お世話になります! 検索関数?で困っております。 メーカーに商品を発注する際 メーカー毎 送り先ごとにメーカーコードがあり そのメーカーコードを検索によって一つのセルに表示させたいのですが・・・ 例1 あいうメーカーでは ABCという顧客に対しては 123というコードがあって かきくメーカーでも、 ABCという顧客に対して いろは というコードが独自にあって 顧客の住所録の最終列当たりから各メーカー名を入力し、データを整理しています。 (顧客データは別BOOKになります!) 要は sheet1のA1のセルにはメーカー別顧客コードを表示させたい メーカー名 あいう 顧客名 ABC メーカー名が あいうなら 住所録のメーカー名あいう列(A列)の ABC顧客(行)のメーカーコードを検索する 以上の説明でわかりましたでしょうか? 初心者ですので、どのように説明をすれば伝わるのか 難しいのですが ご協力頂ければ幸いです! よろしくお願い致します!

  • エクセルでデータを抽出して日報を作りたいです

    今は日報を手書きで作っているんですが、今度からパソコンで作ることになり、かなり困ってます。 やりたい内容としては、エクセルで作っている顧客データがあるんですが、それの中の郵便番号を絞り込んで別ブックの日報のシートに顧客名だけを移す作業です。マクロ初心者で本を読んではいますがどうしていいのかわかりません。どなたか教えてください。 ≪顧客データ≫ A列      B列     C列     D列       顧客名  電話番号  郵便番号  市町村名    顧客データはこのような並びです。顧客名は2行目から始まっており、24000行ほどあります。 ≪日報≫ A列     B列 番号   顧客名 日報はこの並びです。日報の顧客名を移したい場所はB列の13行目から表示させたいです。 日報を作るときにできれば顧客データを触りたくないので、日報でセルに郵便番号を入れて マクロで作れるボタンをクリックして作成できたらいいかなって思っています。 ちなみに日報はデスクトップにあるんですが、顧客データは違うフォルダの中に入っています。 マクロ初心者ですがどなたかわかる方がいましたらよろしくお願いいたします。 わかりやすくコードを書いていただけると助かります。

  • エクセルの検索マクロについて

    今までオートフォーマットで検索していたのですが,一つの列に存在するデータが多量になったため,マクロを使った検索としたいです。 検索の方法として,「コンボボックス」で選択したデータを検索したいと考えています。 現状は以下の通りです。 ○検索元となるデータは,1つのSheetにまとめてあります。 ○「コンボボックス」で指定したいデータは4つあります。 ○検索元のSheetの,D列が文字列,E列が数字,F列が文字列,G列が数字となっています。 この,D列~G列の中で,「コンボボックス」4つで指定したデータを別のSheetで表示させたいと考えています。 エクセルは,表計算やグラフならある程度使いこなせるのですが,マクロは全くの素人です。 お手数をお掛けしますが,どなたか知恵を授けてください。 よろしくお願いします。