• 締切済み

複数のシートから検索抽出

検索値シート(4)【B】123で行い、検索範囲をシート(1)、(2)、(3)のうちの一つの【B】列でヒットした【A】列ABCをシート(4)の【C】に検索結果を表示させたいのですがどのようにしたらよいでしょうか。 また、シート(4)【B】列1000以上全て検索値としたいのですが、どうかよろしくお願いします。 シート(1)~(3) 【A】  【B】  【C】 ABC ....123 DEF ...456 GHI ....789 JKL ....795 MNO ..816 シート(4) 【A】 【B】 【C】    .. 123 ... ??? ......... 456 ......... 789 方法が分からず困っています。 お手数ですが、どうかお教えください。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim ws As Worksheet Dim ws1 As Worksheet Dim r As Range Dim rr As Range Set ws1 = Worksheets("Sheet4") 'シート(4) For Each r In ws1.Range(ws1.Range("B1"), ws1.Cells(Rows.Count, 2).End(xlUp)) For Each ws In Worksheets If ws.Name <> ws1.Name Then Set rr = ws.Range("B:B").Find(What:=r.Value, After:=ws.Cells(Rows.Count, 2), LookIn:=xlValues, LookAt:=xlWhole) If Not rr Is Nothing Then r.Offset(, 1).Value = rr.Offset(, -1).Value Set rr = Nothing Exit For End If End If Next Next Set ws1 = Nothing End Sub こうゆう感じのことでしょうか?

mikireo
質問者

お礼

早急な回答ありがとうございます。

関連するQ&A

  • VLOOKUPのような検索で複数ヒットしたら全て抽出したい

    VLOOKUPで検索すると検索値シート(2)【B】123で行い、検索範囲をシート(1)【B】列、ヒットした左列ABCをシート(2)の【C】に表示するが一般的てきですが、検索範囲シート(1)【B】列で1000種類ある中で123が3個、456が4個その後も重複がつづき、更にヒットした左列が全て違っていたらどのようにして、シート(2)【C】に検索結果全て表示させたらよいでしょうか。 また、シート(2)【B】列1000以上全て検索値としたいのですが、どうかよろしくお願いします。 シート(1) 【A】  【B】  【C】 ABC ....123 DEF ...456 GHI ....123 JKL ....456 MNO ..789 シート(2) 【A】 【B】 【C】    .. 123 ... ??? ......... 456 ......... 789 方法が分からず困っています。 お手数ですが、どうかお教えください。

  • データをブロックごとに並べ替えるスクリプト

    データをブロックごとに移動して並べ替えたいのですが、 うまくいくスクリプトが書けず困っています。 APR_A----- abc 1 def 2 APR_B----- abc 3 def 4 APR_C----- abc 5 def 6 APR_A----- ghi 1 jkl 2 mno 3 APR_B----- ghi 4 jkl 5 mno 6 APR_C----- ghi 7 jkl 8 mno 9 のようなフォーマットのデータがあります。 これを以下のようにフォーマットを変えたいのですが、 awkを使ってどのようにスクリプトを書いたらよいでしょうか。 元データの中で、区切りの行は常にAPR_で始まっています。 APR_で始まる行に来たら次の列に移って2列目のみprint というのを繰り返し、APR_Aに戻ってきたら、 1列目(abc,defなど)、2列目ともprintして同様に繰り返す。 各ブロックの行数はまちまちです。(最初のブロックのように2行のブロックもあれば2番目のブロックのように3行のもあります) rowtitle APR_A APR_B APR_C abc 1 3 5 def 2 4 6 ghi 1 4 7 jkl 2 5 8 mno 3 6 9 分かりにくい文章ですが、理解していただけることを願っています。 よろしくお願いします。

  • エクセル セルの並べ換え方法について教えて下さい

    縦 A列とB列に入力してある内容を縦一列にまとめて上下二段にする方法、 どなたか教えて下さい! A列   B列 abc def ghi jkl    mno pqr これを A列 abc def ghi jkl mno pqr という様にしたいのです。   

  • 秀丸の検索・置換の正規表現の最短一致の挙動が変です

    秀丸の検索または置換の正規表現の 最短一致での挙動ですが、 /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz の先頭にカーソルを置いた状態で、 (質問1) 正規表現のチェックボックスをチェックして /.*$ で検索すると /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (/abc/.*$とするとカーソルがある /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz ではなく次の行以降の /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます?) (質問2) 正規表現のチェックボックスをチェックして /.*?$ で検索すると最短一致となるため /uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (なお、/[^/]*$では/uvw.xyzが検索されます)

  • excelの重複データの削除方法。

    excel2003で重複する値を自動的に削除する方法を探しています。 現在、以下のような手順で作業をしています。     A   B   C 1 ○○○ 100 ABC 2 ▼▼▼ 200 DEF 3 ◇◇◇ 300 GHI 4 ■■■ 400 JKL 5 △△△ 500 MNO ↑の元データに      A   B   C 1 ○○● 100 ABC 2 ◇◆◇ 300 GHI ↑のデータを追加(貼り付け)して並び替えをすると      A   B   C 1 ○○○ 100 ABC 2 ○○● 100 ABC 3 ▼▼▼ 200 DEF 4 ◇◇◇ 300 GHI 5 ◇◆◇ 300 GHI 6 ■■■ 400 JKL 7 △△△ 500 MNO というデータが出来るとします。 「C列の値を基準」として、重複している箇所を検出・削除し (上の例で言えば、1・2・4・5の行。)      A   B   C 1 ▼▼▼ 200 DEF 2 ■■■ 400 JKL 3 △△△ 500 MNO というデータにしたいと考えております。 重複した値のどちらか一方を残す、という方法ではなく、 重複した値の全てを削除する、という方法が解りません。 手作業で1つ1つ削除していけばいいのですが、本物のデータは何千件とあるので 手作業では時間が掛かりすぎてしまいますので…。なにかよい方法はないでしょうか? 簡単な方法であれば大変助かりますが、マクロなどを使用する方法でもかまいませんのでご教授下さい。 よろしくお願い致します。

  • エクセルで,スペースのある文字列を列ごとに分けるには?

    例えば abc def ghi jkl mno pqr という文章があったとします。 それを |abc|def|ghi| ------------- |jkl|mno|pqr| みたく,スペースのあるところで区切るにはどのようにすればよいでしょうか。教えてください。

  • 複数種類の括弧でくくられてない文字をマッチングさせたい

    Perlの正規表現で質問です。 複数種類の括弧、たとえば()、【】、[]などで囲まれていない文字をマッチングさせたいのです。 括弧は1行に複数ある可能性があり、ない場合もあります。 (abc)【def】ghi【jkl】 だとghiの部分。 【abc】【def】(ghi)jkl(mno) だとjklです。 頭に必ず括弧が来たり、括弧が一回だけなら括弧閉じるの種類をor検索ではじけるのですが、何回くるかわからないのでどうしたらいいか困っています。 方法がありましたら教えてください。

    • ベストアンサー
    • Perl
  • EXCELで日付ごとに行の色分けを行うには?

    下記のような表でB列に入力してある日付をもとに行の色分けをしたいと考えています。 条件書式やVBAを試してみましたがどのようにしたらよいかわかりません。 どなたか教えていただけませんでしょうか。宜しく御願い致します。 A |   B    |   C ABC | 20120903 | 1 DEF | 20120903 | 3 GHI | 20120904 | 7 JKL | 20120905 | 3 MNO | 20120905 | 5 OPQ | 20120910 | 6

  • 複数のシートから抽出

    検索値シート1【B】111で行い、検索範囲をシート2~4の【B】列全てを検索して一個だけ検索できたら【A】列AAAをシート1の【C】に検索結果を表示させます。シート2~4全て内容は違います。 シート1【B】列500以上全て検索値とします。関数でやり方を探しております。お分かりの方がいらっしゃれば教えてください。 シート2~4 【A】  【B】  AAA ・ 111 BBB ・ 222 CCC ・ 333 DDD ・ 444 EEE ・ 555 シート1 【A】 【B】 【C】      111        222      333

  • CSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。

    CSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。 例えば  abc,def,ghi,jkl  mno,pqr,stu,vwx     ↓  abc,"def",ghi,"jkl"  mno,"pqr",stu,"vwx" というように、2番目と4番目の列の文字列をダブルクォーテーションで囲む、といった具合にです。 調べてみるとVBAを使用する方法はあるようですが、EXCELやその他のフリーソフト等を使用して処理する方法はありませんでしょうか。 よろしくお願いいたします。