Excelで大量のデータから特定の文字列を探すとき、目視で探したり「条件付き書式」を使ったりしていませんか?
毎回手動で色を付けていると、時間も手間もかかってしまいますよね。
今回は、検索キーワードにヒットしたセルに自動で色を付けるExcelマクロ(VBAをご紹介します。
一度設定すれば、毎回ワンクリックで色付けができるようになります!
ここでいつもならプログラムを自分で書いていくのですが、今回はChatGPTにお願いしてみます。
ChatGPTにプログラム作成の依頼をする
ChatGPTを開いて、入力欄に以下のような質問をしました。
すると以下のような返答が返ってきました。
はい、可能です!
以下は、Excelのマクロ(VBA)で、指定した文字列を検索して、ヒットしたセルの文字や背景に色を付ける処理のサンプルです。
機能概要
- シート全体 or 範囲内を対象に
- 指定したキーワードを検索し
- 該当セルに「背景色」や「文字色」を付ける
マクロコード(例:全シート対象、背景黄色、文字赤)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub 色を付けて検索() Dim 検索文字列 As String Dim 対象セル As Range Dim 検索範囲 As Range Dim ヒットセル As Range Dim 最終行 As Long Dim 最終列 As Long ' 検索文字列を入力 検索文字列 = InputBox("検索したい文字列を入力してください", "検索文字列入力") If 検索文字列 = "" Then Exit Sub ' 現在のシートのUsedRangeを検索対象に Set 検索範囲 = ActiveSheet.UsedRange ' 検索範囲のセルをループ For Each 対象セル In 検索範囲 If InStr(1, 対象セル.Value, 検索文字列, vbTextCompare) > 0 Then ' 背景色を黄色、文字色を赤に 対象セル.Interior.Color = RGB(255, 255, 150) 対象セル.Font.Color = RGB(255, 0, 0) End If Next 対象セル MsgBox "検索と色付けが完了しました。", vbInformation End Sub |
使い方
- Excelを開く
Alt + F11
でVBAエディタを開く挿入
→標準モジュール
を選択- 上記コードを貼り付け
F5
で実行(もしくはExcelにボタンを配置して実行)
カスタマイズ例
- 特定の列だけを対象にしたい →
Set 検索範囲 = Range("B:B")
などに変更 - 完全一致にしたい →
InStr(...)
をStrComp(..., ..., vbTextCompare) = 0
に変更 - セル全体ではなく文字単位で色をつけたい → セル内の部分文字列のフォーマット変更が必要(対応可能)
ご希望に応じて以下のバリエーションも作成できます
- 検索結果を別シートに一覧出力する
- 結果をフィルタして表示する
- 検索語を複数に対応させる(AND / OR)
- セルのコメントとして結果を表示する
必要があれば、さらに応用バージョンもご提案いたします!
↑ここまでがChatGPTの回答です。
マクロを動かしてみる
上記のVBAコードをコピーして、VBAエディタから貼りつけました。
そして、実際にマクロを動かしてみました。
青森県のセルを検索する。
シート全体を検索して、「青森県」が入ったセルを黄色に、文字を赤にしてくれました。
エラーも出ずに一発で動きましたよ!
ホント便利な世の中になったよな~。ChatGPT最高!
まとめ
このマクロを使えば、検索から色付けまでの手間が大幅に省けて、作業スピードと視認性が格段にアップします。
日常業務の中で、「ここに色が付いたらもっと見やすいのに」と思ったことがある方は、ぜひ一度お試しください。
こうしたほうがもっと便利ということがあれば、ChatGPTに依頼すれば、自分の思い通りのプログラムができあがります。色々試してみてどんどんカスタマイズしていってくださいね。
あなたのExcel作業がもっと快適になるはずです。