Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】オートフィルタ絞り込み後操作(SubTotal)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の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 の引数がありますが、主な引数のみ掲載

 

                      

 

f:id:tuna-kichi:20200818090354p:plain

 

Dim Cnt As Long

Range("A1:C9").AutoFilter 1, "B" '列Aを「B」でフィルタリング

 

'列Aのデータの全個数を計算し、
 項目行をマイナスして「B」のみの個数を割り出す

Cnt = WorksheetFunction.Subtotal(3, Columns(1)) - 1

MsgBox Cnt & " 件です"

 

                      

 

こんな関数があったなんて・・・

初めて知りました。

 

いままでは、フィルタリングするたびに表示されたセルを選択して、

画面下の所で確認していましたが、SubTotal 関数をひとつ設定しておけば、

動的に計算してくれますね。

 

f:id:tuna-kichi:20200809162150p:plain

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/