Excel VBAで特定の色を持つセルをフィルタする方法

Excelの処理を自動化する手段としてVBA(Visual Basic for Applications)がよく使用されます。特に、特定の色を持つセルをフィルタするような業務処理は、人力で行うには時間と労力がかかります。この記事では、Excel VBAを使用して特定の色を持つセルを効率的にフィルタする手法について解説します。

目次

必要な環境

– Excel 2016以降
– VBA環境が利用可能なPC

環境設定

VBAを利用する前に、Excelのオプションで「開発」タブを有効にする必要があります。

'開発タブを表示させる
'Excel → ファイル → オプション → リボンのユーザー設定 → 開発(チェックを入れる)

特定の色を持つセルをフィルタする基本的なコード

Sub FilterCellsByColor()
    Dim cell As Range
    Dim targetColor As Long
    ' 目的の色コード(例:赤)
    targetColor = RGB(255, 0, 0)
    
    ' A1からA100までの範囲を設定
    For Each cell In Range("A1:A100")
        ' 色が一致する場合
        If cell.Interior.Color = targetColor Then
            cell.EntireRow.Hidden = False
        Else
            cell.EntireRow.Hidden = True
        End If
    Next cell
End Sub

コード解説

1. `Dim cell As Range`と`Dim targetColor As Long`で変数を宣言します。
2. `targetColor = RGB(255, 0, 0)`で赤色のRGBコードを指定します。
3. `For Each cell In Range(“A1:A100”)`で対象範囲を指定します。
4. `If cell.Interior.Color = targetColor Then`で色が一致するか確認します。
5. `cell.EntireRow.Hidden = False`で一致した場合は行を非表示にします。

応用例

応用例1: 複数の色に対応

Sub FilterCellsByMultipleColors()
    Dim cell As Range
    Dim targetColors As Collection
    Set targetColors = New Collection
    ' 複数の色コードを追加(例:赤と青)
    targetColors.Add RGB(255, 0, 0)
    targetColors.Add RGB(0, 0, 255)
    
    ' 省略(基本的なコードと同じ処理)
End Sub

応用例2: シートを跨いでフィルタ

Sub FilterAcrossSheets()
    Dim ws As Worksheet
    ' 全シートで処理
    For Each ws In ThisWorkbook.Worksheets
        ' 省略(基本的なコードと同じ処理)
    Next ws
End Sub

応用例3: ユーザーから色を選択させる

Sub FilterByUserSelectedColor()
    Dim targetColor As Long
    ' カラーダイアログから色を選択
    targetColor = Application.Dialogs(xlDialogEditColor).Show
    ' 省略(基本的なコードと同じ処理)
End Sub

まとめ

Excel VBAを使用すると、特定の色を持つセルを手軽にフィルタできます。基本的なコードから応用例まで、さまざまなケースでの対応方法を解説しました。この機能を活用して、日々の業務効率化を図ってください。

コメント

コメントする

目次