Excel

【Excel】VBAマクロで複数シートに同じ処理を繰り返す(同じ作業を特定シートまで:ブック全体など)方法

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

この記事では、【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`ループを使用して特定のシートに対して処理を行っています。

 

まとめ