Excelで進捗管理やタスク管理をしていると、こんなことはありませんか?
- 「完了」「未処理」が分かりにくい
- 色分けしたいが手作業が面倒
- ステータスごとに自動で色を変えたい
このような場合は、VBAでセルの値に応じて行を色分けするのがおすすめです。
一度作ればワンクリックで更新できるので、実務でも非常に便利です。
この記事でできること
- セルの値に応じて行を色分けできる
- ステータス別の色設定ができる
- 複数条件で色を変えられる
- 進捗管理表に活用できる
基本コード(コピペOK)
B列のステータスに応じて、行全体を色分けするコードです。
Option Explicit
Sub ColorRowsByStatus()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Set ws = ActiveSheet
' B列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
' 2行目から処理(1行目は見出し)
For i = 2 To lastRow
Select Case ws.Cells(i, "B").Value
Case "未処理"
ws.Rows(i).Interior.Color = RGB(255, 200, 200)
Case "進行中"
ws.Rows(i).Interior.Color = RGB(255, 255, 150)
Case "完了"
ws.Rows(i).Interior.Color = RGB(200, 200, 200)
Case Else
ws.Rows(i).Interior.ColorIndex = xlNone
End Select
Next i
MsgBox "行の色分けが完了しました。", vbInformation
End Sub
コードのポイント解説
① 最終行の取得
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
B列の最終行を自動取得します。
データ量が変わっても対応できます。
② Select Caseで条件分岐
Select Case ws.Cells(i, "B").Value
セルの値に応じて処理を分けています。
③ 行全体を色付け
ws.Rows(i).Interior.Color = RGB(...)
行全体に色をつけることで視認性が向上します。
応用①:特定列だけ色付けする
行全体ではなく、B列だけ色付けする場合はこちらです。
ws.Cells(i, "B").Interior.Color = RGB(255, 200, 200)
応用②:部分一致で色分けする
「完了済み」「処理完了」などにも対応する方法です。
If InStr(ws.Cells(i, "B").Value, "完了") > 0 Then
ws.Rows(i).Interior.Color = RGB(200, 200, 200)
End If
応用③:色をリセットしてから実行する
前回の色が残らないようにする場合はこちらです。
ws.Cells.Interior.ColorIndex = xlNone
応用④:複数条件を組み合わせる
If ws.Cells(i, "B").Value = "未処理" And ws.Cells(i, "C").Value = "重要" Then
ws.Rows(i).Interior.Color = RGB(255, 0, 0)
End If
実務での活用例
- タスク管理表(未処理・進行中・完了)
- 問い合わせ対応管理
- 案件進捗一覧
- ステータス管理表
色分けするだけで、情報の把握スピードが大幅に向上します。
よくあるエラーと対処法
① 色が変わらない
セルの値が完全一致していない可能性があります。
スペースや全角に注意してください。
② コードは正しいのにエラーになる
コピー時に次の問題が発生することがあります。
- 全角記号(=、>など)
- 見えない特殊文字
その場合は、該当行を削除して手入力すると解決することがあります。
まとめ
- セルの値に応じて色分けはVBAで簡単にできる
- Select Caseで分岐すると分かりやすい
- 行全体・セル単体どちらも対応可能
- 進捗管理や業務一覧で非常に便利
色分けは「見やすさ」と「作業効率」を大きく改善します。
このマクロを使えば、Excelの管理表が一気に使いやすくなります。


コメント