Excel VBAで特定の文字列を含むセルに色を自動で付ける方法|ReplaceFormatの活用術

Excelで特定のキーワードが含まれるセルを目立たせたいとき、フィルターや条件付き書式を使うのも一つの手段ですが、VBAを使えば一括で色を付ける処理を自動化できます。
本記事では、特定の文字列を含むセルに色をつける方法として、ReplaceFormat機能を使った簡潔かつ強力なVBAコードをご紹介いたします。


目次

この手法が役立つ場面

  • 名前やキーワードを含むセルを一目でわかるように色分けしたい。
  • 手動での塗りつぶし作業を省略し、処理の自動化を実現したい。
  • 条件付き書式とは別に、手動で制御できる色づけロジックを構築したい。

VBAコードの例

以下のコードでは、セル範囲 B2:F11 において「山田」という文字列を含むセルすべてに、背景色として黄色(ColorIndex = 6)を自動的に設定します。

Sub HighlightCellsContainingKeyword()

    Dim keyword As String
    keyword = "山田"

    Application.ReplaceFormat.Clear
    Application.ReplaceFormat.Interior.ColorIndex = 6 ' 黄色に設定

    Range("B2:F11").Replace _
        What:=keyword, _
        Replacement:="", _
        LookAt:=xlPart, _
        SearchFormat:=False, _
        ReplaceFormat:=True

End Sub

各構文の補足解説

項目内容
Application.ReplaceFormat.Clear直前の置換書式を初期化します。
Application.ReplaceFormat.Interior.ColorIndex = 6塗りつぶし色(ここでは黄色)を設定します。
.Replace(..., ReplaceFormat:=True)指定キーワードを含むセルに、指定の書式だけを適用します(値は置き換えず)。

Replacement:="" で値は変更しない

置換後の値に空文字列 "" を指定していますが、これはセルの内容を変更せず、書式だけを適用するためのテクニックです。
ReplaceFormat:=True を指定することで、検索にヒットしたセルに対して、ReplaceFormat で指定した書式が反映されます。


注意点

  • この手法は**文字列の部分一致(LookAt:=xlPart)**に基づいています。完全一致にしたい場合は xlWhole を使用してください。
  • 検索対象が大きすぎると処理に時間がかかる場合がありますので、必要な範囲に限定するのがおすすめです。
  • セル内の数式にはヒットしません。表示値を検索対象とします。

まとめ

VBAのReplaceメソッドとReplaceFormatを活用すれば、特定の文字列を含むセルに対して、値を変更せずに背景色だけを一括で適用することができます。
業務報告や一覧表、問い合わせデータなど、特定キーワードの可視化が必要な場面で非常に役立ちます。

この方法を応用すれば、複数のキーワードごとに色分けをしたり、特定の列にだけ処理を限定したりと、柔軟な運用が可能です。ぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次