- 締切済み
excelでの検索・抽出
excelの質問です。 現在データを1つのファイル、8つのシートに入力したものがあります。 この中に指定したワードがあるか検索し、その検索されたワードと同列にある数値を抽出したいと考えています。 ただし、検索するワードは入力されているものと多少異なるため類似となります。 イメージとしてはexcelにある検索みたいなものです。 この検索機能が同時に複数同時に選択でき、かつ同列のワードを出力したいのです。 イメージ 検索シートに ga123456 re552468 と入力 他のシートに 123456 abe-001 e552468 eet-025 があったとする 入力した横に 123456 abe-001 e552468 eet-025 と出力させたいのですが、可能ですか? 解りづらくて申し訳ないのですが、宜しくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
確認したいのですが、 >この検索機能が同時に複数同時に選択でき、かつ同列のワードを出力したいのです。 という事は、検索シートに例えば cdf7799xyz と入力した際には、 e が共通しているので、入力した横に A列(入力欄) B列(結果表示1) C列(結果表示2) cdf7799xyz 123456 abe-001 e552468 eet-025 と表示させたいという意味であると考えれば宜しいのでしょうか?
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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