Excel

【Excel】VBAマクロで合計計算(繰り返し、範囲指定、最終行まで、入力)する方法【Sum, For Each, Range】

当サイトでは記事内に広告を含みます

この記事ではExcelのVBAマクロを使用して、様々な合計計算を行う方法について解説していきます。

ポイントとしては、`Sum`関数、`For Each`ループ、`Range`オブジェクトを使用することです。

下記の解説では完全な初心者でもわかりやすいように、変数名を少々変わった名称にしています。ご活用の際には、適切な名称に変更してご利用くださいね。

それでは詳しく見ていきましょう!

VBAマクロで合計計算(2行目から最終行までB、C、D列のセルの合計を繰り返し、E列に入力)する方法

それではまず、2行目から最終行までB、C、D列のセルの合計を繰り返し、E列に入力する方法について解説していきます。

この方法では、シートのデータ量に応じて動的に合計値を計算します。


Sub SumColumnsBCD()
    Dim saigoGyou As Long
    Dim keisanGyou As Long
    Dim goukei As Double

    saigoGyou = Cells(Rows.Count, "B").End(xlUp).Row

    For keisanGyou = 2 To saigoGyou
        goukei = Cells(keisanGyou, "B").Value + Cells(keisanGyou, "C").Value + Cells(keisanGyou, "D").Value
        Cells(keisanGyou, "E").Value = goukei
    Next keisanGyou
End Sub

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面で`SumColumnsBCD`関数を実行します。

このコードでは、最終行を動的に判定し、B、C、D列の各行の値を合計してE列に出力します。`saigoGyou`変数で最終行を取得し、`For`ループを使って各行を処理しています。

 

VBAマクロで合計計算(すべてのシートのB列2行目から最終行までの合計を計算し、別ブックのシート名と合計値を順番に記載していく)する方法

続いては、すべてのシートのB列2行目から最終行までの合計を計算し、別ブックにシート名と合計値を記載する方法について解説していきます。

Alt + F11にてVBE画面を開いて、下記コードをコピペしましょう。


Sub SumAllSheets()
    Dim ws As Worksheet
    Dim totalWorkbook As Workbook
    Dim totalSheet As Worksheet
    Dim saigoGyou As Long
    Dim total As Double
    Dim rowNumber As Integer

    Set totalWorkbook = Workbooks.Add
    Set totalSheet = totalWorkbook.Sheets(1)
    rowNumber = 1

    For Each ws In ThisWorkbook.Sheets
        saigoGyou = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
        total = Application.WorksheetFunction.Sum(ws.Range("B2:B"

 & saigoGyou))
        totalSheet.Cells(rowNumber, 1).Value = ws.Name
        totalSheet.Cells(rowNumber, 2).Value = total
        rowNumber = rowNumber + 1
    Next ws
End Sub

コードのAlt+F8を押し、マクロ選択画面で`SumAllSheets`関数を実行します。

このコードでは、`For Each`ループを使用して、現在のブックのすべてのシートを順番に処理します。

各シートのB列の合計を計算し、新しいワークブックにシート名と合計値を記載します。

 

VBAマクロで範囲を指定して合計計算(C3からF6の合計をG2に記載)する方法

最後に、特定の範囲(C3からF6)の合計を計算し、別のセル(G2)に記載する方法について解説します。

この方法は、特定の範囲内の値の合計を求めたい場合に適しています。


Sub SumRangeC3F6()
    Dim goukei As Double

    goukei = Application.WorksheetFunction.Sum(Range("C3:F6"))
    Range("G2").Value = goukei
End Sub

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面で`SumRangeC3F6`関数を実行します。

このコードでは、`Range`オブジェクトを使用して指定した範囲の合計を計算し、別のセルにその値を出力します。非常にシンプルで直感的なコードです。

 

まとめ