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
を活用すれば、特定の文字列を含むセルに対して、値を変更せずに背景色だけを一括で適用することができます。
業務報告や一覧表、問い合わせデータなど、特定キーワードの可視化が必要な場面で非常に役立ちます。
この方法を応用すれば、複数のキーワードごとに色分けをしたり、特定の列にだけ処理を限定したりと、柔軟な運用が可能です。ぜひご活用ください。