Excel VBAでは、セルの値だけでなく「セルの色」を条件として比較し、自動着色することも可能です。特に業務用シートでは、色による管理を行っているケースも多く、条件に応じて別表へ色を反映させたい場面があります。この記事では、2つの表を比較し、特定色のセルだけを別表へ自動着色するVBAマクロの作り方を、Excel 2016対応でわかりやすく解説します。
今回実現したい処理内容
今回の例では、4列10行の表Aと表Bを比較します。
| 項目 | 内容 |
|---|---|
| 表A | 青色セルが存在する |
| 表B | 無着色セルが存在する |
| 条件 | A表が青、かつB表が無着色ならB表を黄色にする |
なお、B表の数字や罫線は消さず、セルの背景色のみ変更します。
完成するVBAマクロコード
以下のコードを標準モジュールへ貼り付けることで実行できます。
Sub CompareColorTables() Dim ws As Worksheet Dim startCell As Range Dim cellA As Range Dim cellB As Range Dim r As Long Dim c As Long Set ws = ActiveSheet ' A表左上セルを取得 Set startCell = ActiveCell ' 4列×10行を比較 For r = 0 To 9 For c = 0 To 3 Set cellA = startCell.Offset(r, c) ' B表は2列空きなので+6列 Set cellB = startCell.Offset(r, c + 6) ' Aが青(ColorIndex 33) ' Bが無着色 If cellA.Interior.ColorIndex = 33 And _ cellB.Interior.ColorIndex = xlNone Then ' Bを黄色(ColorIndex 27) cellB.Interior.ColorIndex = 27 End If Next c Next r MsgBox "処理が完了しました。"End Sub
マクロの使い方
まず、ExcelでAlt + F11を押し、VBE(Visual Basic Editor)を開きます。
次に「挿入」→「標準モジュール」を選択し、コードを貼り付けます。
その後、Excel画面へ戻り、A表の左上セルをクリックしてからマクロを実行します。
A表左上を基準にして処理が始まるため、クリック位置が重要です。
なぜB表は+6列なのか
今回の条件では、A表とB表の間に2列空いています。
さらにA表自体が4列なので、B表は以下の位置になります。
| 内容 | 列数 |
|---|---|
| A表 | 4列 |
| 空白列 | 2列 |
| 合計移動量 | 6列 |
そのため、Offset(r, c + 6)でB表位置を取得しています。
ColorIndexとは?
Excel VBAでは、セル色をColorIndexで管理できます。
| ColorIndex | 色 |
|---|---|
| 33 | 青系 |
| 27 | 黄色系 |
| xlNone | 塗りつぶし無し |
Excelのテーマや環境によって多少色味が異なる場合があります。
罫線や数字が消えない理由
今回のコードでは変更しているのは以下のみです。
cellB.Interior.ColorIndex = 27
Interiorは「セル背景色」のみを変更します。
そのため、文字・数値・罫線・数式などには一切影響しません。
応用するとできること
この仕組みを応用すると、さまざまな自動色分け処理が可能になります。
- 進捗管理表の色反映
- 在庫状況の可視化
- 条件付き警告表示
- 比較表の差分マーキング
- 工程管理シート作成
特にColorIndex比較は、業務用Excelで非常によく使われます。
処理範囲を変更したい場合
現在は4列10行固定です。
For r = 0 To 9For c = 0 To 3
例えば20行にしたい場合は以下のように変更します。
For r = 0 To 19
列数も同様に調整できます。
実行前の注意点
マクロ実行前にはファイルをバックアップしておくと安心です。
また、Excelのマクロ設定が無効になっている場合は、マクロを有効化する必要があります。
まとめ
Excel VBAでは、セルの色を条件として比較し、自動で別セルへ色を反映させることができます。
今回のマクロでは、A表の青セルとB表の無着色セルが重なった位置のみ、B表を黄色に着色する処理を実現しました。
ColorIndexを使った色判定は、Excel業務自動化で非常に便利な技術です。基本を覚えると、複雑な比較シートや管理表にも応用できるようになります。


コメント