• 締切済み

エクセルで複数シートから、検索して抽出

はじめまして、右も左も分からない初心者です。 説明出来ないんですが、よろしくお願いします。 【ご質問内容】 エクセルは、XPを使用しています。 エクセルのVBAで、指定したキーワードを 含むデータを抽出したいと思っています。 【例】 Sheet1 A B C D E 1 番号 氏名  郵便番号  住所  メールアドレス 2 1   ○   △    大阪府   ○○ 3 2   △   ○    茨城県   ○○ Sheet2  A  B    C     D      E 1 氏名 番号 郵便番号  住所  メールアドレス 2 ○  1   △    福岡県   ○○ 3 △  3   ○    茨城県   ○○ と各シートに、列がそれぞれバラバラになっています。 茨城県を検索すると、新しいシートに、 Sheet3  A  B    C     D      E 1 氏名 番号 郵便番号  住所  メールアドレス 2 2   △   ○    茨城県   ○○ 3  A  B    C     D      E 4 氏名 番号 郵便番号  住所  メールアドレス 5 △  3   ○    茨城県   ○○ という風に、抽出したいと思っています。 どうしたらいいでしょうか?? よろしくお願いします。

  • kdfc
  • お礼率60% (6/10)

みんなの回答

回答No.2

「右も左もわからない」と書いてあったのでわかりきった方法をお話ししてしまいました。 Sheet3以降は cells.clear 以降の処理をそれぞれのシートでくりかえせばいいのではないでしょうか? たくさんのシートがあるなら For Each ws In ActiveWorkbook.Worksheets などで取得できます。 また、貼り付け先の一番下のセルは Range("A3").CurrentRegion.Rows.Count などで使用領域の一番下の行数を取得できるはずです。 Destinationの行数をそれで指定すれば2シート目以降は使用領域の下に貼り付けられるはずです。 結構VBAもお使いになれるようですが、もっと難しいことで悩まれているのでしょうか?

kdfc
質問者

お礼

pacific231様 ご回答ありがとうございます。 あれから、ずっと悩んで、やっと解決しました。 また、何かあれば、よろしくお願いします。

回答No.1

回答がつかないようでコメントさせていただきます。 抽出結果を新しいシートに…とあるようですが、VBAを書くのが面倒なので(もちろんVBAでもできますよ)、単純に並べ替えとオートフィルターを使って手作業をしてみてはいかがでしょうか? 上に書かれている例を元に述べさせていただきます。 手順1 Sheet1のA列を切り取り、氏名と郵便番号の間に挿入 これでSheet1がSheet3と同じ並びになります。 手順2 Sheet1の1行目を選択しデータ - フィルタ - オートフィルタを実行 住所列のプルダウンを茨城で選択 抽出結果を選択→コピー、シート3に貼り付け 同様にSheet2も繰り返す 時間的にはおっしゃっていただいている例なら2~3分の作業で済むと思います。 もっと複雑な構造をしているのならば補足してください。

kdfc
質問者

補足

回答、ありがとうございます。 オートフィルタなど、作業出来ますが、毎回同じ繰り返しだと、 面倒なので、VBAの方を作成して、簡単にしたいと思っています。 【補足説明】長文になりますので、スミマセン… Sheet1   a   b   c     d        e 1 番号 氏名 郵便番号  住所     メールアドレス  2 1  太郎  ○○  愛媛県       ○○ 3 2  三郎  △△  愛知県名古屋市   ▽▽ 4 3  一郎  □□  熊本県       □□ 5 4  次郎  ▽▽  愛知県名古屋市   ▽▽ 検索ボタンをクリックする。 「検索したい住所の一部を入力してください」というユーザーフォーム(?)が現れる。 入力欄に、「名古屋」(取り出したい住所)と入力して、【OK】ボタンをクリックする 指定した文字列を含む住所のデータを抽出し、Shttt2に、コピーされる。 上記の方法では、以下のVBAが出来ます。 *************************************************** Sub ParamOutputData() Dim strKeyword As String Dim strJouken As String strKeyword = InputBox("検索したい住所の一部を入力してください。") Do While strKeyword = "" strKeyword = InputBox("値が入力されていません。" & vbCrLf & _ "検索したい住所の一部を入力してください。") Loop strJouken = "*" & strKeyword & "*" Application.ScreenUpdating = False Sheets("Sheet2").Activate Cells.Clear With Sheets("Sheet1") .Range("A3").AutoFilter Field:=4, _ Criteria1:=strJouken .Range("A3").CurrentRegion.Copy _ Destination:=Sheets("Sheet2").Range("A3") .Range("A3").AutoFilter End With Sheets("Sheet2").Columns("A:F").AutoFit Application.ScreenUpdating = True End Sub ****************************************************** これと同じように、複数のシート内にあるデータを、取り出して、 「検索結果(シート)」にコピーしたいと思っています。 よろしくお願いします。

関連するQ&A

  • VBAにて、複数シートからデータを抽出

    エクセルVBAです。複数のシートからの集計、抽出の書き方について教えてください。 1つのファイルに50ほどのシートがあります。 各シートの列数やフォーマットは、同じですが行数は、異なります。 例 sheet1(シート名:集計):集計用   A    B    C       D     1 ※検索キーワードを入れるセルや 2   マクロを登録するボタン用として2行開けてある。 3 番号 氏名  郵便番号  住所  sheet2(シート名:STU)   A    B    C       D      1 番号 氏名  郵便番号  住所  2  1  AB   345    YZ 3  1  CD   678    QS sheet3(シート名:XYZ)   A    B    C       D      1 番号 氏名  郵便番号  住所  2  2  AB   345    YZ 3  2  CD   678    QS 4  3  CD   678    QZ 抽出前は、上記の様なファイルとなっております。 上記では、4列としてますが実際は、23列あります。 また、sheet3までですが、実際は、40~100シート位あります。 sheet1(シート名:集計):集計用   A    B    C       D     1     ※検索キーワード:氏名_CD としマクロを実行する  2       (↑例として氏名でフィルタリングしてますが他の指定項目でも実行したい、複数条件は、無)   3 番号 氏名  郵便番号  住所 4  1  CD   678    QS    (←sheet2(シート名:STU)の3列目) 5  2  CD   678    QS  (←sheet3(シート名:XYZ)の3列目) 6  3  CD   678    QZ  (←sheet3(シート名:XYZ)の4列目) ・  ・  CD    ・      ・ (←sheet4(シート名:・・・)の・列目) ・  ・  CD    ・      ・ (←sheet10(シート名:・・・)の・列目) ・ ・  CD    ・      ・ (←sheet27(シート名:・・・)の・列目) ・  ・  CD    ・      ・ (←sheet27(シート名:・・・)の・列目) ・ ・  CD    ・      ・ (←sheet30(シート名:・・・)の・列目) 上記の様にすべてのシートから氏名:CDでフィルタリングし集計シートに抽出したい。 よろしくお願いいたします。

  • エクセルで住所録を分類する方法は

    いつもお世話になっています。(エクセルは2002です)   A     B       C   D   E 1 郵便番号  住所      氏名  地区  備考 2 100   A県B市C町  C氏  E   G 3 100   A県B市D町  C氏  E   G 4 200   B県      D氏  F   H 上記のような表(シート1)があります。 シート2にA県、シート3にA県以外を郵便番号・住所・氏名・地区・備考を分けて、シート2の表をシート4にB市、シート5にB市以外に郵便番号・住所・氏名・地区・備考を分けて、シート4の表をシート6にC町、シート7にC町以外に郵便番号・住所・氏名・地区・備考を分ける方法を教えてください。 うまく説明できませんがよろしくお願いします

  • エクセルで複数シートを検索して抽出するには

    いつも参考にさせていただいています。 過去の質問を見てもわからなかったので回答をお願いします。 顧客管理台帳を作成していますが、他のファイルの複数のシートを検索してデータの抽出をしたいのです。 顧客管理台帳というファイルのシートに顧客一覧があります。 A番号 B顧客名 C住所 D対応状況 進捗表というファイルにランクA、B、Cのシートがあります。 A番号 B顧客名 C住所 D内容 E進捗状況 AAAA  ○○××  ・・・       保留 PPPP  ××△△  ・・・       終了 シートごとに顧客名の重複はありません。 顧客名はランダムに並んでいます。 顧客管理台帳の顧客名を進捗表の各シートから検索して 対応状況に進捗状況を反映させたいのです。 進捗表の一覧を作るとVLOOKUP関数でできると思うのですが シート毎の管理をし、日々更新しているので 現状のままでできる方法はないでしょうか。 よろしくお願いいたします。

  • エクセル2007 データ抽出(関数)について

    教えてください。エクセルシートにて郵便番号と住所が重複しているデータを抽出したいのです。 例)ある顧客の情報として、シート1のA列に、1から10までの新規顧客の氏名、B列には生年月日が入力されています。C列,D列は空白で、E列には全ての顧客(新規顧客を含みます)の氏名、F列には生年月日、G列には郵便番号、H列には住所が入力されています。このふたつの情報の中から、新規顧客データと全ての顧客データの氏名、生年月日が重複している顧客のみ、C列にその郵便番号、D列に住所を表示させたいのです。 OSはXP エクセル2007です。 困っています。よろしくお願いします。

  • エクセルで別シートに抽出

    エクセルで同じBOOKに以下のようなシートがあります。 【sheet1】 A B C D E… 5 7 8 9 3… 3 3 6 5 6… 【sheet2】 A B C D E… 2 7 8 5 3… 6 3 9 5 7… 【sheet3】 A B C D E… 1 8 5 7 6… 1 3 8 5 7… こんなシートがsheet1~sheet50まであり、これを 【sheet51】に A A A  5 2 1 3 6 1 【sheet52】に B B B 7 7 8 3 3 3 のようになるだけ簡単に抽出したいのですが… どなたか、よろしくお願いします。

  • エクセル 2つのシートの抽出

    シート1 コード|地域|住所 0001|青森A|青森県青森市○丁目○-○ 0002|青森D|青森県青森市×丁目×-× 0003|岩手B|岩手県岩手市○丁目○-○ 0004|岩手D|岩手県岩手市×丁目×-×         シート2   コード|(住所を抽出したい) 0003| 0001|  シート1は一覧表で、シート2は今回の対象だとします。 シート2のコードとシート1のコードが一致したら、 シート2のB列にシート1の住所を抽出したいのですが、どのような方法があるのでしょうか?教えて下さい。

  • エクセルVBAで複数の条件を満たす検索方法

    エクセルのVBAを使ってデータ検索を行うプログラムを作っています "Sheet2"は下記のように、A列に生年月日、B列に住所、C列に電話番号、D列にメールアドレスが入力されています        【Sheet2】   生年月日  住所    電話番号  メールアドレス     A      B       C        D 1 1999/9/10 東京都○○ 11-111-1111 aa@goo.co.jp 2 2003/2/26 大阪府○○ 22-222-2222 bb@goo.co.jp 3 1985/6/22 福岡県○○ 33-333-3333 cc@goo.co.jp 4 1995/4/11 愛知県○○ 44-444-4444 dd@goo.co.jp "Sheet1"のA1に生年月日、A2に住所、A3に電話番号を入力し、"Sheet2"のデータと照合して、3つの値が合致した行のD列のメールアドレスを"Sheet1"のB1に返したいと思います 上記の表だと、"Sheet1"のA1に1985/6/22、A2に福岡県○○、A3に33-333-3333と入力されている場合、B1にcc@goo.co.jpの値を返すようにしたいのです。 findを使って生年月日、住所、電話番号を検索し、行番号を取得して、3つの行番号が同じならその行番号のD列の値を返すというような方法で考えていたのですが、エラーが回避できずに困っています。 生年月日が同じ人がいたり、夫婦や親子などは住所と電話番号が同じといった場合があり、上手く検索できません。  エラー回避の方法、もしくは他のやり方でも構いませんので どなたかご教授願えないでしょうか? よろしくお願いします。

  • エクセルの文字列分解

    住所録なのですが、A列に文字列で"(1)氏名(2)住所(3)電話番号(4)メールアドレス"とあります。これをB~E列に分解したいです。A列の共通の文字は(1)(2)(3)(4)です。 現状 A (1)氏名(2)住所(3)電話番号(4)メールアドレス 変更後 B     C     D       E 氏名   住所   電話番号   メールアドレス よろしくお願いします。

  • Excelで、複数条件で抽出した複数データを別シートに出力したい

    Excelで、複数条件で抽出した複数データを別シートに出力したい sheet1のデータから、sheet2に地区と班を指定してデータを抽出したいのです。 関数でなんとか出来るでしょうか? sheet1 A B C D 地区 班 番 氏名 1 1 1 岩井 雅功 1 1 2 湯浅 将也 1 1 3 滝沢 由宇 1 2 1 根本 さやか 1 2 2 近藤 守 1 2 3 永島 ひろみ 1 2 4 小峰 遥 sheet2 A B C D   E  F 区 班 番 氏名 区 班 1 1 1 岩井 雅功 1 1 1 1 2 湯浅 将也 1 1 3 滝沢 由宇

  • エクセルで、条件にあう複数の行を別のシートに抽出する

    《どなたか、お教え下さい》   エクセルで、条件にあう複数の行を別のシートに抽出してまとめる。 「sheet1」の下記の基本データを「sheet2」に「得意先」ごと「日付」の早い順にまとめたいのでが。関数を使ってできないものか、どなたかお教え下さい。「マクロ」や「Access」は使用したことがないので、関数を使ってやりたいと思いますが、できるものでしょうか。よろしくお願いします。 sheet1 番号 得意先 日付 商品名 商品詳細 金額 備考 1   A 2   B 2   B 4   D 5   E 6   F 2   B 3   C 5   E   A    B  番号  得意先   1   A      2   B   得意先名は、番号を入力することで表示されるように   3   C   関数「VLOOKUP」を使って表示させるようにしていま   4   D   す。    5   E   6   F  

専門家に質問してみよう