表形式のデータセットにおいて特定の条件に基づいてデータを表示・非表示にするための強力なツールです。VBA(Visual Basic for Applications)を用いることで、このフィルター機能を自動化し、複数の条件を組み合わせを自動化することができます。
基本的なフィルターの適用方法
【VBAで単一の条件を用いたフィルターの基本的な適用方法】
Sub BasicFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.AutoFilterMode = False ' 既存のフィルターをクリア
.Range("A1:D100").AutoFilter Field:=1, Criteria1:="条件"
End With
End Sub
【解説】
Range("A1:D100").AutoFilter Field:=1, Criteria1:="条件"
・「Range("A1:D100").AutoFilter」によってA1セルからD100 セルまでをフィルター設定します。
・「Field:=1, Criteria1:="条件"」によってA列に「条件」でフィルタリングします。
複数条件のフィルターの方法
複数条件を適用するには、Criteria1、Operator、およびCriteria2パラメーターを使用します。Operatorパラメーターには、xlAndやxlOrなど、条件の組み合わせ方を指定します。
Sub MultipleCriteriaFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.AutoFilterMode = False ' 既存のフィルターをクリア
.Range("A1:D100").AutoFilter Field:=1, Criteria1:="条件1", Operator:=xlor, Criteria2:="条件2"
End With
End Sub
【解説】
Criteria1:="条件1", Operator:=xlAnd, Criteria2:="条件2"
・「条件1」または「条件2」の値が完全一致したセルのみをフィルタリングすることになります。
複数の列に変数の値でフィルターする方法
A列にAataiまたはA2atai、B列にBatai、C列にCataiという条件を適用してデータをフィルタリングします。
Sub CustomFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' 操作対象のシート名に適宜変更してください
' フィルタが既に適用されている場合は解除
If ws.AutoFilterMode Then ws.AutoFilterMode = False
' フィルターを適用する範囲を指定
ws.Range("A1:D1").AutoFilter
ws.Range("A1:D1").AutoFilter Field:=1, Criteria1:="=" & Aatai, Operator:=xlOr, Criteria2:="=" & A2atai
ws.Range("A1:D1").AutoFilter Field:=2, Criteria1:="=" & Batai
ws.Range("A1:D1").AutoFilter Field:=3, Criteria1:="=" & Catai
End Sub
【解説】
・A列にAataiとA2atai、B列にBatai、C列にCataiをフィルタリング条件として設定する。
・ VBAのAutoFilterではOR条件は直接サポートされていないため、複数の条件を設定する際には工夫が必要です。
・上記のAatai, A2atai, Batai, Cataiは変数として事前に値が設定されている必要があります。例: Aatai = "条件1", A2atai = "条件2", など