【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
SUBTOTAL
・指定した範囲の小計を計算する
・加算、減算のみならず、引数を指定することで、
個数や平均値を計算することができる
・SubTotal(集計方法, 範囲)
・手動で非表示にした行列がある場合、どちらかの引数を選択できる
・オートフィルタに適用した場合、常に非表示を無視するので、
どちらの集計方法の引数を指定しても同じ結果になる
(表示されているセルのみ計算する)
集計方法 (非表示含める) |
集計方法 (非表示無視) |
関数 | |
1 | 101 | AVERAGE | 平均 |
2 | 102 | COUNT | 数値の個数 |
3 | 103 | COUNTA | データの個数 |
4 | 104 | MAX | 最大値 |
5 | 105 | MIN | 最小値 |
9 | 109 | SUM | 合計 |
※1~11, 101~111 の引数がありますが、主な引数のみ掲載
Dim Cnt As Long
Range("A1:C9").AutoFilter 1, "B" '列Aを「B」でフィルタリング
'列Aのデータの全個数を計算し、
項目行をマイナスして「B」のみの個数を割り出す
Cnt = WorksheetFunction.Subtotal(3, Columns(1)) - 1
MsgBox Cnt & " 件です"
こんな関数があったなんて・・・
初めて知りました。
いままでは、フィルタリングするたびに表示されたセルを選択して、
画面下の所で確認していましたが、SubTotal 関数をひとつ設定しておけば、
動的に計算してくれますね。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/