ここでは 複数ブックにまたがって条件付きで数式を入れる VBAの例を紹介します。ポイントは「複数のブックを開いてループし、セルの値を判定して条件に応じて数式を入れる」ことです。
基本例:負の数ならABS関数、正の数なら2倍の数式
Sub 複数ブックで条件付き数式()
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range
' 開いているすべてのブックを対象
For Each wb In Application.Workbooks
' このブック自身を除外したい場合は条件を追加
If wb.Name <> ThisWorkbook.Name Then
For Each ws In wb.Worksheets
' 各シートの対象範囲を指定(例: A2:A10)
For Each c In ws.Range("A2:A10")
If IsNumeric(c.Value) Then
If c.Value < 0 Then
' 負の数なら絶対値を返す数式を隣のセルに入れる
c.Offset(0, 1).Formula = "=ABS(" & c.Address & ")"
Else
' 正の数なら2倍の数式を隣のセルに入れる
c.Offset(0, 1).Formula = "=" & c.Address & "*2"
End If
End If
Next c
Next ws
End If
Next wb
End Sub
VB👉 開いているすべてのブックのA2~A10をチェックし、条件に応じて隣のセルに数式を入れます。
応用例1:特定のブックだけ対象にする
Sub 特定ブックに条件付き数式()
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range
' 特定ブック名を指定
For Each wb In Application.Workbooks
If wb.Name = "SalesData.xlsx" Or wb.Name = "Budget.xlsx" Then
For Each ws In wb.Worksheets
For Each c In ws.Range("B2:B20")
If IsNumeric(c.Value) Then
If c.Value >= 100 Then
c.Offset(0, 1).Formula = "=MAX(B2:B20)"
Else
c.Offset(0, 1).Formula = "=AVERAGE(B2:B20)"
End If
End If
Next c
Next ws
End If
Next wb
End Sub
VB👉 「SalesData.xlsx」と「Budget.xlsx」だけを対象に処理します。
応用例2:複数条件を組み合わせる
Sub 複数条件で数式を入れる_複数ブック()
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range
For Each wb In Application.Workbooks
If wb.Name <> ThisWorkbook.Name Then
For Each ws In wb.Worksheets
For Each c In ws.Range("C2:C10")
If IsNumeric(c.Value) Then
Select Case c.Value
Case Is < 0
c.Offset(0, 1).Formula = "=ABS(" & c.Address & ")"
Case 0
c.Offset(0, 1).Formula = "=AVERAGE(C2:C10)"
Case Is > 100
c.Offset(0, 1).Formula = "=MAX(C2:C10)"
Case Else
c.Offset(0, 1).Formula = "=" & c.Address & "*2"
End Select
End If
Next c
Next ws
End If
Next wb
End Sub
VB👉 複数ブックにまたがって「負=ABS」「0=AVERAGE」「100以上=MAX」「その他=2倍」の数式を自動入力します。
ポイント
- 複数ブックをループ →
For Each wb In Application.Workbooks - 特定ブックだけ対象 →
If wb.Name = "Book1.xlsx"のように条件を追加 - 複数条件 →
IfやSelect Caseを使う - 数式を文字列として組み立てる →
"=ABS(" & c.Address & ")"のように結合
練習課題
- 開いているすべてのブックの「B列」を対象にして、負の数は
ABS、正の数はROUNDを入れる - 特定ブックだけを対象にして、値が100以上なら「平均」、それ以外は「合計」を入れる
- 複数条件を組み合わせて「負=ABS」「0=AVERAGE」「正=2倍」「100以上=MAX」にする
こうした仕組みを作ると、複数ブックにまたがって条件付きで数式を自動入力する便利ツールが完成します。

