ここでは 「セルの内容を見て、その値に応じて数式を自動で変える」 応用例を紹介します。これは「条件付きで数式を入れる」イメージです。
応用例1: 値が正なら掛け算、負なら足し算
Sub 動的に数式を変える1()
Dim c As Range
For Each c In Range("B2:B6")
If IsNumeric(c.Value) Then
If c.Value >= 0 Then
' 正の数なら A列の値×2
c.Offset(0, 1).Formula = "=A" & c.Row & "*2"
Else
' 負の数なら A列の値+10
c.Offset(0, 1).Formula = "=A" & c.Row & "+10"
End If
End If
Next c
End Sub
VB👉 B列の値を見て、C列に「掛け算」か「足し算」の数式を自動で入れます。
応用例2: 文字列に応じて数式を変える
Sub 動的に数式を変える2()
Dim c As Range
For Each c In Range("A2:A6")
Select Case c.Value
Case "売上"
c.Offset(0, 1).Formula = "=SUM(B2:B10)"
Case "平均"
c.Offset(0, 1).Formula = "=AVERAGE(B2:B10)"
Case "最大"
c.Offset(0, 1).Formula = "=MAX(B2:B10)"
Case Else
c.Offset(0, 1).Value = "対象外"
End Select
Next c
End Sub
VB👉 A列に「売上」「平均」「最大」と書いてあると、それぞれに応じた数式をB列に自動入力します。
応用例3: セルの値に応じて参照範囲を変える
Sub 動的に数式を変える3()
Dim c As Range
For Each c In Range("D2:D6")
If IsNumeric(c.Value) Then
' 値が1なら列Bを参照、2なら列Cを参照
If c.Value = 1 Then
c.Offset(0, 1).Formula = "=B" & c.Row & "*10"
ElseIf c.Value = 2 Then
c.Offset(0, 1).Formula = "=C" & c.Row & "*10"
End If
End If
Next c
End Sub
VB👉 D列の値が「1」ならB列を参照、「2」ならC列を参照して計算式を入れます。
ポイントまとめ
- セルの値を判定 →
IfやSelect Caseを使う - 数式を文字列として組み立てる →
"=A" & c.Row & "*2"のように結合 - 結果を入れる場所をずらす →
c.Offset(0, 1)で隣の列に数式を入れる
こうした仕組みを使うと、「セルの内容に応じて自動的に数式を変える」=動的なレポートや条件付き計算が作れます。
