Excelの表で品名や担当者名を探す作業が増えると、フィルターの一覧から何度も項目を探すだけでも時間がかかります。
検索ボックスを用意すれば、入力したキーワードに応じて対象データを絞り込み、必要な行をすぐ確認できます。
検索ボックスを作る代表的な方法は、数式を使う方法、VBAマクロを使う方法、スライサーを使う方法の3種類です。
この記事では、検索欄を常に見える位置に置く考え方も含め、用途別の作成方法を解説していきます。
エクセルの検索ボックスを作る方法1【数式とフィルターの活用】
それではまず、マクロを使わずに検索ボックスを作る方法について解説していきます。
| 商品コード | 商品名 | 担当者 | 売上 |
|---|---|---|---|
| A001 | ノートパソコン | 田中 | 120000 |
| A002 | モニター | 佐藤 | 45000 |
| A003 | キーボード | 田中 | 8000 |
| A004 | マウス | 鈴木 | 3500 |
検索用セルと元データの準備
検索欄として、表とは少し離れたF2セルなどを使います。
F1セルには検索キーワード、F2セルには探したい文字を入力する形にすると、利用者にも役割が伝わりやすくなります。
検索対象の表は1行目を見出し行にし、途中に空白行を作らないことが大切です。

たとえばA1からD5にサンプル表がある場合、A1からD5を選択してCtrlキーとTキーを押し、テーブルとして登録しておくと管理しやすくなります。
テーブル名を売上表などに変更しておけば、行が追加されたときも参照範囲を広げる手間を減らせます。
検索欄はデータ表の右側または上側に配置すると、表を確認しながら文字を入力しやすくなります。
FILTER関数による検索結果の表示
続いては、検索文字を含むデータだけを別の場所へ表示する数式を確認していきます。
検索結果を表示したいF5セルに、次の数式を入力します。
=FILTER(A2:D5,ISNUMBER(SEARCH(F2,B2:B5)),”該当データなし”)

この数式では、F2セルの文字列をB列の商品名から検索し、一致した行だけをF5セルから下へ展開します。
SEARCH関数は文字列が何文字目にあるかを返し、見つからない場合はエラーになります。
ISNUMBER関数で数値が返った行だけをTRUEとして判定し、FILTER関数が該当するレコードを抽出する仕組みです。
SEARCH関数は大文字と小文字を区別しないため、利用者が入力しやすい検索欄になります。
F2が空欄のときにも全件を表示したい場合は、条件部分をIF関数で分ける方法が便利です。
=IF(F2=””,A2:D5,FILTER(A2:D5,ISNUMBER(SEARCH(F2,B2:B5)),”該当データなし”))
Microsoft 365やExcel 2021以降では、このようなスピル機能を使った検索が特に扱いやすい方法です。
オートフィルターによる部分一致検索
続いては、従来のExcelでも使いやすいオートフィルターの検索欄を確認していきます。
表内のセルを選択し、データタブのフィルターをクリックすると、1行目の各見出しに絞り込み矢印が表示されます。
商品名列の矢印をクリックすると、上部に検索ボックスが表示されます。
検索欄へノートと入力すれば、ノートパソコンを含む項目だけを選択できます。
この方法は専用セルを作らなくても使えますが、常に入力欄を表示したい場合には数式型の検索ボックスのほうが向いています。
【操作のポイント】数式型は検索結果を別表として見せたい場合、フィルター型は元の表をそのまま絞り込みたい場合に適しています。
エクセルの検索ボックスを作る方法2【VBAマクロによる自動絞り込み】
続いては、入力した文字に合わせて元データを自動で絞り込むVBAマクロについて解説していきます。
| 検索セル | 対象列 | 検索条件 | 結果 |
|---|---|---|---|
| F2 | B列 | モニター | モニターの行だけ表示 |
検索セルを変更したときのマクロ設定
VBAを使う場合は、AltキーとF11キーを押してVisual Basic Editorを開き、対象のワークシートを選択します。
標準モジュールではなく、検索セルがあるシートのコード画面へ入力する点が重要です。

次のコードは、F2セルが変更されたときにB列の商品名を部分一致でフィルターする例です。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("F2")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Range("F2").Value = "" Then
If Me.FilterMode Then Me.ShowAllData
Else
Range("A1:D5").AutoFilter Field:=2, Criteria1:="*" & Range("F2").Value & "*"
End If
Application.EnableEvents = True
End Sub
Fieldは選択範囲内で何列目を対象にするかを示します。
今回のA列からD列ではB列が2列目なので、Fieldに2を指定します。
検索条件の前後にアスタリスクを付けることで、入力文字を含むデータを探せます。
マクロ有効ブックとしての保存
続いては、作成した検索ボックスを保存して使い続ける設定を確認していきます。
ファイルタブから名前を付けて保存を選び、ファイルの種類をExcelマクロ有効ブックに変更します。

通常のxlsx形式で保存するとVBAコードが保存されないため、検索ボックスの動作も失われます。
拡張子がxlsmになっていることを、保存後にも確認しましょう。
マクロを含むブックは、信頼できる作成者と保存先に限定して配布することが安全です。
検索文字を消したときの全件表示
続いては、検索欄を空欄に戻したときの扱いを確認していきます。
コード内のShowAllDataは、フィルターがかかっている状態だけを解除する命令です。
検索欄の文字をDeleteキーで消せば全件が再表示されるため、検索条件を毎回手作業で解除する必要がありません。
Application.EnableEventsをFalseにする処理は、マクロ実行中に別のイベントが連鎖することを防ぐ役割があります。
エラーで処理が止まった場合にイベントが無効のままになることもあるため、実務用ではエラー処理を追加すると安心です。
【操作のポイント】VBA型の検索欄は、複数人が同じ表を操作する場合でも、入力だけで絞り込みができる点がメリットです。
エクセルの検索ボックスを作る方法3【スライサーによる視覚的な絞り込み】
続いては、ボタンを押す感覚で検索条件を選べるスライサーについて解説していきます。
| 担当者 | 田中 | 佐藤 | 鈴木 |
|---|---|---|---|
| 選択状態 | 表示 | 表示 | 非表示 |
テーブルへのスライサー挿入
スライサーを使うには、最初に元データをテーブル化しておく必要があります。
表内のセルを選択し、挿入タブからスライサーをクリックします。
表示された一覧で担当者や商品名など、絞り込みに使いたい項目へチェックを入れます。
スライサーはフィルター条件をボタンとして表示する機能です。
| A | B | C | |
|---|---|---|---|
| 1 | 商品名 | 担当者 | 売上 |
| 2 | モニター | 佐藤 | 45000 |
| 3 | キーボード | 田中 | 8000 |
スライサーのボタンをクリックすると、該当する行だけがテーブルに残ります。
複数項目と検索欄の利用
続いては、スライサー内の検索機能と複数選択について確認していきます。
項目数が多い場合は、スライサー右上の複数選択ボタンを使うと、複数の担当者や分類を同時に選べます。
スライサーのヘッダーに検索ボックスが表示される設定では、長い項目一覧から目的の分類を探すことも可能です。
担当者、部署、商品分類のように選択肢が決まっている項目は、文字入力型よりスライサーが見やすい場合があります。
スライサーの右上にあるフィルターのクリアを選ぶと、設定した条件をまとめて解除できます。
ピボットテーブルとの連携
続いては、集計表でスライサーを使う方法を確認していきます。
ピボットテーブルを選択してピボットテーブル分析タブを開き、スライサーの挿入を選びます。
作成したスライサーは、レポート接続から複数のピボットテーブルに接続できる場合があります。
同じデータソースを使う複数の集計表を、ひとつのスライサーで連動させられる点が大きな利点です。
【操作のポイント】スライサーは検索語を自由入力する用途より、担当者や月などの固定項目を直感的に選ぶ用途に向いています。
エクセルの検索ボックスを常に表示する配置
続いては、検索ボックスをスクロール中にも見失いにくくする配置について解説していきます。
| 配置場所 | 使いやすい場面 |
|---|---|
| 表の上部 | 縦に長い一覧表 |
| 表の右側 | 検索結果を横に表示する表 |
| 専用シート | 利用者向けの検索画面 |
ウィンドウ枠の固定
検索欄を表の上部に置いた場合は、表示タブのウィンドウ枠の固定を使います。
固定したい行のすぐ下にあるセルを選び、ウィンドウ枠の固定を実行します。
検索欄を2行目に置くなら、A3セルを選択して先頭行の固定ではなくウィンドウ枠の固定を選びます。
固定位置より上の行が残るため、検索欄と列見出しを同時に表示できます。
検索欄、説明文、見出し行を1行目から3行目までにまとめると、操作する人が迷いにくくなります。
名前ボックスと入力規則
続いては、検索セルを分かりやすく呼び出す方法を確認していきます。
F2セルを選び、数式バー左側の名前ボックスへ検索語と入力してEnterキーを押すと、そのセルに名前を付けられます。
VBAや数式ではセル番地ではなく検索語という名前を参照できるため、後から表の配置を見直すときにも意味を理解しやすくなります。
検索欄の背景色を薄い黄色などに変え、入力する場所だと視覚的に示す工夫も有効です。
固定選択肢だけを検索条件にしたいときは、データの入力規則でリストを設定する方法もあります。
検索画面専用シート
続いては、元データと検索操作を分ける構成を確認していきます。
データ一覧をデータシート、検索欄と結果を検索シートに分ければ、利用者が元表を誤って編集するリスクを下げられます。
検索シートの上部に入力欄を大きく配置し、FILTER関数の結果だけを表示する構成は、共有ファイルにも適しています。
【操作のポイント】日常的に検索するブックでは、検索欄を先頭行付近へ置き、ウィンドウ枠の固定を組み合わせると常に表示しやすくなります。
検索ボックスが動かないときの確認項目
続いては、検索結果が表示されない場合に確認したい項目について解説していきます。
| 症状 | 主な原因 | 確認内容 |
|---|---|---|
| 結果が出ない | 参照範囲の違い | 数式の列範囲 |
| マクロが動かない | 保存形式の違い | xlsm形式 |
| スライサーがない | 表の種類の違い | テーブルまたはピボット |
FILTER関数のスピル範囲
FILTER関数の結果が途中で止まる場合は、結果を展開する範囲に文字や数式が残っていないか確認します。
スピルと表示されるエラーは、数式が広がる先のセルが空欄ではないことを知らせるメッセージです。
検索結果の表示エリアは、あらかじめ十分な空白を確保しておきましょう。
また、検索対象列と抽出対象範囲の行数が異なると、FILTER関数は正しく判定できません。
VBAのイベントとセキュリティ設定
続いては、VBA型の検索欄で起こりやすい問題を確認していきます。
コードを標準モジュールへ貼り付けていると、Worksheet_Changeイベントは自動実行されません。
必ず対象ワークシートのコード画面に貼り付けます。
マクロの警告が出る場合は、コンテンツの有効化を選ぶ必要があるかもしれません。
配布先の環境ではマクロが無効になっていることもあるため、数式型の検索画面を併用すると運用しやすくなります。
スライサーの接続状態
続いては、スライサーをクリックしても集計が変わらない場合を確認していきます。
ピボットテーブル分析タブのレポート接続を開き、連動させたいピボットテーブルにチェックが付いているかを確認します。
スライサーは接続先の表と同じデータキャッシュを使う必要があります。
別々に作成したピボットテーブルでは接続できないことがあるため、元となるピボットテーブルをコピーして作る方法も検討しましょう。
【操作のポイント】数式、マクロ、スライサーのどれを使う場合でも、検索対象の列名とデータ範囲を先に整理するとトラブルを防げます。
まとめ エクセルの検索ボックスを作る方法(常に表示・スライサー・マクロ)
エクセルの検索ボックスは、自由な文字列を探すならFILTER関数、入力と同時に元表を絞り込むならVBA、固定項目を選択するならスライサーが便利です。
まずはマクロ不要で共有しやすい数式型の検索ボックスから試すと、導入しやすいでしょう。
検索欄を表の上部に置き、ウィンドウ枠の固定を使えば、長いデータ一覧を確認している間も検索欄を常に表示できます。
利用者、データ量、Excelのバージョンに合わせて方法を選び、探す時間を減らせる表へ整えていきましょう。