• ベストアンサー

エクセルで検索して別シートに抽出したい

エクセル2003で顧客リストを作成しています。 そのリストの中から特定の文字列を検索し(あいまい検索)、その項目が含まれる行ごと 別シートに抽出をしたいです。 ほかの方のご質問も参考に試してみたのですが、上手くいきません。 1行目に各項目名 A日付 B担当1 C担当2 D管理番号 E顧客名 2行目からデータです。 ほぼ担当1か顧客名で検索し、検索結果は複数になることがほとんどです。 どなたかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 余計なお世話かもしれませんが、「担当1」でも「顧客名」でも検索できるようにしてみました。 ↓の画像でSheet1に作業用の列を設けています。 作業列F2セルに =IF(COUNTA(Sheet2!$A$2:$B$2)=0,"",IF(Sheet2!$B$2="",IF(ISNUMBER(FIND(Sheet2!$A$2,B2)),ROW(),""),IF(Sheet2!$A$2="",IF(ISNUMBER(FIND(Sheet2!$B$2,E2)),ROW(),""),IF(AND(ISNUMBER(FIND(Sheet2!$A$2,B2)),ISNUMBER(FIND(Sheet2!$B$2,E2))),ROW(),"")))) という数式を入れオートフィルでずぃ~~~!っと下へコピーしたおきます。 そしてSheet2のA5セルに =IF(COUNT(Sheet1!$F:$F)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$F:$F,ROW(A1)))) という数式を入れ列方向と行方向にオートフィルでコピー! Sheet2のA列の表示形式は日付にします。 そうすると画像のような感じになります。 これでSheet2のA2セルに「担当1」の一文字・またはB2セルに「顧客名」の一文字でも入れば それらが含まれるデータが表示されると思います。 以上、参考になれば良いのですが・・・m(__)m

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

元データがSheet1にあり、検索する担当1または顧客名をSheet2のA1セルに入力した場合、以下の式をSheet2のそれぞれのセルに入力して下方向に適当数オートフィルコピーしてください。 A3セル(D3セルまで右方向にオートフィルコピー) =IF(B3="","",INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$B$2:$B$1000<>$A$1)*(Sheet1!$E$2:$E$1000<>$A$1)*1000+ROW($A$2:$A$1000),),ROW(A1)))) E3セル =INDEX(Sheet1!E:E,SMALL(INDEX((Sheet1!$B$2:$B$1000<>$A$1)*(Sheet1!$E$2:$E$1000<>$A$1)*1000+ROW($A$2:$A$1000),),ROW(E1)))&""

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

シート1に顧客リスト シート2で A2に検索文字を入力 B1:担当1、C1:顧客名 B2="=*"&A2&"*" C3="=*"&A2&"*" [データ][フィルタ][フィルタオプションの設定]で 抽出先[指定した範囲] リスト範囲[シート1!$A$1:$E$999] 検索条件範囲[シート2!$B$1:$C$3] 抽出範囲[シート2!$A$5] としてOKをクリック

関連するQ&A

  • 【EXCEL】検索機能を追加したい

    EXCELの顧客管理表に検索機能を追加したいと思っています。 概要は以下の通りです。 ・Sheet1を顧客データ一覧、Sheet2を検索用シートとし、Sheet2の上段に検索したい 単語又は日付を入れ検索ボタンを押すと、Sheet1のリストからデータを抽出しSheet2中段以降に 表示、が理想です。 ・Sheet1の顧客データは、毎日数行ずつ追加します。 項目は「日付」「顧客名」などB1~M1まで入っています。 似た質問を調べ、↓の状態までは設定できました。 ・Sheet2のB1~M1にSheet1同様の項目を作っておき、抽出したい項目の2行目に 検索対象文字を入れる。 (例 B1の項目が日付の場合、B2に”2007/01/16”) Sheet2に作った「検索ボタン」を押すと、Sheet2の4行目 以降に検索対象文字を含むデータが抽出される。 (4行目にもSheet1同様の項目を入れています。) ちなみに、検索ボタンのマクロの内容は以下の通りです。 Private Sub 検索_Click() Worksheets("顧客入力").Range("顧客データ").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B4:M5"), CopyToRange:=Range("B8:M1063"), Unique:=False End Sub ※顧客データ・・・Sheet1の顧客リストに定義している名前 ※顧客入力・・・Sheet1の名前 これで基本的な検索はできるようになったのですが、日付指定に関して足りない部分があります。 特定の日付指定は可能なのですが、2007/01/01~2007/01/31のような範囲の指定ができません。 また、文字列の検索で「~から始まる」検索は出来るのですが「~を含む」検索が出来ません。 マクロ初心者なのでどこをどう変えればいいのかが分からず困っています。ご教授いただければ助かります。

  • excelのVBAを利用し検索抽出を行う方法

    検索というよりデータの抽出の方が正しいかもしれません。 現在、顧客情報を種類別でシートに分けて表で管理しています。 情報には名前などの文字列、日付、時間などが含まれます。 この表の形式を説明すると、 ・列 … B~AI まで項目があります。(A列は使用していません) ・行 … 1行で1つのデータとなります。 ・行数…シートにより行数は異なります。 この形式の表が全部で14シートあります。 このシートのB列に「未・済」のステータスがあるのですが、 すべてのシートの「未」である行のデータを"Sheet1"に抽出させたいと考えています。 さらに、抽出されたデータの"D"列の日付にソートされるようにしたいのですが、 説明がわかりづらかったら申し訳ありません。 VBA初心者のためご教授いただければと思います。 よろしくお願いします。

  • 複数シートの色付きセルがある行を別シートに抽出

    複数シートの各E列に色付きセルがある行のみ、1つの別シートに 抽出したいと考えています。 セルの色は条件付書式で付けています。 なお、複数シートの項目はすべて同一で、1行目は項目名が入っています。 特に複数シートが対象になっているために過去ログから中々近いものが見当たりません。 どなたかヒントだけでも頂ければ幸いです。

  • エクセルで検索→抽出

    お願いします。 シート(1)に次のように入力されています。 A列 B列 C列 D列 E列 → Y列 番号 県 性別 年齢 来社 1行目   1 東京 男  45 09/21  2行目   2 京都 女  33 10/07  3行目   3 福島 女  49 10/25  4行目   4 京都 男  25 12/05  5行目   5 東京 女  30 12/30  ↓ 以上のようにY列まで項目と、1110人のデータが 入ったシート(1)があります。 シート(2)に検索したい文字を入れて抽出する方法を教えてください。 例えば京都出身の人を検索したい場合↓ シート(2)の1行目にはあらかじめシート(1)の項目をコピーしておく 検索したい『京都』は「県列」の項目だから B列の2行目に『京都』と入力する。(1行目には項目) 3行目以降に検索結果↓が表示される。 2 京都 女  33 10/07  スイカ 4 京都 男  25 12/05  モモ 8 京都 女  58 05/04  りんご 12 京都 女  12 06/20  オレンジ また、年齢10~35を検索したりなどもできれば… データを入力したり検索したりするのは、パソコンに不慣れな方ですので エクセルに詳しくない人でも簡単に使用できるよう作成できればと思います。 以上、 検索項目を入力し、下の行に抽出されるような関数はありますでしょうか・・・? なければ近いものでも構いませんので教えてください。 宜しくお願い申し上げます。

  • Excelでのデータ抽出

    Excelに複数シートがあり、各シートには以下の内容が記載されてます。  A列 伝票No.  B列 日付  C列 担当者  D列 型番    ・    ・    ・ B列で任意の日付を検索し該当する値があれば、その行(A~D…列)を別シートにコピーし抽出したいのです。 VBAを使ってやりたいのですがどうしたらよいでしょうか? よろしくお願いします。

  • エクセルで別シート同士の照合結果を抽出

    シート1(担当者アの案件): A列に会社名 B列に担当者名 シート2(担当者イの案件): A列に会社名 B列に担当者名 シート3(担当者未定の案件): A列に会社名 B列に担当者名 シート4 シート1とシート3を照合して、シート1に存在する場合、シート4に抽出 シート2とシート3を照合して、シート1に存在する場合、シート4に抽出 としたいのです。やり方を教えていただけますでしょうか。 ちなみに結果の抽出はシート4でなくてもどこでもいいのです。 お手数ですがよろしくお願いいたします。

  • EXCEL 文字列条件抽出

    特定の文字列を検索条件として別シートに抽出する方法を御教授願います。 使用する関数はLEN,MID,LEFT,ISERR,もしくはワイルドカードなどを使用すればいいのかと考えておるのですがいまいちやりたいような数式を組めず悩んでおります。 やりたいことを言葉で表現するならば以下のような感じとなります。 「sheet1のF列に<107>という文字が含まれていた場合」 ・顧客別シートのD列に顧客ごとに分けて抽出 ・含まれていない場合、抽出しない と、単純なことなのです。が、制約がある為にうまくいきません。 制約は以下となります。 ・検索対象の文字列が以下のように決まった形ではない。 (1)A-BB-107○#----- (2)A-BB-107○#----- (3)ABB107○C #----- (4)ュウリABB-107○#----- (5)ュウリABB107○#----- (6)BB-107○C-D9#-----  など、その他にも数種類存在。(○部分には違う数字が入ります) ・上記でも分かるように<107>が始まる文字列の位置が決まっていない。 という具合です。 操作しているブック構成は下記のとおりです。 ・sheet1・・・参照用シート 4行目 /D列・・・顧客No / E列・・・顧客名 / C列・・・製品仕様 (A列,B列,G~AD列まで使用中) 5行目 / 1 / A / A-BB-107○#----- 6行目 / 2 / B / ュウリABB-107○#----- 7行目 / 1 / A / BB-107○C-D9#----- 8行目 / 3 / C / A-BB-107○#----- 9行目 / 3 / C / BB-107○C-D9#-----  10行目 / 4 / D / A-BB-107○#----- (会社のサーバーで管理している情報がそのままエクセルに打ち出されたシート。 情報量として約1000行ほど) ・sheet2,3,4,5(開始行,項目列は同じ位置)・・・特定の顧客別ごとに分け、特定の製品仕様だけを抽出したシート(参照用から引用)。 4行目/ B列・・・顧客No / C列・・・顧客名 / D列・・・製品仕様 5行目 / / A-BB-107○#----- 6行目 / / ュウリABB-107○#----- 7行目 1 / A / BB-1234C-D9#----- 8行目 / / A-BB-1115#----- 9行目 / / BB-107○C-D9#-----  10行目 / / A-BB-3498○#----- 特定の顧客NoをB列(一つのセルになってます。C列も同様一つのセルになってます)に入力すると、製品仕様すべてを抽出するように作成したシート。このシート内のG列から新たに表を作成し<107>の文字列が含む製品仕様を抽出しようと考えております。 出来れば、このような一度段階を踏んでから特定の仕様を抽出するのではなく各シートに対象となる顧客Noを入力すると特定の仕様が一回で抽出できるようなシートを作成したいのですが、関数初心者の為、うまく組めずこのような形となりました。(現在、参照用シートに作業列を作り対応。作業列ばかりが増えて正直困っているのも確かなのです) 【御教授頂きたいこと】 ・<107>の文字列を条件として別表に抽出する関数の数式 です。 また、出来ればでいいのですが、 ・顧客Noを入力すると特定の仕様が一回で別表に抽出できるような方法が御座いましたら、そちらも合わせてお願いしたいと思っております。 長々と書き綴り、大変申し訳御座いませんが、宜しくお願い致します。

  • エクセルで複数の条件範囲に合う行を別シートに抽出

    エクセルの関数で複数の条件範囲に合う行だけをを別シートに抽出したいのですが、 どうしても方法が分かりません。 誰か教えて頂けないでしょうか? 検索は範囲です。 宿泊日○○○○○○○○~○○○○○○○○(例20111110~20240204) 人数 ○人~○人 (○の中に数字が入ります) 西暦日付と人数が両方一致している行を別シートに抽出したいです。 バージョンは2007.2010両方とも問題ないです。 Sheet1    A     BCDEFGHIJKLMN   O 1 宿泊日                 人数 2 20100223               20 3 20110103               5 4 20111118               9 5 20120505               13 6 20121010               7 8 20120224               32 9 20121121               28 Sheet2    A      B    C   D    E   FGHIGKLMN    O 1 検索 2 宿泊日 20110101 ~ 20121111 3 人数     8    ~   30     人 4 5 宿泊日                                  人数 6 20111118                                   9 7 20120505                                  13 Sheet1、A列の宿泊日とO列の人数の範囲が一致するものを、 Sheet2の検索から、行ごと抽出(複数)し、Sheet2に反映する関数を教えて頂けないですか? いろいろ検索して探しましたが、複数抽出する方法がわかりませんでした。 よろしくお願いいたします。

  • エクセルで抽出した不特定数のデータを行数の決まった別シートに取り込む方法を教えてください

    エクセルでマクロを作り始めた初心者です。 Sheet1に、氏名、住所、TEL、会社名、担当者、金額・・・と続くデータが6000レコードほどあります。(レコードは随時増えていきます) Sheet2では、担当者名を条件にSheet1から必要な列(上記に記載したもの5つ)のみを抽出するマクロでデータを取り出すようになっています。 抽出したデータをsheet3のフォーマットに氏名、住所、金額の列だけ入れるのですが、入れられる行が20行と決まっており、最後の行には、合計欄が入るようになっています。 不特定数のレコードを20行ごとにページを区切って印刷するにはどうしたらよいでしょうか。ご教示お願いします。

  • 売上表エクセルから優良顧客を抽出する関数(画像有)

    お世話になります。 過去の売上表から優良顧客を抽出したいのですが 関数を組むことで実現可能であれば方法を教えて下さい。 ・売上表はエクセル(excel2007)です。 ・月ごとに1ファイル用意しています。 ・ファイル内は日ごとに1シート用意しています。  (2シート目が各月1日です。) ・シート内のレイアウトは以下です。  【行】  1行目:タイトル  2行目:列タイトルを表記  3行目以降:売れた商品ごとに1行ずつ表記  ※一人の客が複数着買った場合には服は1行ずつですが   列によっては複数行が統合されています。  【列】  A~F列:色々  G列:売れた商品名  H列:定価  I列:売値  J列:客単価    ※一人の客が複数着買った場合には服はJ列は複数行統合されます。  K列:総売上    ※行は統合されませんが服数着買った場合は最下行にのみセットされます。    ※客単位ではなくその時点での1日の総売上です。  M列:顧客名    ※一人の客が複数着買った場合には服はM列は複数行統合されます。 となります。 この状況化で優良顧客を抽出したいです。 どのように抽出したいか、は以下です。 ■各ファイル毎に最初のページのT列より右に検索結果を表示する ■一回で3万円以上購入した優良顧客を抽出する ■顧客名、購入金額を表示する ■購入日付(=シート名)を表示する 今回の例であれば 山本アローナさん、紫藤フトコロンソさん、新藤ブスケッツさんが 抽出されて欲しいです。 関数に明るくないのでそもそも実現不可能なのかどうかがわかっていません。 もしエクセルでやるのがナンセンスで秀丸のGREP機能でこういう検索の 指定方法がある、などの事があればそういったご回答でも大歓迎です。 (GREPでは検索文字指定はできても3万円以上という範囲指定は 自分ではわかりませんでした。) よろしくお願いいたします。

専門家に質問してみよう