【VBA関係】VBAでExcelテーブルデータをオートフィルタで絞り込む方法|ポテの学習メモ #008
アフィリエイト広告を利用しています。

次のテーブルを操作する。

商品カテゴリーを「食品」で絞りこむ。コードは次の通り。なお、テーブルのインデックスは1(ListObject(1)
)であることが前提。
Sub ApplyCategoryFilter()
' 変数宣言
Dim ws As Worksheet
Dim tbl As ListObject
Dim rng As Range
' ワークシートを取得
Set ws = ThisWorkbook.Worksheets(1)
' テーブル(ListObject)を取得
Set tbl = ws.ListObjects(1)
' 商品カテゴリーを食品で絞り込み
tbl.Range.AutoFilter 2, "食品"
End Sub

意図通りに絞り込まれた。
なお、Autofilter
メソッドの引数の意味は下表の通り。
引数 | 必須/省略可 | 説明 |
---|---|---|
Field | 必須 | フィルターを適用する列番号(1 から始まる) |
Criteria1 | 必須 | フィルター条件(数値、文字列、ワイルドカード "*" など) |
Operator | 省略可 | フィルターの条件を組み合わせる場合に使用(xlAnd 、xlOr など) |
Criteria2 | 省略可 | Operator を使用する場合の第2条件 |
VisibleDropDown | 省略可 | フィルターボタンを表示するかどうか(True または False ) |
tbl.Range.AutoFilter 2, "食品"
のところは、tbl.DataBodyRange.AutoFilter 2, "食品"
にしても結果は同じ。
Sub ApplyCategoryFilter2()
' 変数宣言
Dim ws As Worksheet
Dim tbl As ListObject
Dim rng As Range
' ワークシートを取得
Set ws = ThisWorkbook.Worksheets(1)
' テーブル(ListObject)を取得
Set tbl = ws.ListObjects(1)
' 商品カテゴリーを食品で絞り込み
tbl.DataBodyRange.AutoFilter 2, "食品"
End Sub
設定したオートフィルターを解除するコードは次の通り。
Sub CrearAutoFilter()
' 変数宣言
Dim ws As Worksheet
Dim tbl As ListObject
Dim rng As Range
' ワークシートを取得
Set ws = ThisWorkbook.Worksheets(1)
' テーブル(ListObject)を取得
Set tbl = ws.ListObjects(1)
' 商品カテゴリーのオートフィルターを解除
tbl.DataBodyRange.AutoFilter 2
End Sub
全オートフィルターを解除するコードは次の通り。.AutoFilter.ShowAllData
を使う。
Sub ShowAllData()
' 変数宣言
Dim ws As Worksheet
Dim tbl As ListObject
Dim rng As Range
' ワークシートを取得
Set ws = ThisWorkbook.Worksheets(1)
' テーブル(ListObject)を取得
Set tbl = ws.ListObjects(1)
' 全フィルターを解除
tbl.AutoFilter.ShowAllData
End Sub