データの最終行に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
データの最終行+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関数で合計を挿入するの解説を終了します。ありがとうございました。