ここからは少し応用編として、セルの番地を使って自動的に数式を作る方法と、複数範囲をまとめて条件付き処理する方法を初心者向けに丁寧に解説しますね。
セルの番地を使って自動的に数式を作る方法
セルの位置情報を使うと、行や列に応じて数式を自動生成できます。
基本の仕組み
c.Row→ セルの行番号(例: A3なら「3」)c.Column→ セルの列番号(例: C列なら「3」)c.Address→ セルの番地(例: 「$C$3」)
例1: 行番号を使って数式を作る
Sub 行ごとに数式を入れる()
Dim c As Range
For Each c In Range("B2:B6")
c.Formula = "=A" & c.Row & "*2"
Next c
End Sub
VB👉 B列に「A列の値×2」という数式が、行ごとに自動で入ります。
例2: 番地をそのまま使う
Sub 番地を表示する()
Dim c As Range
For Each c In Range("C2:C6")
c.Value = c.Address
Next c
End Sub
VB👉 各セルに「$C$2」「$C$3」…と自分の番地が表示されます。
複数範囲をまとめて条件付き処理する方法
複数の範囲をまとめて指定し、条件に応じて処理を分けることができます。
例1: 複数範囲をまとめて色分け
Sub 複数範囲を条件付きで色分け()
Dim c As Range
For Each c In Range("A1:A5, C1:C5, E1:E5")
If IsNumeric(c.Value) Then
If c.Value >= 50 Then
c.Interior.Color = RGB(200, 255, 200) ' 緑
Else
c.Interior.Color = RGB(255, 200, 200) ' 赤
End If
End If
Next c
End Sub
VB👉 A列・C列・E列の値をまとめてチェックし、50以上なら緑、未満なら赤に。
例2: 複数範囲を「Areas」で分けて処理
Sub 複数範囲をエリアごとに処理()
Dim r As Range, a As Range
Set r = Range("A1:A5, C1:C5")
For Each a In r.Areas
a.Interior.Color = RGB(220, 220, 255) ' エリアごとに色付け
Next a
End Sub
VB👉 Areasを使うと「A1:A5」と「C1:C5」をそれぞれ独立した範囲として扱えます。
応用のアイデア
- 自動レポート作成: 行番号を使って「売上×税率」などの数式を自動生成
- 条件付き書式の代替: VBAで「値が負なら赤背景」などを一括処理
- 複数範囲の一括チェック: 離れた列や行をまとめて判定して色付けや数式入力
練習課題
- 「行番号に応じて違う掛け算式を入れる」コードを書いてみる
- 「複数範囲をまとめて、空欄なら黄色に塗る」処理を作ってみる
- 「セルの番地を使って、隣のセルを参照する数式」を自動生成してみる
👉 ここまでで「セルの位置情報を使った数式生成」と「複数範囲の条件付き処理」の基本がわかりました。
