• 締切済み

excelでの検索・抽出

excelの質問です。 現在データを1つのファイル、8つのシートに入力したものがあります。 この中に指定したワードがあるか検索し、その検索されたワードと同列にある数値を抽出したいと考えています。 ただし、検索するワードは入力されているものと多少異なるため類似となります。 イメージとしてはexcelにある検索みたいなものです。 この検索機能が同時に複数同時に選択でき、かつ同列のワードを出力したいのです。 イメージ 検索シートに ga123456 re552468  と入力 他のシートに  123456  abe-001 e552468  eet-025  があったとする 入力した横に  123456 abe-001 e552468 eet-025 と出力させたいのですが、可能ですか? 解りづらくて申し訳ないのですが、宜しくお願いします

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 確認したいのですが、 >この検索機能が同時に複数同時に選択でき、かつ同列のワードを出力したいのです。 という事は、検索シートに例えば cdf7799xyz と入力した際には、 e が共通しているので、入力した横に A列(入力欄)  B列(結果表示1)  C列(結果表示2) cdf7799xyz   123456 abe-001   e552468 eet-025 と表示させたいという意味であると考えれば宜しいのでしょうか?

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

こんばんは! VBAになってしまいますが・・・ 実際のデータ配置が判らないので↓の画像のような感じだとしての一例です。 「検索シート」はSheet見出しの一番左側にあり、「他のシート」は2番目以降にあるとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, n As Long, k As Long, wS As Worksheet Set wS = Worksheets("検索シート") Application.ScreenUpdating = False For i = 2 To wS.Cells(Rows.Count, 1).End(xlUp).Row For k = 2 To Worksheets.Count For n = 2 To Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Row If InStr(wS.Cells(i, 1), Worksheets(k).Cells(n, 1)) > 0 Then Worksheets(k).Cells(n, 1).Resize(1, 2).Copy wS.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) End If Next n Next k Next i Application.ScreenUpdating = True MsgBox "処理完了" End Sub 'この行まで ※ 各SheetのA列データが「検索シート」のA列の文字列に「含まれる」場合に表示!としています。 ※ 勝手に各Sheetのレイアウトを考えていますので、 レイアウトが違うとご希望通りに表示になりません。m(_ _)m