Excel VBA | 複数シートにまたがって一括で数式を入れる

VBA
スポンサーリンク

ここでは 複数シートにまたがって一括で数式を入れる VBAの例を紹介します。ユーザーフォームや通常のマクロからでも応用できますが、まずは基本のコードを見てみましょう。


シナリオ

  • 複数のシート(例: “Sheet1”, “Sheet2”, “Sheet3″)に同じ数式を一括で入力したい
  • 対象セルは各シートの B2:B6
  • 入れる数式は「=SUM(A2:A10)」

基本コード例

Sub 複数シートに一括で数式を入れる()
    Dim ws As Worksheet
    Dim c As Range
    
    ' 対象シートをループ
    For Each ws In Worksheets(Array("Sheet1", "Sheet2", "Sheet3"))
        ' 各シートの対象セル範囲をループ
        For Each c In ws.Range("B2:B6")
            c.Formula = "=SUM(A2:A10)"
        Next c
    Next ws
End Sub
VB

👉 このコードを実行すると、指定した3つのシートのB2~B6に同じ数式が一括で入ります。


応用例1: ユーザー入力で対象シートを指定

Sub ユーザー指定シートに数式()
    Dim sheetNames As Variant
    Dim ws As Worksheet
    Dim c As Range
    
    ' ユーザーにシート名をカンマ区切りで入力させる
    sheetNames = Split(InputBox("対象シート名をカンマ区切りで入力してください"), ",")
    
    For Each ws In Worksheets
        If UBound(Filter(sheetNames, ws.Name)) >= 0 Then
            For Each c In ws.Range("B2:B6")
                c.Formula = "=AVERAGE(A2:A10)"
            Next c
        End If
    Next ws
End Sub
VB

👉 ユーザーが「Sheet1,Sheet3」と入力すれば、その2つのシートだけに数式が入ります。


応用例2: 全シートに一括で数式を入れる

Sub 全シートに数式()
    Dim ws As Worksheet
    
    For Each ws In Worksheets
        ws.Range("B2:B6").Formula = "=MAX(A2:A10)"
    Next ws
End Sub
VB

👉 すべてのシートに同じ数式を一括で入力できます。


ポイント

  • 複数シートを指定する方法
    • Worksheets(Array("Sheet1","Sheet2")) → 特定のシート
    • For Each ws In Worksheets → 全シート
  • セル範囲をループFor Each c In ws.Range("B2:B6")
  • 数式を文字列として組み立てる"=SUM(A2:A10)" のように代入

練習課題

  1. 複数シートに「SUM」「AVERAGE」「MAX」を選択肢で切り替えて一括入力するフォームを作る
  2. ユーザーに「対象セル範囲」を入力させ、その範囲に数式を入れるコードを書く
  3. 全シートに「行番号に応じた数式」を自動生成するコードを作ってみる

こうした仕組みを作ると、複数シートにまたがって一括で数式を入れる便利ツールが完成します。

タイトルとURLをコピーしました