【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 | 標本分散を求める |
ディスカッション
コメント一覧
まだ、コメントがありません