見やすい表にするには「色分け」が便利
Excelで大量のデータを扱っていると、どの行を見ているのかわからなくなることがあります。
そんなときに便利なのが、「1行おきに色を塗る」デザインです。
いわゆる「ストライプ状」の表にすることで、視認性がぐっと向上します。
この作業を毎回手動で行うのは大変ですが、VBAを使えば一瞬で色分けすることができます。
どんな処理をするかを整理してみよう
まず、今回やりたいことはとてもシンプルです。
- A列にデータが入っているとする
- その行数にあわせて、1行おき(偶数行)に色を塗る
このルールをVBAで実装していきましょう。
マクロの基本コードと解説
さっそくコードを見てみましょう。
Sub ColorAlternateRows()
Dim i As Long
Dim lastRow As Long
' A列の最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 2行目から最終行まで、2行おきに色を塗る
For i = 2 To lastRow Step 2
Rows(i).Interior.Color = RGB(230, 240, 255)
Next i
End Sub
lastRowは A列の最終行番号を取得しています。Step 2によって、「2行目、4行目、6行目…」と2行ごとに処理します。- 各対象行に対して
Interior.Colorプロパティを使い、色を塗っています。
色は RGB(230, 240, 255) として、薄い青系の色を指定しました。
このRGBの値を変更すれば他の色にすることができます。
応用パターンを考えてみよう
ここでは2つのよくある要望に対応するコードをご紹介します。
1. 色を塗る範囲を列単位に制限する
全行ではなく「A列からD列だけに色をつけたい」といった場合は、次のように書きます。
Sub ColorAlternateRange()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow Step 2
Range(Cells(i,1),Cells(i,4)).Interior.Color = RGB(255, 255, 200)
Next i
End Sub
このコードでは、2行目、4行目…の「A〜D列だけ」に色を塗るようになっています。
2. すでに塗られた色をクリアしたい場合
毎回マクロを実行すると、色が塗りっぱなしになってしまいます。
まずは一旦色を消してから塗り直す、という流れも取り入れてみましょう。
Sub ResetAndColor()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 色をすべてクリア
Range(Cells(2,1),Cells(lastRow,4)).Interior.ColorIndex = xlNone
' 偶数行に色を再度塗る
For i = 2 To lastRow Step 2
Range("A" & i & ":D" & i).Interior.Color = RGB(220, 255, 220)
Next i
End Sub
このようにすれば、何度実行しても同じ見た目を保つことができます。
実装するメリットを整理しよう
「1行おきに色を塗る」処理は、見た目のためだけではありません。
実務におけるメリットを整理しておきましょう。
主なメリット
- 見やすさアップ
行の境界がはっきりし、データを見失いにくくなる - 作業ミスの防止
同じような数字が並んでいても、行を取り違えにくい - 報告書・印刷物でも好印象
単調な表よりも、軽く色が入っている方が見た目が良い - VBAで自動化すれば安定して毎回同じ結果に
手作業による塗りムラがなくなる
まとめ
マクロというと「自動で動く=計算」や「値の転記」のイメージが強いですが、見た目を整える処理も立派な自動化の一部です。
今回のように「1行おきに色を塗る」処理は、小さいながらも実務ではとても役に立ちます。
マクロでちょっとしたデザインの工夫ができると、作業効率も見た目の印象も、ぐっとレベルアップします。
