【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省略可フィルターの条件を組み合わせる場合に使用(xlAndxlOr など)
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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です