VBAで複数条件でのフィルタ処理を行う方法
VBAでは複数の条件でフィルタリングを行うためのさまざまな方法があります。以下にそのうちの1つの方法を示します。
- AutoFilterメソッドで絞り込みを行う
- Sub MultiConditionFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet1”) ‘ワークシート名を適宜変更With ws
‘最初の条件
.Range(“A1″).AutoFilter Field:=1, Criteria1:=”条件1”
‘2番目の条件
.Range(“A1″).AutoFilter Field:=2, Criteria1:=”条件2”
‘…
‘必要に応じて、さらに条件を追加
End With
End Sub - 上記のコード内のAutoFilterメソッドは、ワークシート内の特定の列をフィルターし、条件値を設定します。 フィールドパラメータを変更するとフィルター対象の列を指定でき、Criteria1パラメータを変更するとフィルター条件の値を設定できます。
- AdvancedFilterメソッドを使用してフィルター処理を行う。
- サブラチン MultiConditionFilter()
ワークシートとして ws
範囲 rngCriteria として
範囲 rngData として
範囲 rngResult として
ws = ThisWorkbook.Sheets(”Sheet1″) ‘ ワークシート名に変更
rngData = ws.Range(”A1:B10″) ‘ データ範囲に変更
rngCriteria = ws.Range(”D1:F2″) ‘ 条件範囲に変更
rngResult = ws.Range(”H1″) ‘ 結果範囲に変更
ws とともに
.Range(”H1″).Value = “条件1”
.Range(”I1″).Value = “条件2”
‘…
‘ 必要に応じて条件タイトルを継続的に追加.Range(“H2”).Formula = “=D2” ‘ 条件セルの参照に変更
.Range(“I2”).Formula = “=E2” ‘ 条件セルの参照に変更
‘…
‘ 必要に応じて条件セルの参照を継続的に追加.Range(“H1:I2”).Copy
.Range(“H1:I2”).PasteSpecial Paste:=xlPasteValues.Range(“H1:I2”).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rngCriteria
rngData.SpecialCells(xlCellTypeVisible).Copy rngResult
ws.ShowAllData
End With
End Sub - AdvancedFilterメソッドを使用して、指定範囲内のデータに対して条件を満たす行をフィルタリングし、結果範囲に貼り付けるコードです。rngDataパラメータでデータの範囲を指定し、rngCriteriaパラメータで条件の範囲を指定し、rngResultパラメータで結果の範囲を指定します。条件範囲には事前に条件を設定しておく必要があります。
これは、多条件フィルタリングを実現するための方法の一例にすぎません。具体的なニーズに応じて、他の方法を使用して多条件フィルタリングを実行できます。