ワイルドカード文字を使った複数条件での抽出をしたいが?

Question 103.3 Excel VBA Borad (掲示板)より Previous Next
いつも閲覧させて頂いております。ありがとうございます。
それでこういう事ができるのかどうかわかりませんが、ヤフーやgoogleの検索窓のように EXCEL上で、
1行目がタイトル行で、2行目以降にデーターが入っている表があり、
例: D列(商品名)でInputbox(ダイアログでも)で、検索語を入力して下さいとして、
検索語を たまご or メロン or ごはん みたいに、そのどれかが含まれる商品名の行全体をすべて抽出するような
マクロを高速でつくりたいのですが、
Sub 商品名検索()
    商品名 = InputBox("商品名を入力してください")
    商品名 = StrConv(商品名, vbNarrow)
    With ActiveSheet
        If .AutoFilterMode Then     'オートフィルタモードがオンなら
            .AutoFilterMode = False 'リセットする
        End If
        .Range("A1:G1").AutoFilter  'オートフィルタモードをセット
        .Range("A1:G1").AutoFilter Field:=4, Criteria1:="=*" & 商品名 & "*", _
            Operator:=xlOr, Criteria2:="=*" & 商品名 & "*"
                                    '2つ目のフィルターに検索文字
        .Range("A1:G1").AutoFilter Field:=4, Criteria1:="=*" & 商品名 & "*", _
            Operator:=xlAnd, Criteria2:="=*" & 商品名 & "*"
                                    '2つ目のフィルターに検索文字
    End With
End Sub
上記のマクロですと、「たまご*メロン*ごはん」と1つのセルの中で、「全ての検索語」が含まれているものが抽出され
ますが、「たまご or メロン or ごはん」と「たまご」か「メロン」か「ごはん」という文字が含まれるデーターを一度に
抽出するマクロを作成するにはどうしたら、よいのか、色々調べましたが、そのようなwebはなく、
でも、似たようなものがあるのですが、それを参考につくってみても上手くいきません。
もし、可能なら、どのような方法があるのか教えていただけませんでしょうか?
Answer   2010.11.27 永井善王
いつも見ていただいているとのこと、ありがとうございます。
只今、次に出版する本の執筆中で時間が思うように取れませんので、結論だけになります。ご了承ください。

アドバンスフィルターを利用すれば上手くいくと思います。下の図の左側はデーターが入っているシートとします。右側はアドバンスフィルターで検索条件として使うシートです。

アドバンスフィルターは、Excel2003以前の場合、[データ]メニュー⇒[フィルタ]→[フィルタ オブションの設定]とクリックして使います。
マクロ記録を開始して、このように操作した結果、下記のマクロができました。
Sub Macro1()
    Worksheets("Sheet1").Activate
    Range("A1:G12").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Sheets("Sheet2").Range("A1:G4"), Unique:=False
End Sub
これを参考に取り組んでみて、上手くいったら、掲示板に書き込んでおいてください。

 

Excel VBA Macro