オートフィルタ(抽出件数の取得・結果集計)AutoFilter メソッド
ワークシート関数の Subtotal 関数 の使い方
VBA には、オートフィルタの抽出件数を取得するプロパティやメソッドがないため、ワークシート関数の SABTOTAL 関数 を WorksheetFunction プロパティ から呼び出して使用します。さらに、SABTOTAL 関数 を使用して、抽出結果を対象にさまざまな集計を行うことが可能です。
object.WorksheetFunction.Subtotal ( arg1, arg2 )
引数・戻り値
- object ・・・ 対象となる Application オブジェクトを指定します。
- arg1 ・・・ 集計方法を整数値で指定します。(省略不可)
値 対応する関数 内容 1 AVERAGE 平均 2 COUNT 数値を含むセル数 3 COUNTA 空白でないセル数 4 MAX 最大値 5 MIN 最小値 6 PRODUCT 積 7 STDEV 標本標準偏差 8 STDEVP 標準偏差 9 SUM 合計 10 VAR 不偏分散 11 VARP 標本分散 - arg2 ・・・ 集計対象のセル範囲(Range オブジェクト)を指定します。(省略不可)
AutoFilter メソッド については、オートフィルタ(AutoFilter メソッド) 等を参照してください。
オートフィルタの結果を集計する使用例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Sample12_1_AutoFilter() Dim cnt As Long '抽出条件「合計」400点以上 Range("B3").AutoFilter Field:=8, _ criteria1:=">=400" '抽出件数を取得 cnt = Application.WorksheetFunction.Subtotal _ (3, Range("B3").CurrentRegion.Columns(1)) - 1 MsgBox cnt End Sub |
実行結果
サンプルVBAソース 実行前
実行後
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub Sample12_2_AutoFilter() Dim myRng As Range Dim Max_Total As Long, Min_Total As Long Dim Ave_Math As Double, Total_Math As Long Set myRng = Range("B3:J24") '抽出条件「登録番号」1010番以下 myRng.AutoFilter Field:=1, _ criteria1:="<=1010" '8列(合計)の最高点を求める Max_Total = WorksheetFunction.Subtotal(4, myRng.Columns(8)) '8列(合計)の最低点を求める Min_Total = WorksheetFunction.Subtotal(5, myRng.Columns(8)) '6列(数学)の平均点を求める Ave_Math = WorksheetFunction.Subtotal(1, myRng.Columns(6)) '6列(数学)の合計点を求める Total_Math = WorksheetFunction.Subtotal(9, myRng.Columns(6)) MsgBox "最高点(合計):" & Max_Total & vbCrLf & _ "最低点(合計):" & Min_Total & vbCrLf & _ "平均点(数学):" & Ave_Math & vbCrLf & _ "合計点(数学):" & Total_Math End Sub |
実行結果
サンプルVBAソース 実行前
実行後
関連記事
-
直前のセル・直後のセルを参照する(Previous プロパティ・Next プロパティ)
Previous プロパティ・Next プロパティ Previous プロパティ …
-
行・列の表示・非表示(Hidden プロパティ)
Hidden プロパティ Hidden プロパティに True を設定することで …
-
セル・セル範囲に名前を定義・削除(Name プロパティ・Names コレクション)
セル・セル範囲に名前を定義(Name プロパティ) Range オブジェクトのN …
-
非連続のセルが選択されているか確認する(Areas コレクション)
Areas コレクション の使い方 複数の離れた位置にあるセル範囲を選択した場合 …
-
セル範囲内を検索(Find メソッド)
Find メソッド 指定したセル範囲内の特定の情報を含むセルを検索します。 【書 …
-
セル範囲を結合・結合を解除(MergeCells プロパティ)
MergeCells プロパティ MergeCells プロパティは、指定したセ …
-
セル・セル範囲をコピーする(Copy メソッド)
Copy メソッド Copy メソッドは、セル範囲をコピーし、指定したセル範囲に …
-
セルを削除する(Delete メソッド)
Delete メソッド Delete メソッドで、指定したセル・セル範囲を削除し …
-
指定した行数・列数移動したセル・セル範囲を参照(Offset プロパティ)
Offset プロパティ Offset プロパティは、基準となるセル・セル範囲か …
-
入力規則(日本語入力)Validation オブジェクト,IMEMode プロパティ
IMEMode プロパティ Validation.IMEMode プロパティ を …