Vba を使用して列をフィルターする方法 (例あり)
VBA を使用して Excel で列でフィルタリングするには、次の方法を使用できます。
方法 1: 列の値に基づいてフィルターする
SubFilterRows ()
ActiveSheet.Range(" A1:C11 ").AutoFilter field:=1, Criteria1:=Range(" F2 ").Value
End Sub
この特定のマクロは、範囲A1:C11をフィルター処理して、最初の列がセルF2の値と等しい行のみを表示します。
方法 2: 複数の列の値に基づいてフィルタリングする
SubFilterRows ()
ActiveSheet.Range(" A1:C11 ").AutoFilter field:=1, Criteria1:=Range(" F2 ").Value, _
Operator:=xlOr, Criteria2:=Range(" F3 ").Value
End Sub
この特定のマクロは、範囲A1:C11をフィルター処理して、最初の列がセルF2またはF3の値と等しい行のみを表示します。
方法 3: フィルターをクリアする
SubClearFilters ()
ActiveSheet.AutoFilterMode = False
End Sub
この特定のマクロは、現在のシートからすべてのフィルターをクリアします。
次の例は、これらの各メソッドを実際に使用する方法を示しています。
例 1: 列の値に基づくフィルター
さまざまなバスケットボール選手に関する情報を含むデータセットがあり、Team 列の値が A に等しい行のみを含むようにデータセットをフィルターしたいとします。
これを行うには、次のマクロを作成できます。
SubFilterRows ()
ActiveSheet.Range(" A1:C11 ").AutoFilter field:=1, Criteria1:=Range(" F2 ").Value
End Sub
このマクロを実行すると、データセットは自動的にフィルター処理され、Team 列の値が A に等しい行のみが含まれるようになります。
例 2: 複数の列値に基づくフィルター
Team 列の値が AまたはC に等しい行のみを含むようにデータセットをフィルターしたいとします。
これを行うには、次のマクロを作成できます。
SubFilterRows ()
ActiveSheet.Range(" A1:C11 ").AutoFilter field:=1, Criteria1:=Range(" F2 ").Value, _
Operator:=xlOr, Criteria2:=Range(" F3 ").Value
End Sub
このマクロを実行すると、データセットは自動的にフィルター処理され、Team 列の値が AまたはC に等しい行のみを表示します。
注: VBA AutoFilterメソッドの完全なドキュメントはここにあります。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: ピボット テーブルを更新する方法
VBA: ピボット テーブルをフィルターする方法
VBA: 重複した値を削除する方法