Excel VBA(Visual Basic for Applications)を使ってデータを操作する際に、AutoFilterメソッドは非常に便利なツールです。
この記事では、AutoFilterメソッドの基本的な使い方を解説します。
AutoFilter メソッドとは?
AutoFilterメソッドは、Excelのワークシート上でデータのフィルタリングを自動化するためのメソッドです。
これを使用することで、特定の条件に一致するデータだけを表示したり、特定の列に対してフィルタを適用したりすることができます。
基本構文
まず、AutoFilterメソッドの基本構文を確認しましょう。
Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
各引数の説明は以下の通りです。
Range : フィルタを適用するセル範囲を指定します。
Field : フィルタを適用する列番号を指定します(1から始まる整数)。
Criteria1 : フィルタの最初の条件を指定します。
Operator : 複数の条件を使用する場合の演算子を指定します。
Criteria2 : フィルタの2番目の条件を指定します。
VisibleDropDown : フィルタのドロップダウン矢印を表示するかどうかを指定します。
詳細はこちらのページをご確認ください!
特定の条件でフィルタを適用する
では、特定の条件に基づいてフィルタを適用する方法を見てみましょう。
以下のコードは、A1からD10の範囲にフィルタを適用し、B列の値が「Active」であるデータだけを表示する例です。
Field:=2はB列を示しており、Criteria1:="Active"はフィルタ条件として「値が”Active”である」ことを指定しています。
Sub ApplyAutoFilter()
Dim ws As Worksheet:Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("A1:D10").AutoFilter Field:=2, Criteria1:="Active"
End Sub
複数の条件でフィルタを適用する
AutoFilterメソッドでは、複数の条件を組み合わせてフィルタを適用することもできます。
範囲内の数値に対して複数の条件を適用する
以下のコードは、"Sheet1"のB列に対して「値が25以上30未満である」データだけを表示する例です。
Field:=2はB列を示しており、Criteria1:=">=25"とCriteria2:="<30"はフィルタ条件として「値が25以上30未満である」ことを指定しています。
Operator:=xlAndは、両方の条件を満たすデータを表示するために使用されます。
Sub ApplyAutoFilter()
Dim ws As Worksheet:Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("A1").AutoFilter Field:=2, Criteria1:=">=25", Operator:=xlAnd, Criteria2:="<30"
End Sub
範囲内の複数行に対して条件を適用する例
以下のコードは、A列の値が100であり、かつB列の値が「Completed」であるデータだけを表示する例です。
Field:=1はA列、Criteria1:=100は「値が100」、Field:=2はB列、Criteria1:="Completed"は「値が"Completed"」であることを指定しています。
Sub ApplyAutoFilter()
Dim ws As Worksheet:Set ws = ThisWorkbook.Sheets("Sheet1")
With ws.Range("A1")
.AutoFilter Field:=1, Criteria1:=100
.AutoFilter Field:=2, Criteria1:="Completed"
End With
End Sub
フィルタを解除する
フィルタを解除する方法は簡単です。
以下のコードは、"Sheet1"のフィルタを解除する例です。
Sub RemoveAutoFilter()
Dim ws As Worksheet:Set ws = ThisWorkbook.Sheets("Sheet1")
If ws.AutoFilterMode Then ws.AutoFilterMode = False
End Sub
ws.AutoFilterMode とは?
ws.AutoFilterModeは、ワークシートにフィルタが適用されているかどうかを示すプロパティです。
このプロパティがTrueの場合、ワークシートには現在フィルタが適用されています。
Falseの場合、フィルタは適用されていません。
フィルタを解除する際には、このプロパティをチェックして、フィルタが適用されている場合にのみ解除するようにします。
最後に
AutoFilterメソッドを使いこなすことで、Excel VBAでのデータ操作が非常に効率的になります。
基本的な使い方を理解し、実際の業務で活用してみてください!