Excelで色を付けて管理しているデータを扱うとき、手作業で一覧を作ると大変ではありませんか?
例えばこんなケースがあります。
- 色付きのセルだけを抽出して一覧で見たい
- 赤色は注意データ、緑色は完了データなど、色で意味づけして管理している
- 色のついたセルだけを別シートにまとめたい
Excelの標準機能だけでやると手間がかかりますが、VBAを使えば一瞬で抽出・一覧化この記事では、指定の色だけを抽出して、別シートに一覧として出力する VBA マクロを初心者にも分かりやすく解説します。
この記事でできること
- 指定した色付きセルだけを抽出する
- 色付きセルの位置・値を一覧シートにまとめる
- 色を元に色分けしてセルをコピーする
- 業務でよくある「色管理」を VBA で楽にする
色付きセル抽出の基本コード(コピペOK)
まずは、次のコードを標準モジュールに貼り付けてください。
このコードは「アクティブシートの UsedRange の中から指定色だけを抽出」して、 新しい一覧シートに出力するものです。
Option Explicit
Sub ExtractByColor()
Dim ws As Worksheet
Dim destWs As Worksheet
Dim cell As Range
Dim nextRow As Long
Dim colorIndex As Long
' ===== 抽出したい色インデックスを指定 =====
' 例:黄色 = 6、赤 = 3 など
colorIndex = 6
Set ws = ActiveSheet
' 出力先シートを準備
On Error Resume Next
Set destWs = Worksheets("色抽出一覧")
On Error GoTo 0
If destWs Is Nothing Then
Set destWs = Worksheets.Add
destWs.Name = "色抽出一覧"
Else
destWs.Cells.Clear
End If
' ヘッダー作成
destWs.Range("A1").Value = "元シート"
destWs.Range("B1").Value = "セル位置"
destWs.Range("C1").Value = "値"
nextRow = 2
' UsedRange をループ
For Each cell In ws.UsedRange
If cell.Interior.ColorIndex = colorIndex Then
destWs.Cells(nextRow, 1).Value = ws.Name
destWs.Cells(nextRow, 2).Value = cell.Address
destWs.Cells(nextRow, 3).Value = cell.Value
nextRow = nextRow + 1
End If
Next cell
MsgBox "完了!色付きセルを一覧化しました。", vbInformation
End Sub
色インデックスとは?(初心者向け解説)
VBA では、セルの背景色は ColorIndex という番号で扱われます。
例えば次のような色番号があります(代表例)。
- 黄:6
- 赤:3
- 緑:4
- 水色:36
色を指定したいときは、この colorIndex = 6 の箇所を書き換えてください。
Excel 上で色を設定して確かめると便利です。
実行手順(初心者でも簡単)
- 対象となるシートを選択する
- Alt + F11 で VBA エディタを開く
- 挿入 → モジュール で新しい標準モジュールを作る
- 上のコードを貼り付ける
- マクロを実行する(F5 など)
実行が終わると、新しいシート「色抽出一覧」ができて、 指定色のセル情報(元シート・位置・値)が一覧になっています。
応用①:複数色を対象にする方法
例えば黄色・赤色・緑色のいずれかの色を抽出したい場合は、 次のように色判定を複数に変更できます。
If cell.Interior.ColorIndex = 6 Or _
cell.Interior.ColorIndex = 3 Or _
cell.Interior.ColorIndex = 4 Then
' 一致したら一覧に記録
End If
こうすると、複数の色をまとめて抽出できます。
応用②:色ごとに塗りつぶしてコピーする
一覧シートにコピーするとき、色もそのまま引き継ぎたい場合は次のように書きます。
destWs.Cells(nextRow, 3).Value = cell.Value
destWs.Cells(nextRow, 3).Interior.Color = cell.Interior.Color
値だけでなく色もコピーされるので、一覧に色で視覚的な区別がつきます。
実務でよくある活用シーン
- 色で管理されたデータ(色が意味を持つ)の抽出
- 条件付き書式では対応できない手作業の色分けを集計
- 色×他の条件の複合条件で集計前処理に使う
まとめ:色管理をVBAで簡単に一覧化しよう
Excelのセルに色で意味づけしているとき、VBA を使えば 手作業では大変な色抽出を一発で実行できます。 これは、条件付き書式ではできない「色そのもので処理する」パワフルなコードです。
ぜひ「色で管理しているシート」を対象に実行してみてください。 作業時間が大幅に短縮できます!


コメント