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を長整数型で宣言します。


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)】

AutoFill(オートフィル)メソッドで6行目のB列r行の数式を
コピーして貼り付けています。
貼り付け先のDestination(ディステネーション)は
Resize(リサイズ)プロパティを利用しています。
Resize(リサイズ)プロパティについてはこちらをご覧ください。


実行結果

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

まずは、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関数で合計を挿入するの解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク