この記事では、【Excel】VBAマクロで複数シートに同じ処理を繰り返す(同じ作業を特定シートまで:ブック全体など)方法について、解説しています。
ポイントとしては、
`Sum`関数と`
Average`関数
の使用ですね。通常のエクセルと同様です。
なお、初心者にもわかりやすくするため、変数名は少々変な日本語ローマ字表記を用いています。実際に使用する際は、より一般的な英語表記に変更してください。
それでは、詳細を見ていきましょう!
VBAマクロで複数シートに同じ処理を繰り返す方法
それではまず、ブック全てのシートでC列2行目から最終行までを合計する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub SheetSum()
Dim ws As Worksheet
Dim lastRow As Long
Dim sumResult As Double
For Each ws In ThisWorkbook.Sheets
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
sumResult = Application.WorksheetFunction.Sum(ws.Range("C2:C" & lastRow))
ws.Range("D1").Value = sumResult
Next ws
End Sub
コードのAlt+F8を押し、マクロ選択画面で`SheetSum`関数を実行します。
このコードは、各シートのC列の2行目から最終行までの合計を計算し、その結果を各シートのD列1行目に表示します。
`For Each`ループを使用して、ブック内の全てのシートに対して処理を行います。
VBAマクロで特定のシートに同じ処理を繰り返す方法
続いては、先頭シートから3つ目までのシートで、C列2行目から最終行までの平均を求める方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub SheetAverage()
Dim ws As Worksheet
Dim i As Integer
Dim lastRow As Long
Dim averageResult As Double
For i = 1 To 3
Set ws = ThisWorkbook.Sheets(i)
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
averageResult = Application.WorksheetFunction.Average(ws.Range("C2:C" & lastRow))
ws.Range("D1").Value = averageResult
Next i
End Sub
コードのAlt+F8を押し、マクロ選択画面で`SheetAverage`関数を実行します。
このコードでは、ブックの最初の3つのシートについて、C列の2行目から最終行までの平均値を計算し、D列1行目に表示します。
ここでは、`For`ループを使用して特定のシートに対して処理を行っています。
まとめ