フィルタで抽出したデータの数をカウントする|Excel VBA |
セル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 を引いてデータの件数を表示します。