AutoFilterメソッドとは
AutoFilterメソッドは、Excelのシートにオートフィルタを適用したり、解除したりするためのメソッドです。これを使うことで、特定の条件に基づいてデータを絞り込むことができます。
エクセルのマクロを使わなくても 下記のようにフィルター機能を使うことは可能ですが VBAでフィルタ機能を使えば データ抽出を自動化できます
☆下のような表があるとき、”商品A”だけを抽出する
Sub フィルター例1()
Range("A1").AutoFilter 2, "商品A"
End Sub
次のコードでも同じ処理ができます
Sub FilterExample1()
' テーブルの範囲を指定
Dim rng As Range
Set rng = Range("A1:E6")
' 商品名が「商品A」の行だけを表示
rng.AutoFilter Field:=2, Criteria1:="商品A"
End Sub
★出力結果
フィルターを解除するコードも書いておきますね
Sub ClearFilter()
' テーブルの範囲を指定
Dim rng As Range
Set rng = Range("A1:E6")
' フィルターを解除
rng.AutoFilter
End Sub
応用例 ① 商品Aの行の色を変更する
☆同じエクセルの表を使って フィルターを使って商品Aの行だけを水色に変更し、そのあとでそのフィルターを解除するコードです
Sub FilterAndColorExample()
' テーブルの範囲を指定
Dim rng As Range
Set rng = Range("A1:E6")
' 商品名が「商品A」の行だけを表示
rng.AutoFilter Field:=2, Criteria1:="商品A"
' 商品Aの行だけに水色の色を付ける
Dim cell As Range
For Each cell In rng.SpecialCells(xlCellTypeVisible).Rows
If cell.Cells(1, 2).Value = "商品A" Then
cell.Interior.Color = RGB(173, 216, 230) ' 水色
End If
Next cell
' フィルターを解除
rng.AutoFilter
End Sub
★出力結果
応用例 ② 異なる文字をみつける
☆下記のようにたくさんの「犬」の文字の中から1つだけ「犬」ではないものを見つけるようなこともVBAを使えば すぐに出来てしまいます
エクセルのシート内で「犬」ではないセルを見つけて、そのセルを赤色でハイライトするものです
Sub 間違い探し()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' フィルターを適用(1行目はタイトルとして除外)
ws.Range("A2:E6").AutoFilter Field:=4, Criteria1:="<>犬"
' フィルターされたセルをハイライト
Dim cell As Range
For Each cell In ws.Range("A2:E6").SpecialCells(xlCellTypeVisible)
If cell.Value <> "犬" Then
cell.Interior.Color = RGB(255, 0, 0) ' 赤色でハイライト
End If
Next cell
' フィルターを解除
ws.AutoFilterMode = False
End Sub
★出力結果
まとめ
AutoFilterメソッドの基本的な使い方と、具体的な応用例について説明しました。
AutoFilterメソッドは 膨大なデータを扱う際にも データ分析などを効率的に行うのに役にたつと思います
コメント