残業を減らす!Officeテクニック
Excelのシートに検索ボックスを作る ~セルにキーワード入力するだけで部分一致検索!
2025年7月28日 06:55
表の中から特定のデータを取り出したい場合、フィルター機能を使うことが多いですよね。チェックボックスをON/OFFして、データを絞り込む操作には慣れているでしょう。少し応用して「テキストフィルター」を利用すると、指定した文字列を含むデータを抽出することもできます。
しかし、フィルターをかけた後、毎回手動でクリアするのは少し手間ですよね。セルに入力した文字列を基に検索結果を抽出できたら便利だと思いませんか? 今回は、関数を組み合わせて簡易的な“検索ボックス”を作成するテクニックを紹介します。
FILTER関数で元の表を参照する
ここでは[商品マスタ]シートに商品の情報がまとめられているとします。別のワークシートから参照して該当するデータを抽出する場合、FILTER関数がよく使われます。ただし、完全一致しか対応していないため、“部分一致”には使えません。以下の例では該当するデータがないと判断されて「該当なし」と表示されてしまいました。
「シューズ」という商品は存在しないため、この結果に問題はありませんが、「シューズ」という文字列を含むデータをすべて抽出してほしいですよね。このような場合に「ISNUMBER関数」と「SEARCH関数」が役立ちます。
ISNUMBER関数とSEARCH関数で部分一致を見分ける
結論から先に言うと、以下のように数式を書き換えるだけで“部分一致”が実現します。
=FILTER(商品マスタ!A2:D101,ISNUMBER(SEARCH(B2,商品マスタ!B2:B101)),"該当なし")
先に、SEARCH関数とISNUMBER関数の構文を見ておきましょう。SEARCH関数は、指定した文字列が対象の何文字目にあるかを調べます。該当する文字列がなければエラーとなります。ISNUMBER関数はセルの内容が数値かどうかを判定します。
つまり、指定した文字列が対象に存在しているなら、SEARCH関数の結果は数値となり、ISNUMBER関数の結果は「TRUE」となります。ここでは、[商品マスタ]シートのセルB2~B101(商品マスタ!B2:B101)が対象となるので、結果はスピル(配列)となり、該当するデータがFILTER関数で抽出されるわけです。
文字列を含むデータをサッと抽出できるこの方法は、商品検索やアンケート結果の確認など、さまざまなシーンに応用できます。覚えておいて損はありませんよ。