教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA セル操作】オートフィルタ(AutoFilter)によるデータの抽出方法について教えて!

構文

構文は以下の通りです。

Worksheets("シート名").Range("セル範囲").AutoFilter Field:=フィールド番号, Criteria1:=条件

解説

AutoFilterメソッドは、指定した範囲に対して、フィルタを自動的に適用します。Worksheetsのシート名には、フィルタを適用したいシートの名前を指定します。Rangeのセル範囲には、フィルタを適用したいデータの範囲を指定します。Fieldのフィールド番号には、フィルタを適用したい列の番号を指定します。1から始まります。Criteria1の条件には、フィルタリングの条件を指定します。例えば、値やテキストを指定することができます。

使い方

具体的な使い方について紹介します。

Sub ApplyAutoFilter()
    Worksheets("Sheet1").Range("A1:B10").AutoFilter Field:=1, Criteria1:="Apple"
End Sub

上記はA1からB10の範囲に対して、A列の値が「Apple」のデータだけをフィルタリングします。

プログラミング例

以下に、プログラミング例を紹介します。

Sub FilterGrades()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("成績表")
    ' 成績表にデータを入力
    ws.Range("A1").Value = "氏名"
    ws.Range("B1").Value = "数学"
    ws.Range("C1").Value = "英語"
    ws.Range("A2").Value = "山田太郎"
    ws.Range("B2").Value = 85
    ws.Range("C2").Value = 92
    ws.Range("A3").Value = "佐藤花子"
    ws.Range("B3").Value = 78
    ws.Range("C3").Value = 88
    ' 数学の成績のみフィルタリング
    ws.Range("A1:C3").AutoFilter Field:=2, Criteria1:=">=80"
End Sub

このコードを実行すると、数学の成績が80点以上のデータが抽出されます。

まとめ

AutoFilterメソッドを使うことで、データの範囲に対して簡単にフィルタリングを適用できます。特定の条件に合致するデータを素早く抽出することができる便利なメソッドです。是非活用してください。