オートフィルタで、Google検索みたいに、複数条件を部分一致でまとめて一括検索する。
1 機能
オートフィルタで、複数条件を部分一致でまとめて検索したい。たしかに、オートフィルタには検索窓があるが、OR検索できない。
なお、フィルタオプションを使えば、予め抽出条件を検索対象の表の外に入力してOR検索できる。
今回は、フィルタオプションではなく、オートフィルタの抽出結果として、複数条件をORで部分一致で表示できるようにする。
2 コード
以下は、「設定」という名前のシート上のA1セルを含む表にオートフィルタするケース。ボタンを作成し、このマクロを登録して使うのを想定。
Sub オートフィルタで複数条件を部分一致検索() Dim myAnswer As String myAnswer = Application.InputBox("複数入力するときは、スペースで区切ってください。", "検索ワード入力") 'キャンセルor文字入力なしの場合は終了 If myAnswer = "False" Or myAnswer = "" Then Exit Sub End If 'スペースを半角に統一 myAnswer = Replace(myAnswer, " ", " ") '半角スペースで分割して配列に格納 Dim searchTerms As Variant searchTerms = Split(myAnswer, " ") '部分一致検索できるように配列の要素の前後に*付加 Dim i As Long For i = LBound(searchTerms) To UBound(searchTerms) searchTerms(i) = "*" & searchTerms(i) & "*" Next 'オートフィルタで、or条件で検索実行 '(例)設定シートのA1セルを含むテーブルの2列目を検索 ThisWorkbook.Sheets("設定").Range("A1").AutoFilter 2, searchTerms, xlFilterValues End Sub