列の最終行に合計を表示
Sub 列の最終行に合計を表示()
Cells(Rows.Count, "B").End(xlUp).Offset(1, 0) = _
WorksheetFunction.Subtotal(9, Columns(2).SpecialCells(xlCellTypeVisible))
MsgBox "完了"
End Sub
*SpecialCells(xlCellTypeVisible):可視セル
Subtotal関数とは
VBAのSubtotal関数は、Excelのサブトータル機能をVBAコードで実行するための関数です。Subtotal関数は、指定された範囲に対して、指定された集計関数を使用して、各グループの小計を計算します。
Subtotal関数は、以下のような構文を持ちます。
Range.Subtotal GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData
各引数は以下の通りです。
GroupBy
: グループ化する列番号、または列の範囲を指定します。Function
: サブトータルに使用する集計関数を指定します。SUM、AVERAGE、MAX、MINなど、Excelで使用できる関数を使用できます。TotalList
: サブトータルの合計方法を指定します。2を指定すると小計とグランドトータルが表示されます。Replace
: すでにサブトータルが設定されているかどうかを指定します。PageBreaks
: グループごとに改ページを挿入するかどうかを指定します。SummaryBelowData
: サブトータルをデータの下に表示するかどうかを指定します。
補足説明
例えば、以下のようなVBAコードを使用して、A列でグループ化されたデータに対して、SUM関数を使用して小計を計算することができます。
Range("A1:B10").Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2)
このコードは、A1からB10までの範囲に対して、A列でグループ化し、SUM関数を使用して小計を計算します。また、小計とグランドトータルが表示されます。
表の最終列と最終行に合計を表示 *配列/関数
このVBAコードは、Excelシート上の指定された範囲内のセルの合計値を計算し、最終列と最終行に合計を挿入するマクロです。
Sub 最終列と最終行に合計を求める()
Dim my_array As Variant
Dim s_row, s_col As Long
Dim max_row, max_col As Long
s_row = 1 'データの開始行を設定
s_col = 1 'データの開始列を設定
max_row = Cells(Rows.Count, s_col).End(xlUp).Row
max_col = Cells(s_row, Columns.Count).End(xlToLeft).Column
'セル範囲を配列に格納
my_array = Range(Cells(s_row, s_col), Cells(max_row, max_col))
For i = s_row To max_row
Cells(i, max_col + 1).Formula = _
"=SUM(A" & i & ":" & _
Cells(i, max_col).Address(False, False) & ")"
For e = s_col To max_col + 1
Cells(max_row + 1, e) = "=SUM(R[" & 0 - max_row & "]C[0]:R[-1]C[0])"
Next e
Next i
MsgBox "完了 "
End Sub
- 最初に、変数
my_array
、s_row
、s_col
、max_row
、およびmax_col
を宣言します。 my_array
は、セル範囲を保持する配列です。s_row
とs_col
は、データの最初の行と列を示します。max_row
とmax_col
は、データの最終行と最終列を示します。- 次に、
Range
オブジェクトを使用して、指定されたセル範囲をmy_array
に格納します。 - 次に、
For
ループを使用して、各行の最終列に合計値を挿入します。 - このループは、データの最初の行から最後の行までループし、各行の最後の列に合計式を挿入します。また、
For
ループを使用して、各列の最終行に合計値を挿入します。 - データの最初の列から最後の列までループし、各列の最後の行に合計式を挿入します。
- 最後に、完了メッセージを表示します。
コメント