入力語句でフィルターをかけるExcelマクロ
例として、都道府県名をインクリメンタルサーチできるようにしてみます。
手順
- フィルタ対象のデータとして、都道府県名を入力します。
- 検索語句の入力セルに「SearchPhrase」という名前を定義します。
- シート名を右クリック→[コードの表示]を選択します。
- 以下の関数を作成します。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("SearchPhrase").Address Then If Target.Text = "" Then 'フィルタクリア ActiveSheet.Range("$B$3:$B$50").AutoFilter Field:=1 Else '入力されたテキストを含む値をフィルタ ActiveSheet.Range("$B$3:$B$50").AutoFilter Field:=1, _ Criteria1:="*" & Target.Text & "*", _ Operator:=xlFilterValues End If End If End Sub
結果
「SearchPhrase」の名前のセルが変更された場合、
入力されたテキストを含む値でフィルタをかけます。
「SearchPhrase」の名前のセルの値がクリアされた場合、
フィルタをクリアします。