エクセルのマクロについてです。 画像のようなことをしたいと考えています。
エクセルのマクロについてです。 画像のようなことをしたいと考えています。 検索ワード1を検索して、下に結果を表示させることはできたのですが、追加で検索ワード2を設けて、「検索ワード1とワード2を両方含む」ものを表示させるように変更したいと考えています。 現在のマクロコードのの検索に当たる部分は以下の通りです。 With sh1 kword = .Range("A2").Value If .Range("A6").Value <> "" Then .Range("A6:M" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents End If End With なお、検索はI列で行っています。 この部分を変更することで検索ワードを追加できるのであれば、追加すべきコードを教えていただきたく、それともコード全体の組み換えが必要であれば、補足にて現在のコードをお示しします。 どうぞよろしくお願い致します。
Excel・63閲覧・100
ベストアンサー
[最初の回答] 検索ワード1と2で、合計6個のセルを使っていますが、全部で6個検索ワードを入力するのですか? [貴殿の返信] 画像では、セルの結合をしているため、そう見えていますが、A2とE2の2か所に検索ワード入れる想定です。 Sub test() Dim sh1 As Worksheet, sh2 As Worksheet Dim kword1 As Variant, kword2 As Variant Dim r As Long Dim frng As Range Dim fadd As String Application.ScreenUpdating = False Set sh1 = Worksheets("検索用") With sh1 kword1 = .Range("A2").Value kword2 = .Range("E2").Value If .Range("A6").Value <> "" Then .Range("A6:M" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents End If End With r = 5 For Each sh2 In Worksheets With sh2 If .Name <> "検索用" Then With .Range("I1:I" & .Cells(Rows.Count, 9).End(xlUp).Row) Set frng = .Find(What:=kword1, LookIn:=xlValues, LookAt:=xlPart) If Not frng Is Nothing Then fadd = frng.Address Do r = r + 1 sh1.Range("A" & r).Resize(, 13).Value = frng.Offset(, -8).Resize(, 13).Value Set frng = .FindNext(frng) If frng Is Nothing Then Exit Do Loop Until frng.Address = fadd End If Set frng = .Find(What:=kword2, LookIn:=xlValues, LookAt:=xlPart) If Not frng Is Nothing Then fadd = frng.Address Do r = r + 1 sh1.Range("A" & r).Resize(, 13).Value = frng.Offset(, -8).Resize(, 13).Value Set frng = .FindNext(frng) If frng Is Nothing Then Exit Do Loop Until frng.Address = fadd End If End With End If End With Next sh2 Application.ScreenUpdating = True End Sub
ありがとうございます。 確かにこれで2つもワードでの検索ができそうですが、「A2かつE2を含む」ではなく、「A2またはE2を含む」という検索条件になっているような結果が表示されました。「A2かつE2」としたいためご確認をお願いしたいです。
質問者からのお礼コメント
大変助かりました。 ありがとうございました。
お礼日時:7/3 9:14