教えて!ExcelVBA!

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

ExcelVBAでオートフィルタによるデータ抽出の方法

構文

構文は以下の通りです。

Range("データの範囲").AutoFilter Field:=列番号, Criteria1:="抽出条件"

解説

Range("データの範囲")は、オートフィルタを適用するデータの範囲を指定します。例えば、データがA1からD10にある場合、Range("A1:D10") と指定します。AutoFilterは、Excelのオートフィルタ機能を使用して、指定した範囲のデータをフィルタリングします。Field:=列番号は、フィルタを適用する列を指定します。列番号はデータ範囲の中での列の位置を指します。例えば、データ範囲の中で最初の列をフィルタリングする場合、Field:=1 と指定します。Criteria1:="抽出条件"は、抽出したいデータの条件を指定します。例えば、"Apple" という値を持つ行を抽出する場合、Criteria1:="Apple" と指定します。

プログラミング例

具体的なプログラミング例を紹介します。

Sub データを抽出する()
    ' データ範囲を指定してオートフィルタを適用します
    Range("A1:D10").AutoFilter Field:=2, Criteria1:="東京"
    ' フィルタリングされたデータをコピーして別のシートに貼り付けます
    Range("A1:D10").SpecialCells(xlCellTypeVisible).Copy
    Sheets("抽出結果").Range("A1").PasteSpecial Paste:=xlPasteValues
    ' フィルタを解除します
    ActiveSheet.AutoFilterMode = False
End Sub

A1からD10までの範囲にオートフィルタを適用し、2列目(B列)の「東京」という値を持つ行を抽出します。また、フィルタリングされた行のみをコピーします。コピーしたデータを「抽出結果」という名前のシートに貼り付けます。最後にフィルタを解除します。

まとめ

オートフィルタを使うことで、特定の条件に基づいてデータを簡単に抽出することができます。ステップごとにコードの意味を理解することで、他の条件に基づいたデータ抽出にも応用が可能です。