【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
この記事を書いた人
- ソフトデザイン工房|日々の業務にちょうどいい自動化を
- ■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成にチャレンジ。