Excel VBA | 離れたセルをまとめて処理

VBA
スポンサーリンク

ここでは 「セルの内容を見て、その値に応じて数式を自動で変える」 応用例を紹介します。これは「条件付きで数式を入れる」イメージです。


応用例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列を参照して計算式を入れます。


ポイントまとめ

  • セルの値を判定IfSelect Case を使う
  • 数式を文字列として組み立てる"=A" & c.Row & "*2" のように結合
  • 結果を入れる場所をずらすc.Offset(0, 1) で隣の列に数式を入れる

こうした仕組みを使うと、「セルの内容に応じて自動的に数式を変える」=動的なレポートや条件付き計算が作れます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました