【ExcelVBA】オートフィルタでデータ集計
集計には Subtotal関数 を使います。
関数説明:WorksheetFunction.Subtotal(集計方法,参照範囲)
テスト対象テーブルを使いたい場合は、↓テーブルをコピーしてエクセルの A1 に貼り付けてください。
※13行目は見出し行も件数にカウントするので、-1 しています。
結果

実行前のテーブル

結果

実行前のテーブル

結果

実行前のテーブル

結果

実行前のテーブル

関数説明:WorksheetFunction.Subtotal(集計方法,参照範囲)
テスト対象のテーブル
テスト対象テーブルを使いたい場合は、↓テーブルをコピーしてエクセルの A1 に貼り付けてください。
| 商品名 | 個数 |
|---|---|
| りんご | 4 |
| みかん | 3 |
| めろん | 5 |
| いちご | 2 |
| みかん | 1 |
件数を集計
Sub sample()
Dim Target(1) As String
Target(0) = "みかん"
Target(1) = "りんご"
ThisWorkbook.ActiveSheet.Range("A1:B1").AutoFilter _
Field:=1, _
Criteria1:=Target, _
Operator:=xlFilterValues
MsgBox WorksheetFunction.Subtotal(3, Range("B:B")) - 1 & " 件"
End Sub
※13行目の件数の集計方法は「 3 」です。※13行目は見出し行も件数にカウントするので、-1 しています。
結果

実行前のテーブル

数値を集計
Sub sample()
Dim Target(1) As String
Target(0) = "みかん"
Target(1) = "りんご"
ThisWorkbook.ActiveSheet.Range("A1:B1").AutoFilter _
Field:=1, _
Criteria1:=Target, _
Operator:=xlFilterValues
MsgBox "合計: " & WorksheetFunction.Subtotal(9, Range("B:B"))
End Sub
※13行目の数値の集計方法は「 9 」です。結果

実行前のテーブル

最小値を求める
Sub sample()
Dim Target(1) As String
Target(0) = "みかん"
Target(1) = "りんご"
ThisWorkbook.ActiveSheet.Range("A1:B1").AutoFilter _
Field:=1, _
Criteria1:=Target, _
Operator:=xlFilterValues
MsgBox "最小値: " & WorksheetFunction.Subtotal(5, Range("B:B"))
End Sub
※13行目の最小値の集計方法は「 5 」です。結果

実行前のテーブル

最大値を求める
Sub sample()
Dim Target(1) As String
Target(0) = "みかん"
Target(1) = "りんご"
ThisWorkbook.ActiveSheet.Range("A1:B1").AutoFilter _
Field:=1, _
Criteria1:=Target, _
Operator:=xlFilterValues
MsgBox "最大値: " & WorksheetFunction.Subtotal(4, Range("B:B"))
End Sub
※13行目の最大値の集計方法は「 4 」です。結果

実行前のテーブル

集計方法と集計機能
| 集計方法 | 集計機能 |
|---|---|
| 1 | 平均値を求める |
| 2 | 数値の個数を求める |
| 3 | データの個数を求める |
| 4 | 最大値を求める |
| 5 | 最小値を求める |
| 6 | 積を求める |
| 7 | 不偏標準偏差を求める |
| 8 | 標本標準偏差を求める |
| 9 | 合計値を求める |
| 10 | 不偏分散を求める |
| 11 | 標本分散を求める |




ディスカッション
コメント一覧
まだ、コメントがありません