例文を使って繰り返し業務を時短

【マクロ・VBA】最終列・最終行に合計を表示する

エクセル、マクロ、VBAで表の最終列や最終行に合計を表示する方法 VBA

列の最終行に合計を表示

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_arrays_rows_colmax_row、および max_colを宣言します。
  • my_array は、セル範囲を保持する配列です。s_rows_colは、データの最初の行と列を示します。 max_rowmax_col は、データの最終行と最終列を示します。
  • 次に、Rangeオブジェクトを使用して、指定されたセル範囲を my_array に格納します。
  • 次に、Forループを使用して、各行の最終列に合計値を挿入します。
  • このループは、データの最初の行から最後の行までループし、各行の最後の列に合計式を挿入します。また、Forループを使用して、各列の最終行に合計値を挿入します。
  • データの最初の列から最後の列までループし、各列の最後の行に合計式を挿入します。
  • 最後に、完了メッセージを表示します。

コメント

タイトルとURLをコピーしました