Excel VBA データの最終行・列にSUM関数で合計を挿入する

スポンサーリンク

データの最終行にSUM関数で合計を挿入する方法

データの最終行にSUM関数を挿入する方法は、さまざまな方法があります。

なるべく簡素で、可読性が良いコードをご紹介します。

データ例


A列「売上日」、B列「商品A売上」、C列「商品B売上」、D列「商品C売上」でA列の最終データ行の下に「合計」の文字列を挿入し、B・C・D列の最終データ行の下にSUM関数を挿入します。
データの最終行が増減しても対応できるコードで記述します。

データの最終行にSUM関数を挿入するコードと解説

Sub sample()
 Dim r As Long
   r = Range("B1").End(xlDown).Row + 1
   Range("A" & r) = "合計"
 With Range("B" & r)
  .Formula = "=SUM(B2:B" & (r - 1) & " )"
  .AutoFill Destination:=.Resize(1, 3)
 End With
End Sub
2行目【Dim r As Long】
データの最終行+1の行数を格納する変数「r」を長整数型(Long)で宣言します。


3行目【r = Range(“B1”).End(xlDown).Row + 1】
B列のデータ最終行数をEndプロパティで取得して1を加算した値を変数「r」に代入します。


4行目【Range(“A” & r) = “合計”】
A列の変数「r」行(データの最終行+1行)に”合計”の文字列を代入します。


5行目【With Range(“B” & r)】
B列の変数「r」行(データの最終行+1行目)をWith【ウィズ】ステートメントで指定します。


6行目【.Formula = “=SUM(B2:B” & (r – 1) & ” )”】
B列r行に対してFormula【フォ‐ミュラ】プロパティで値を数式に指定してSUM関数を代入しています。


7行目【.AutoFill Destination:=.Resize(1, 3)】
セルに連続データを設定するRange【レンジ】オブジェクトのAutoFill【オートフィル】メソッドを使用して、6行目のコードでB列の変数「r」行に設定したSUM関数の連続データの書き込み先を指定する引数Destination【ディスティネーション】に、With【ウィズ】ステートメントで指定したB列の変数「r」行から選択範囲のサイズを変更するRange【レンジ】オブジェクトのResize【リサイズ】プロパティを使用し、第1引数の新しい行サイズを設定する引数に1、第2引数の新しい列サイズを設定する引数に3を設定してB列~D列のr行にSUM関数の連続データを設定します。

実行結果

売上日毎の売上合計の集計について

まずは、E1セルに”合計”と項目を代入してE2セルにSUM【サム】関数を代入して、AutoFill【オートフィル】メソッドで最終行まで貼付けすればOKです。

データの最終行と列にSUM関数で合計を表示するコード

Sub sample()
 Dim r As Long
   r = Range("B1").End(xlDown).Row + 1
   Range("A" & r) = "合計"
 With Range("B" & r)
  .Formula = "=SUM(B2:B" & (r - 1) & " )"
  .AutoFill Destination:=.Resize(1, 3)
 End With
 Range("E1") = "合計"
 With Range("E2")
  .Formula = "=SUM(B2:D2 )"
  .AutoFill Destination:=.Resize((r - 1), 1)
 End With
End Sub

実行結果


こちらも合わせてお読みください。
表をグループ化して集計する SubTotalメソッド
以上で、データの最終行・列にSUM関数で合計を挿入するの解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告