この記事では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`オブジェクトを使用して指定した範囲の合計を計算し、別のセルにその値を出力します。非常にシンプルで直感的なコードです。
まとめ