の記事で解決できる3つの疑問
A子さん売上が80点以上なら緑、それ以下なら色を変えたいんだけど
条件付き書式って限界ない?
VBAとかって難しいのかな…?
Excelの「条件付き書式」は便利ですが、細かい条件や複雑なルールを設定したい場合、かえってややこしくなることも。
そんなとき、VBA(マクロ)を使うと自由自在に色を変えられるのです。
結論:条件付き書式でもできるけど、VBAの方が柔軟で実務向き
たとえば「80点以上なら緑、60~79点なら黄色、それ未満なら赤」といった条件がある場合、条件付き書式では限界があります。
VBAを使えば、複数条件・複数セル範囲にも対応できるため、実務でもかなり活用されています。
Excel関数での限界とVBAの違い
関数や条件付き書式では、一つひとつ設定が必要です。複雑な条件が多いと、管理が大変になります。
また、関数だけでは「セルの色を変える」といった操作はできません。
一方VBAでは、If文とセルの操作を組み合わせることで、**「条件ごとに色を自動で変更する」**処理が簡単に実現できます。
基本の構文:条件によってセルの色を変える
VBAでは、条件を If 文で判定し、Interior.Color を使ってセルの色を変更します。
If Cells(行, 列).Value >= 条件 Then
Cells(行, 列).Interior.Color = RGB(赤, 緑, 青)
End If
例えば、100点満点のテストで80点以上は緑にしたい場合:
If Cells(2, 1).Value >= 80 Then
Cells(2, 1).Interior.Color = RGB(0, 255, 0) ' 緑
End If
実践コード:80点以上なら緑、60~79点なら黄色、それ未満なら赤にする
たとえば、A列に点数が10行分入っているとして、それぞれの行のセル色を変えたいときは以下のように書きます。
Sub 色を変えるテスト()
Dim i As Integer
For i = 2 To 11 ' A2〜A11
If Cells(i, 1).Value >= 80 Then
Cells(i, 1).Interior.Color = RGB(0, 255, 0) ' 緑
ElseIf Cells(i, 1).Value >= 60 Then
Cells(i, 1).Interior.Color = RGB(255, 255, 0) ' 黄
Else
Cells(i, 1).Interior.Color = RGB(255, 0, 0) ' 赤
End If
Next i
End Sub
このマクロを実行することで、指定した点数に応じてセルの背景色が変わります。
色を変えるときの注意点(RGBとColorIndex)
VBAで色を変える方法には主に2つあります。
| 方法 | 特徴 |
|---|---|
ColorIndex | Excelのパレット番号で色を指定(例:3 = 赤) |
RGB(赤, 緑, 青) | RGB値で自由に色を指定(例:RGB(255, 0, 0) = 赤) |
初心者には、RGBのほうが直感的でおすすめです。Webで「RGB 色 一覧」と検索すると参考になります。
まとめ:条件分岐×セル操作=VBAの見せ場!
VBAを使えば、複雑な条件に応じてセルの色を自動で変更する処理が可能です。
- Excelの条件付き書式では限界がある
- VBAなら「条件+見た目」のカスタマイズが自由自在
If文+Interior.Colorを使えば簡単に実装できる
「データの傾向をパッと見で把握したい」という実務シーンにこそ、VBAによる色分け処理は力を発揮します。
関連記事リンク
- 【初心者向け】VBAでIf文を使った条件分岐の基本を解説
- 【初心者向け】変数とは?Dimによる宣言方法
- 【初心者向け】VBAで型を指定しないとどうなる?落とし穴とその回避方法

コメント