条件付き書式をVBAで使うとき、実務では 複数列をまとめて対象にしたい 場面や、複数条件を組み合わせて適用したい 場面がよくあります。
GUI操作では煩雑になりがちですが、VBAを使えば効率よく一括設定できます。
1. 複数列を一度に対象にする方法
例:A列とC列の値が100以上なら背景を黄色にする
Sub 条件付き書式_複数列()
Dim rng As Range
'A列とC列を対象範囲に指定
Set rng = Union(Range("A2:A20"), Range("C2:C20"))
'既存の条件付き書式を削除
rng.FormatConditions.Delete
'条件付き書式を追加(100以上 → 黄色背景)
rng.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlGreaterEqual, _
Formula1:="100"
rng.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
👉 Union関数 を使えば、離れた列や範囲をまとめて指定できます。
2. 複数条件を一括で適用する方法
例:B列に対して「50未満なら赤文字」「200以上なら緑背景」
Sub 条件付き書式_複数条件()
Dim rng As Range
Set rng = Range("B2:B20")
'既存の条件付き書式を削除
rng.FormatConditions.Delete
'条件1:50未満 → 赤文字
rng.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlLess, _
Formula1:="50"
rng.FormatConditions(1).Font.Color = RGB(255, 0, 0)
'条件2:200以上 → 緑背景
rng.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlGreaterEqual, _
Formula1:="200"
rng.FormatConditions(2).Interior.Color = RGB(0, 255, 0)
End Sub
👉 条件は 追加された順番 に評価されます。
もし条件が重なる場合は、先に追加された条件が優先される点に注意しましょう。
3. 複数列 × 複数条件を組み合わせる実例
例:A列とC列を対象に「100未満は赤文字」「200以上は黄色背景」
Sub 条件付き書式_複数列複数条件()
Dim rng As Range
'複数列をまとめて指定
Set rng = Union(Range("A2:A20"), Range("C2:C20"))
'既存の条件付き書式を削除
rng.FormatConditions.Delete
'条件1:100未満 → 赤文字
rng.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlLess, _
Formula1:="100"
rng.FormatConditions(1).Font.Color = RGB(255, 0, 0)
'条件2:200以上 → 黄色背景
rng.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlGreaterEqual, _
Formula1:="200"
rng.FormatConditions(2).Interior.Color = RGB(255, 255, 0)
End Sub
👉 実務では「基準値に応じた判定」「複数列まとめてチェック」という場面が非常に多いです。
4. 実務での活用例
- 売上データで「目標未達は赤文字」「達成は緑背景」
- 複数列の数値をまとめてチェックし、一定条件で強調表示
- 成績管理で「60点未満は赤」「90点以上は青」といった色分け
5. まとめ
- 複数列は
Union
を使って範囲をまとめて指定できる - 複数条件は
FormatConditions.Add
を繰り返し追加する - 条件の評価は 追加順に行われる ため、優先度を意識する
- 実務では「複数列 × 複数条件」の組み合わせがよく使われる
コメント