記事検索

検索ワードを入力してください。
Sky Tech Blog
【VBA】AutoFilterメソッドを​使いこな​そう

【VBA】AutoFilterメソッドを​使いこな​そう

Excel VBAのAutoFilterメソッドの基本的な使い方を解説します。AutoFilterメソッドを使用して、Excelのワークシート上でデータを特定の条件に基づいてフィルタリングする方法を紹介します。

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でのデータ操作が非常に効率的になります。
基本的な使い方を理解し、実際の業務で活用してみてください!


XFacebookLINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム