HOME > 即効テクニック > Excel VBA > その他関連のテクニック > フィルタで抽出したデータの数をカウントする

フィルタで抽出したデータの数をカウントする|Excel VBA

その他関連のテクニック

フィルタで抽出したデータの数をカウントする

(Excel 97/2000/2002/2003/2007/2010/2013/2016)

セルA1から始まり、1行目がタイトル行になっている表があります。
マクロ「Sample」は、この表からオートフィルターで抽出したデータの件数を表示します。

Sub Sample()
    Dim Count As Long
    Range("A1").AutoFilter Field:=4, _
        Criteria1:="マスター会員"  '「マスター会員」を抽出
    Count = WorksheetFunction.Subtotal(3, Range("A1").CurrentRegion.Columns(1))
    MsgBox Count - 1 & " 件です。"
End Sub

オートフィルターで抽出したあと、表の1列目のデータの個数をカウントします。
フィルターされた表の集計には、ワークシート関数のSUBTOTAL関数が便利です。
SUM関数やCOUNTA関数は非表示になったセルも含めて集計しますが、SUBTOTAL関数は抽出された、見えているセルだけを対象に集計してくれます。

VBAでワークシート関数を利用するには、WorksheetFunctionオブジェクトを使います。
SUBTOTAL関数は、第1引数に 3 を指定すると、データの個数を返します。
変数Countにはタイトル行の分も含まれているので、1 を引いてデータの件数を表示します。