オートフィルターで抽出された可視セルだけを集計したい場合には、WorksheetFunction.Subtotal が最適です。本記事では、抽出範囲の合計値とワークシート全体の合計値を同時に取得するサンプルコードを示し、Subtotal と Sum の違いを丁寧に解説いたします。
前提条件
項目
内容
対応 Excel
Microsoft 365 または 2016 以降
データ列
列 E(売上金額など数値列を想定)
マクロ設置先
標準モジュール
サンプルコード(VBA)
Sub CalculateFilteredTotals()
Dim visibleTotal As Double ' 抽出範囲の合計
Dim overallTotal As Double ' 全体範囲の合計
Dim tgtColumn As Range ' 対象列
' 列 E を対象列として設定
Set tgtColumn = ActiveSheet.Columns("E")
' 9 = SUM を意味する集計コード
visibleTotal = WorksheetFunction.Subtotal(9, tgtColumn)
' フィルター無視の合計
overallTotal = WorksheetFunction.Sum(tgtColumn)
MsgBox "抽出範囲の合計: " & visibleTotal & vbCrLf & _
"全体範囲の合計: " & overallTotal, _
vbInformation, "合計値の比較"
End Sub