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

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
