Excelで「エクセル あいまい検索 複数 抽出」をしたいと考えている方へ。部分一致で検索して該当する複数データを一覧表示させたいシーンは多いですが、方法を知らないと時間ばかりかかります。最新機能や定番関数、Power Queryの活用など、多様なアプローチを丁寧に解説しますので、実務でそのまま使えるノウハウが得られます。使っているExcelバージョンに応じた選び方も含めた内容でお届けします。
目次
エクセル あいまい検索 複数 抽出 を実現する代表的な手法
Excelで「あいまい検索 複数 抽出」を行う場合、まず使える手法を把握することが重要です。どのバージョンか、どの関数が使えるかによって選択肢が異なるため、代表的な方法を整理します。最新のExcelでは動的配列関数やPower Queryが強力なので、それらを中心に説明します。
FILTER関数とSEARCH/ISNUMBERの組み合わせ
最新のExcel(Microsoft 365 や Excel 2021 以降)では FILTER 関数が使えます。特定の列にキーワードを部分一致で含む行を抽出する場合、SEARCH 関数で検索語が含まれているかを判定し、ISNUMBER 関数で TRUE/FALSE に変換して FILTER に渡す方法が一般的です。例えば「商品名」に“キャンペーン”を含むすべての行を抽出するのに非常に便利です。また、検索語が空白や誤記を含む可能性があるときにも柔軟に対応できます。動的配列により複数の結果がセル内に連続で表示され、手動でコピー&貼り付けをする手間が省けます。処理範囲が広いと重くなることがある点に注意が必要ですが、実務では十分実用的な方法です。
XLOOKUP関数でワイルドカードを活用する方法
XLOOKUP 関数では、match_mode や検索値にワイルドカード(*や?)を組み合わせることであいまい検索が可能です。ただし、XLOOKUP は最初にヒットする1件のみ返す仕様なので、複数の行を取得したい場合には複数の式や他の関数との組み合わせが必要になります。たとえば「検索語*」や「*検索語*」といった形で部分一致検索させることができます。これはワイルドカード検索モードに設定できる Excel の機能を利用しますが、結果が1件だけになる制限を理解しておきましょう。
INDEX, MATCH, SMALL を使って複数の結果を順に抽出
FILTER や XLOOKUP が使えない古いバージョンの Excel では、INDEXとMATCHとSMALL関数を組み合わせることで複数の結果を抽出する技術があります。この手法では、まず対象範囲でキーワードを含む行番号を IF と SEARCH で取得し、それを SMALL で順序付けて INDEX で該当する行のデータを返します。動的配列機能がない環境でも使えるため、古い Excel ユーザーにはとても役立ちますが、式が複雑になりやすく、デバッグや維持に手間がかかることがあります。
Power Query の Fuzzy Matching を活用する
大量データや表記ゆれの多いデータを扱う場合、Power Query のあいまいマージ(Fuzzy Merge)が非常に役立ちます。2つのテーブルをマージするときにあいまい一致を使うオプションを有効にすることで、類似度の閾値を指定したり、大文字・小文字の違いを無視したりする設定が可能です。さらに必要であれば「Transformation Table」を用いて誤記や別表記を正規化できます。複数のマッチを返す設定もあり、最新機能として評価が高まっています。
具体的な例でわかる あいまい検索 複数 抽出 の手順
ここからは、実際にキーワードを含む複数の行を抽出する手順をステップバイステップで見ていきます。使用している Excel のバージョン別に方法を紹介するので、あなたの環境に合わせて試してみてください。フォームを細かく示すことで実務でそのまま使えるようにします。
FILTER 関数を使った部分一致による複数抽出の手順
まずは Excel 365 など FILTER 関数が使える環境での方法です。例:商品一覧表で「商品名」にキーワード“セール”を含む行をすべて抽出する場合。
手順:
- 対象データを表形式またはセル範囲で準備する(例:A2:C100)。
- 検索キーワードを入力するセルを決める(例:セル E1 に“セール”)。
- 別シートまたは空白の場所に以下のような式を入力:
=FILTER(A2:C100, ISNUMBER(SEARCH(E1, B2:B100)), “該当なし”)
B2:B100 は「商品名」列、E1 は検索語を含むセルです。SEARCH がキーワードを含む位置を返し、ISNUMBER で TRUE/FALSE に変換することで FILTER が該当する行すべてを返します。
XLOOKUP とワイルドカードで部分一致を使う例
この方法は主に1件だけ返す用途に向いていますが、複数抽出のひな形として部分一致検索を理解するのに有用です。例として、「品番」が“AB-123”を含む記述を検索して価格を返すケースを以下に示します。
例:
=XLOOKUP(“*”&E1&”*”, A2:A100, C2:C100, “該当なし”, 2)
E1 に入力した検索語を含む品番を探し、その行の C 列(価格)を返します。match_mode を 2 にすることでワイルドカードを使った部分一致の検索が可能です。ただし、最初にヒットするものだけが対象となるので、複数の該当がある場合には他の方法を併用することが望ましいです。
INDEX+MATCH+SMALL を使って複数の結果をリスト化する例
FILTER が使えない古いバージョン(Excel 2016 やそれ以前)で複数ヒットを抽出したい場合の手順です。例:商品名列に“東京”が含まれる行をすべて取り出す。
手順:
- 補助列を設けて、SEARCH(E1, B2:B100) を使い「キーワードが含まれるか」を TRUE/FALSE 判定する。
- IF と ROW を使って該当する行番号の配列を取得。
- SMALL 関数でその中から1番小さい行番号、2番目の行番号……を順に取り出す。
- INDEX 関数でそれぞれの行番号に対応する列の値を返す。
具体例の式:
=IFERROR( INDEX(C$2:C$100, SMALL( IF( ISNUMBER(SEARCH($E$1, B$2:B$100)), ROW(B$2:B$100)-ROW(B$2)+1 ), ROW(1:1) ) ), “” )
この式を下へコピーすると、該当する価格を順に取得できます。配列数式として扱われることがあるので、入力時に確認が必要です。
Power Query であいまい一致による複数抽出を実行する方法
大量のデータや表記ゆれ対応が必要な場合には Power Query の出番です。例として「アンケート結果」の列に多数の異表記があり、それらを共通の表記に統一しつつ複数該当行を取得するケースを考えます。
手順:
- 対象データを Excel のテーブル形式にして Power Query に読み込む。
- もし基準となる「正しい表記」の一覧があれば参照テーブルとして読み込む(変換表を作成)。
- メインデータと参照テーブルをマージクエリとして結合し、「Use fuzzy matching to perform the merge」をチェックする。
- 類似度の閾値(Similarity Threshold)を設定し、大文字・小文字の無視などのオプションを調整する。
- マージ後、該当するすべての行が返る設定を確認し、展開して最終的に抽出テーブルを生成する。
この方法だと、誤記やゆれのある表記でも高い確率で似ているものを拾えるため、データクリーニング+抽出が同時に行えます。複雑な文字列処理や統一が必要な組織データで特に力を発揮します。
それぞれの手法を比較して選ぶポイント
どの方法を使えばよいかは「Excel のバージョン」「データ量」「表記ゆれの程度」「処理速度・使いやすさ」などによります。以下の比較表で強みと注意点を理解し、最適な手法を選んでください。
| 手法 | 対象バージョン | 強み | 注意点 |
|---|---|---|---|
| FILTER + SEARCH / ISNUMBER | Microsoft 365 / Excel 2021以降 | 複数行を動的に取得できる。式がシンプル。最新機能。 | 大きなデータ範囲で処理が遅くなる可能性あり。検索語によって誤マッチが含まれることも。 |
| XLOOKUP + ワイルドカード | 同上または更新されたバージョン | 部分一致や前方・後方一致が簡単。設定がわかりやすい。 | 1件のみ取得。複数該当がある場合の対応が必要。 |
| INDEX + MATCH + SMALL | 古い Excel バージョンでも利用可能 | 最新機能がなくても複数抽出できる。カスタマイズ性が高い。 | 式が複雑。保守や理解が困難になりやすい。 |
| Power Query の Fuzzy Matching | Microsoft 365/Excel の最新更新含む環境 | 表記ゆれへの対応が豊富。大量データに強く、一次処理やクリーニングに最適。 | 学習コストあり。設定を誤ると意図しないマッチや漏れが出ることも。 |
よくあるトラブルとその解決策
あいまい検索や複数抽出を実践する中で、つまづきやすいポイントがあります。ここでは代表的なトラブルとその対策を解説しますので、問題発生時に備えておいてください。
検索語が部分一致しない・意図しない一致が含まれる
検索語に余分な空白が入っていたり、表記ゆれ(全角/半角・濁点・送り仮名など)があったりすると、SEARCH やワイルドカードで意図しない結果が含まれたり、逆にヒットしなかったりします。対策としては、元データを TRIM 関数で余分な空白を除去したり、全角半角の統一処理を行ったり、表記ゆれを整理する変換表を事前に作成しておくことがおすすめです。
Excel のバージョンで機能が制限される
FILTER 関数や Power Query の Fuzzy Matching は最新版や Microsoft 365 環境でないと使えないことがあります。古い Excel では XLOOKUP にワイルドカードを使えないか、動的配列が動作しないケースもあります。自分の Excel のバージョンを確認し、手法を選択することが先決です。もし機能がない場合には、INDEX+MATCH+SMALL や補助列を組む手法が頼りになります。
処理速度が遅い、大量データで重くなる
FILTER や Power Query で広い範囲を対象に処理をすると、Excel の応答性が悪くなることがあります。対策としては、検索列だけを選んで処理する、必要最小限の範囲に絞る、変換前にデータ型を統一する等があります。Power Query では結果を一時的にキャッシュしたり、処理を分割することで速度改善を図れます。
実務で使える応用パターン集
ここでは、典型的な業務シーンであいまい検索 複数抽出が役立つパターンを紹介します。応用例を知っておくと、自分のデータに合わせてカスタマイズしやすくなります。
売上報告やキャンペーン期間の商品抽出
「期間中にキャンペーン対象の商品名に“特定語”が含まれるもの」「売上拡大を狙う特定商品のレビュー」などを抽出する際、FILTER+SEARCH の組み合わせが迅速です。検索語を変えることで複数のキーワードにも対応でき、出力範囲を指定すれば表形式での出力が自動化できます。
アンケートデータの表記ゆれの集計前処理
自由記述や選択肢の文字列で「グラフフォント」「グラフ フォント」「キャラクターフォント」のような表記の違いが散在している場合、Power Query の Fuzzy Matching を使ってまとめて抽出し、正規表記に変換しながら集計できるので集計結果の精度が上がります。
顧客リストや住所録で似た名前・同じキーワードを含む人をまとめて探す
顧客データで「株式会社」「㈱」「(株)」などの表記ゆれがある場合、また名前の一部だけしか覚えていない顧客を検索するとき、「検索語に含む・あいまい一致」が役立ちます。FILTER 式で部分一致検索するか、Power Query で fuzzy merge を使って表記ゆれを吸収する方法が使えます。
まとめ
「エクセル あいまい検索 複数 抽出」を実現するためには、使用中の Excel のバージョンとデータの性質に応じて最適な手法を選ぶことがカギとなります。最新機能が使える環境であれば FILTER 関数や Power Query の Fuzzy Matching を使うことで処理を簡潔かつ柔軟にできます。
一方、古いバージョンでは INDEX+MATCH+SMALL の組み合わせなどの伝統的なテクニックが頼りです。どの方法でも「検索語の表記ゆれを整理する」「処理範囲を適切に設定する」「意図しない一致を防ぐための補助処理をする」ことが、誤抽出や漏れを減らすポイントとなります。
まずは自分の環境で簡単な例を試してみて、その後業務データに応用することでスムーズに「部分一致する複数データ抽出」の作業を習得できます。効率的なデータ処理の一助となることを願っています。
コメント