Excelでは、セルの背景色によってステータスや分類を表現することがあります。
しかし、色付きのセルだけをまとめて抽出するには手作業では限界があります。
本記事では、VBAを使って「背景色が設定されているすべてのセル」を検索し、順にコピーして抽出する方法をご紹介いたします。
目次
想定する活用場面
- 背景色でマークされたセルだけを別シートや横並びに抽出したい。
- 見た目によるデータ分類をプログラムで扱いたい。
- 色付きセルを条件に集計・確認を行いたい。
VBAコードの例
以下のコードでは、範囲 D2:F8
の中から背景色(塗りつぶし)が設定されているセルだけを探し出し、セル J2
から右方向に順にコピーしていきます。
Sub ExtractColoredCells()
Dim searchArea As Range
Dim foundCell As Range
Dim firstFound As Range
Dim pasteCell As Range
' 検索対象の範囲を指定
Set searchArea = ActiveSheet.Range("D2:F8")
Set pasteCell = ActiveSheet.Range("J2")
' 検索条件の初期化と設定(塗りつぶしされているセルを対象)
Application.FindFormat.Clear
Application.FindFormat.Interior.Pattern = xlPatternSolid
' 最初の該当セルを検索
Set foundCell = searchArea.Find(What:="", SearchFormat:=True)
If foundCell Is Nothing Then
MsgBox "背景色が設定されたセルは見つかりませんでした。", vbInformation
Exit Sub
End If
Set firstFound = foundCell
Do
foundCell.Copy Destination:=pasteCell
Set pasteCell = pasteCell.Offset(0, 1)
Set foundCell = searchArea.Find(What:="", After:=foundCell, SearchFormat:=True)
Loop While Not foundCell Is Nothing And foundCell.Address <> firstFound.Address
End Sub
コードのポイント解説
要素 | 内容 |
---|---|
Application.FindFormat.Clear | 検索条件の初期化 |
Application.FindFormat.Interior.Pattern = xlPatternSolid | 単色の塗りつぶしがあるセルを対象にする設定 |
searchArea.Find(..., SearchFormat:=True) | 書式を検索対象に含めるための指定 |
Copy Destination:=pasteCell | 該当セルの内容を別セルへコピー |
注意点
- 条件付き書式で色が変わっている場合、この方法では検索できません。
- 検索は「塗りつぶし色が設定されている」ことが条件であり、白色や無地のセルは無視されます。
- コピー先が横方向に進むため、大量データのときはスペースにご注意ください。
まとめ
VBAを使えば、背景色が設定されているセルだけを簡単に抽出できます。
条件付きでハイライトされたセルや、目視で確認が難しいセルも正確に検出できるため、業務効率の向上に大きく貢献します。
今回ご紹介した方法をベースに、抽出結果を別シートへ貼り付けたり、色別に分類したりするなど、応用も可能です。
ぜひお仕事や日常業務に取り入れてみてください。