データの最終セルの下のセルに合計値を入力する方法
項目行を除く、A2セルを起点にしたデータの最終行の下のセルにその列のデータの合計値を入力する方法について説明します。方法としては、繰り返し処理のFor Each【フォーイーチ】ステートメントを使用してA2セルから下方向に順にセルの値を加算して、その値をA2セルのデータの最終行の下のセルに代入する方法と、ワークシート関数のSum【サム】関数を使用する方法をご紹介します。
合計するデータの数が多い場合は、ループ処理で加算するより、ワークシート関数のSum【サム】関数を利用したほうが、高速で処理できますし、コードも簡素なので、ワークシート関数のSum【サム】関数の利用がおすすめです。
実行結果(どちらのコードも実行結果は同じです。)
A2セルから始まるデータをループ処理で加算し、データの最終セルの下のセルに代入するコードと解説
Sub 合計1() Dim データ As Range Dim 合計 As Long Dim 行 As Long 行 = Cells(Rows.Count, 1).End(xlUp).Row For Each データ In Range("A2", "A" & 行) 合計 = 合計 + データ.Value Next データ Range("A" & 行).Offset(1).Value = 合計 End Sub
For Each【フォーイーチ】ステートメントでデータ範囲のセルを順次格納する変数「データ」をオブジェクト型(Range)で宣言します。
3行目【Dim 合計 As Long】
For Each【フォーイーチ】ステートメントでデータ範囲の値の加算値を格納する変数「合計」を長整数型(Long)で宣言します。
4行目【Dim 行 As Long】
A列のデータが入力されている最終行番号を格納する変数「行」を長整数型(Long)で宣言します。
5行目【行 = Cells(Rows.Count, 1).End(xlUp).Row】
Cells【セルズ】プロパティを使用して、A列のRows.Count【ロウズカウント】プロパティで参照したセルの最終行からRange【レンジ】オブジェクトのEnd【エンド】プロパティで上方向にデータが入力されている最終行に移動し、Row【ロウ】プロパティでその行番号を取得して変数「行」に代入します。つまり、A列のデータが入力されているセルの行番号を取得して変数「行」に代入します。
6行目【For Each データ In Range(“A2”, “A” & 行)】
For Each【フォーイーチ】ステートメントで繰り返し処理の始まりです。繰り返し処理の中で、オブジェクト変数「データ」に
A2セルからA列のデータ入力されている最後のセルを順次代入して、A列のデータが入力されている最後のセルまで繰り返します。
7行目【合計 = 合計 + データ.Value】
繰り返し処理の中でA列のセルの値に変数「合計」に格納されている値を加算して変数「合計」に再代入します。
つまり、A2セルから順に下方向にセルの値を加算します。
8行目【Next データ】
ここまでの繰り返し処理をA列のデータが入力されている最終行分繰り返します。
9行目【Range(“A” & 行).Offset(1).Value = 合計】
Range【レンジ】プロパティで参照したデータが入力されている最終セルの一つ下の行をRange【レンジ】オブジェクトのOffset【オフセット】プロパティで参照して変数「合計」に格納されているA列のデータの加算値を代入します。
ワークシート関数のSum【サム】関数
引数で指定したセル範囲の値の合計値を取得するには、Application【アプリケーション】オブジェクトのWorksheetFunction【ワークシートファンクション】プロパティで取得した、ワークシート関数のコンテナ(入れ物)を表すWorksheetFunction【ワークシートファンクション】オブジェクトのSum【サム】関数を使用します。
ワークシート関数のSum【サム】関数の書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.Sum(範囲1[,範囲2,範囲3,・・・範囲30])
- オブジェクト(必須)
Application【アプリケーション】オブジェクトのWorksheetFunction【ワークシートファンクション】プロパティで取得した、ワークシート関数のコンテナ(入れ物)を表すWorksheetFunction【ワークシートファンクション】オブジェクトを指定します。 - 範囲1(必須)
合計するセル範囲やセル、値を設定します。 - 範囲2・・・・範囲30(省略可)
合計するセル範囲やセル、値を設定します。最大30個まで設定できます。
ワークシート関数のSum関数で合計した値をデータの最終セルの下のセルに代入するコード例
Sub 合計2() Dim 行 As Long 行 = Cells(Rows.Count, 1).End(xlUp).Row Range("A" & 行).Offset(1).Value = WorksheetFunction.Sum(Range("A2", "A" & 行)) End Sub
以上で、データの最終セルの下のセルに合計値を入力する方法についての解説を終了します。ありがとうございました。