業務で扱うExcelファイルが増えるほど、「どのシートのどこに目的のデータがあるか分からない」「特定のキーワードを素早く探したい」と感じることが多くなります。
Excelの標準機能「Ctrl+F(検索)」でもある程度は対応できますが、複数シートをまたいで検索したり、検索結果を一覧で出力したりする場合には不便です。
そこで役立つのが「検索ツールをExcelマクロで作成する方法」です。
VBA(Visual Basic for Applications)を使えば、Excel内のすべてのシートやセルを自動で走査し、キーワードを含むセルを一括抽出する“検索ツール”を簡単に自作できます。
さらに、RPA(ロボティック・プロセス・オートメーション)と組み合わせれば、複数のブックをまとめて検索したり、結果を自動保存・通知したりと、手動では不可能なレベルの効率化を実現できます。
本記事では、Excelマクロによる検索ツールの作り方から、自動化活用までをわかりやすく解説します。
目次
- ・なぜExcel検索ツールをマクロで作るのか
- ✅ Excelマクロで作る検索ツールの基本構成
- ・構成イメージ
- ・VBAコード例
- ✅ Excelマクロ検索ツールの機能拡張
- ・1. 複数キーワード検索
- ・2. 部分一致/完全一致の切り替え
- ・3. ハイパーリンクでジャンプ
- ・4. 大文字小文字を区別しない検索
- ・5. 検索範囲の制限
- ✅ 検索ツールをRPAで拡張する
- ・RPAによる自動化イメージ
- ・UiPathの例
- ✅ 実務での応用例
- ・顧客情報検索
- ・契約書・請求書管理
- ・不備チェック
- ・監査・内部統制
- ✅ 検索ツールを運用する際のポイント
- ✅ 自作マクロを“社内ツール化”するコツ
- ✅ まとめ:Excel検索ツールをマクロで作成し、RPAで業務を自動化しよう
・なぜExcel検索ツールをマクロで作るのか
Excelの「Ctrl+F」検索は一時的な検索には便利ですが、次のような課題があります。
- ファイルを開いている間しか使えない
- 検索結果をリスト化できない
- シートをまたいだ検索ができない(設定を都度変更する必要あり)
- 検索結果を他の担当者に共有しづらい
これに対し、マクロ(VBA)を活用した検索ツールなら、次のような利点があります。
✅ 全シートを自動で横断検索
✅ 検索結果を一覧で表示・出力
✅ ボタン1つで再利用できる
✅ 複数キーワードにも対応できる
業務での「検索作業」を効率化するだけでなく、データ確認・監査・品質チェックにも活用できるのがポイントです。
✅ Excelマクロで作る検索ツールの基本構成
ここでは、Excel内の全シート・全セルからキーワードを探し、結果を一覧に出力するマクロの仕組みを紹介します。
・構成イメージ
- B2セルに検索キーワードを入力
- 「検索開始」ボタンを押す
- すべてのシート・セルを走査
- 一致したセルの情報を一覧に出力(シート名・セル位置・内容)
- 検索結果をクリックすると該当セルへジャンプ
このような検索ツールを作れば、数千件のデータから一瞬で目的の情報を探し出せます。
・VBAコード例
以下は、最も基本的な検索マクロのコード例です。
Sub SearchTool()
Dim ws As Worksheet, resultWs As Worksheet
Dim c As Range, keyword As String
Dim resultRow As Long
keyword = Range("B2").Value
If keyword = "" Then
MsgBox "検索ワードを入力してください。", vbExclamation
Exit Sub
End If
' 検索結果出力シートを用意
On Error Resume Next
Set resultWs = Sheets("検索結果")
If resultWs Is Nothing Then
Set resultWs = Worksheets.Add
resultWs.Name = "検索結果"
End If
On Error GoTo 0
resultWs.Cells.Clear
resultWs.Range("A1:D1").Value = Array("シート名", "セル", "内容", "ブック名")
resultRow = 2
' 各シートを順に検索
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "検索結果" Then
For Each c In ws.UsedRange
If InStr(c.Text, keyword) > 0 Then
resultWs.Cells(resultRow, 1).Value = ws.Name
resultWs.Cells(resultRow, 2).Value = c.Address
resultWs.Cells(resultRow, 3).Value = c.Text
resultWs.Cells(resultRow, 4).Value = ThisWorkbook.Name
resultRow = resultRow + 1
End If
Next c
End If
Next ws
MsgBox "検索が完了しました。結果を「検索結果」シートに出力しました。", vbInformation
End Sub
このコードでは、ワークブック内のすべてのシートを走査し、検索キーワードを含むセルを抽出しています。
検索結果は「検索結果」シートに一覧で表示され、各セルにはシート名・セルアドレス・内容が出力されます。
参考:【RPA・自動化】Excelファイルを開かずに中身を検索する方法と自動化活用の完全ガイド
✅ Excelマクロ検索ツールの機能拡張
この基本構造をもとに、実務で使える機能を追加することができます。
・1. 複数キーワード検索
複数の語をスペース区切りで入力して検索する仕組みです。
Dim words() As String, i As Integer
words = Split(keyword, " ")
For i = LBound(words) To UBound(words)
If InStr(c.Text, words(i)) > 0 Then
' 一致した場合の処理
End If
Next i
これにより、「契約 更新」など複数の語を同時に検索可能です。
・2. 部分一致/完全一致の切り替え
完全一致で検索したい場合は、次のように条件を変更します。
If c.Text = keyword Then
部分一致を希望する場合は従来通り InStr を使用します。
用途に応じて切り替えボタンを設けるとより実用的です。
・3. ハイパーリンクでジャンプ
検索結果をクリックして該当セルに移動できるようにするコードです。
resultWs.Hyperlinks.Add _
Anchor:=resultWs.Cells(resultRow, 2), _
Address:="", _
SubAddress:="'" & ws.Name & "'!" & c.Address, _
TextToDisplay:=c.Address
この機能を加えると、リストからクリック一つで目的のセルへ飛べる“検索ポータル”のようなツールになります。
・4. 大文字小文字を区別しない検索
次のようにすれば、大文字・小文字を問わず検索できます。
If InStr(1, LCase(c.Text), LCase(keyword)) > 0 Then
これにより、「Excel」「excel」どちらでも同じ結果が得られます。
・5. 検索範囲の制限
特定の列や行、あるいは特定シートのみを対象にしたい場合は条件を追加します。
If ws.Name Like "*報告*" Then
このようにすれば、シート名に「報告」が含まれるシートのみ検索対象にできます。
✅ 検索ツールをRPAで拡張する
VBAで単一ブックの検索ツールを作成できたら、RPAを使って「複数ファイルの自動検索」へと発展させることができます。
・RPAによる自動化イメージ
- フォルダー内のExcelファイルをRPAで順に取得
- 各ファイルを開く
- 先ほどの検索マクロを実行(または同等処理をRPAで再現)
- 検索結果を1つのマスターExcelに集約
- 完了後にメールやTeamsで通知
この処理をスケジュール実行すれば、「毎朝9時に特定キーワードを含む報告書を自動収集」する仕組みを構築できます。
参考:【RPA入門】UiPathでできること一覧|Excel・メール・ブラウザ操作を徹底解説
・UiPathの例
- 「フォルダー内のファイルを繰り返し」アクティビティでExcelを取得
- 「Excelアプリケーションスコープ」でファイルを開く
- 「セルを読み込み」アクティビティで文字列を抽出
- 「条件分岐(If)」でキーワードを判定
- 「Excelに書き込み」で結果一覧を出力
UiPathならこのフローをドラッグ&ドロップだけで作れます。
業務担当者がプログラミング知識なしで扱えるのも大きな強みです。
✅ 実務での応用例
Excel検索マクロは、業種を問わず幅広い業務で活用できます。
・顧客情報検索
複数の部署で管理している顧客リストを横断的に検索し、該当する会社名や担当者を一覧表示。
・契約書・請求書管理
フォルダー内のExcel形式の契約書から「契約満了」「更新」「解約」などを自動検出。
・不備チェック
報告書に「未入力」「確認中」「保留」などの語を含むセルを抽出し、ミス防止を支援。
・監査・内部統制
社内の管理帳票を自動で検索し、「社外秘」「Confidential」などを検出してリスクを把握。
✅ 検索ツールを運用する際のポイント
- 結果を別シートに出力する設計にする
元データを破壊しない安全設計が重要。 - 大規模ファイルは非表示シートも対象外にする
処理時間が長くなる場合は、条件を絞るのがポイント。 - ファイルのバックアップを定期保存
検索ツールの利用前後でバックアップを自動取得すると安心。 - 実行ボタンをフォームコントロール化
クリック一つで起動できるようにすると、非エンジニアでも使いやすい。
✅ 自作マクロを“社内ツール化”するコツ
作成した検索マクロを共有し、社内で活用できる形に整えると、より大きな効果が期待できます。
- 共通テンプレート化:検索画面・結果出力を統一デザインにする。
- パスワード保護:VBAコードを編集不可にして誤操作防止。
- ボタン操作のみで完結:検索語入力→実行ボタン→結果確認、というシンプルなUIを構築。
- 実行ログを残す:誰がいつ検索したかを記録し、監査にも対応。
これにより、社内の“情報探索”を誰でも手軽に実行できるようになります。
✅ まとめ:Excel検索ツールをマクロで作成し、RPAで業務を自動化しよう
- Excelの標準検索機能では限界があるが、VBAマクロで自作すれば全シート・全セルを横断検索できる。
- 結果を一覧で出力し、クリックで該当箇所にジャンプできるようにすれば“検索ポータル”化できる。
- RPAと連携させることで、複数ブックの検索・自動集計・通知まで完全自動化が可能。
- 実務では顧客データ検索・契約書管理・監査チェックなど幅広く活用できる。
マクロによる検索ツールは、Excelの“探す”を自動化する最もシンプルな第一歩です。
日常業務に合わせて少しずつ機能を拡張すれば、RPA導入前の段階でも十分な効率化を実感できます。