大量のデータから、特定のキーワードを含む行だけを素早く抜き出したい。しかも完全一致ではなく、部分一致や複数条件であいまい検索したい。業務でエクセルを使っていると、このような場面は非常に多いです。
本記事では、エクセルで複数条件のあいまい検索を行い、必要な行だけを自動抽出する方法を、最新の関数と従来のテクニックの両方から解説します。FILTER関数やワイルドカードの具体的な使い方、関数の組み合わせ例、バージョン別の代替手段まで網羅しますので、この記事を読めば、あいまい検索の手作業フィルタから卒業できるはずです。
目次
エクセル あいまい検索 複数 抽出の基本と全体像
まずは、エクセルであいまい検索を行い、複数条件で抽出する作業の全体像を整理します。
エクセルでは、部分一致検索はワイルドカードやSEARCH関数、COUNTIF関数などで実現でき、抽出はフィルター機能やFILTER関数などで行います。これらを組み合わせることで、「商品名にりんごを含み、かつ担当者が佐藤を含む行だけ抽出」といった複合条件が可能になります。
また、最新バージョンのエクセルではスピル機能に対応したFILTER関数が利用できるため、関数一つで動的な抽出表を作成できます。一方で、古いバージョンではオートフィルタや高度なフィルター、COUNTIFを使った補助列などで同様の処理を行います。
どの方法が自分の環境に適しているかを理解することで、無駄な手作業を大幅に減らすことができます。
あいまい検索とは何かと完全一致との違い
あいまい検索とは、セルの内容全体が完全に一致していなくても、一部が一致していればヒットとみなす検索方法です。
例えば「りんご」という文字列で検索したとき、完全一致であればセルの内容がりんごだけの場合にしかヒットしませんが、あいまい検索であれば青森りんご、りんごジュースなど、部分的に含まれているセルも対象になります。
この違いは実務上とても重要です。商品名や顧客名、住所などは表記ゆれや前後に説明文があることが多いため、完全一致だけでは目的のデータを拾い切れないケースが多発します。
その結果、手作業でフィルターをかけ直したり、目視で確認したりといった非効率な作業が発生します。あいまい検索を適切に使えば、複数パターンの表記をまとめて検索できるため、データ抽出の精度と速度が大きく向上します。
複数条件で抽出するとはどういうことか
複数条件で抽出するとは、2つ以上の条件を組み合わせて行やセルを絞り込むことです。論理的には、次の2種類の条件の組み方があります。
- かつ条件(AND条件):すべての条件を満たす行だけを抽出
- または条件(OR条件):いずれかの条件を満たす行を抽出
例えば「商品名にりんごを含み、かつ地域が関東」といった条件はAND、「商品名にりんごを含む、または商品名にみかんを含む」はORに該当します。
エクセルで複数条件のあいまい検索を行うには、このANDとORを論理演算子としてうまく組み立てながら、ワイルドカードや検索関数を組み合わせていきます。後述するFILTER関数や関数の配列演算で、これらの複合条件を柔軟に表現できます。
利用する主な関数と機能の一覧
エクセルであいまい検索と複数条件の抽出を実現するために、よく使う関数と機能を一覧にまとめます。まず知っておきたいのは、FILTER関数、SEARCH関数、FIND関数、COUNTIF・COUNTIFS関数、IF関数、そしてワイルドカードです。
これに加え、オートフィルタやテーブル機能も組み合わせると実務で使いやすくなります。
下記の表で概要を整理します。
| 機能・関数 | 主な用途 |
| FILTER関数 | 条件に合う行を動的に抽出 |
| SEARCH関数 | 部分一致の位置検索(大文字小文字を区別しない) |
| FIND関数 | 部分一致の位置検索(大文字小文字を区別する) |
| COUNTIF / COUNTIFS | ワイルドカードと組み合わせた条件判定 |
| ワイルドカード | 部分一致のあいまい検索指定 |
これらを理解しておくと、後で紹介する具体例がスムーズに理解できます。
FILTER関数であいまい検索と複数条件抽出を行う方法

最新のエクセルで最も強力なのがFILTER関数です。
FILTER関数は、指定した範囲から条件に合う行だけを抽出し、結果を自動的に隣接セルへスピルさせます。データが増減しても自動で範囲が拡張されるため、レポートやダッシュボードの基盤としても非常に有用です。
さらに、FILTER関数は条件式に配列演算を指定できるため、SEARCH関数やCOUNTIF関数と組み合わせることで、あいまい検索や複数条件での抽出を柔軟に表現できます。
ここではまず基本構文から理解し、その後でワイルドカードやOR条件との組み合わせ例を紹介します。
FILTER関数の基本構文と対応バージョン
FILTER関数の基本構文は次の通りです。
=FILTER(配列, 条件式, [該当なしのとき])
配列には抽出元となる表全体を、条件式には抽出したい行を判定する論理式を指定します。条件式の結果は、配列の行数と同じ長さのTRUE/FALSEの配列となり、TRUEの行だけが抽出されます。
FILTER関数は、Microsoft 365や一部の最新スタンドアロン版エクセルで利用できます。古いバージョンでは使用できないため、その場合は後述する代替方法を使います。
対応環境であれば、FILTER関数を使うことで、手動フィルターやコピー作業をほぼ自動化できるので、まずは自分のエクセルで利用可能かを確認すると良いです。
部分一致の条件をFILTERで指定する基本パターン
FILTER関数自体にはワイルドカード指定の引数はありませんが、条件式にSEARCH関数やCOUNTIF関数を組み合わせることで、部分一致のあいまい検索が可能です。
代表的なパターンは次の2つです。
- SEARCH関数を使って文字列の位置を検索し、ISNUMBERで判定する
- COUNTIF関数にワイルドカードを含む条件を渡し、0より大きいかで判定する
例えば、商品名列A2:A100から「りんご」を含む行だけ抽出する場合、次のような式が考えられます。
=FILTER(A2:C100, ISNUMBER(SEARCH(“りんご”, A2:A100)))
SEARCHが一致位置を返し、ISNUMBERがそれをTRUE/FALSEに変換します。TRUEの行のみがFILTERで抽出される仕組みです。
AND条件で複数のあいまい条件を指定する
AND条件では、複数の条件式を掛け算または論理ANDで組み合わせます。TRUEを1、FALSEを0とみなすため、掛け算すると両方TRUEのときだけ1になり、それ以外は0になります。
例えば、商品名にりんごを含み、かつ担当者名に佐藤を含む行を抽出したい場合を考えます。
商品名がA列、担当者がB列にあり、A2:C100を抽出対象とすると、次のような式になります。
=FILTER(A2:C100, (ISNUMBER(SEARCH(“りんご”, A2:A100))) * (ISNUMBER(SEARCH(“佐藤”, B2:B100))))
両方のISNUMBERがTRUEになった行だけが抽出されます。これがAND条件の基本パターンです。条件を3つ以上に増やす場合も同様に掛け算で連結できます。
OR条件で複数のあいまい条件を指定する
OR条件では、掛け算ではなく足し算や論理ORを使って条件を組み合わせます。いずれかの条件がTRUEであれば行を抽出したい場合に利用します。
例えば、「商品名にりんごを含む、またはみかんを含む」行を抽出したい場合は、次のように書きます。
=FILTER(A2:C100, (ISNUMBER(SEARCH(“りんご”, A2:A100))) + (ISNUMBER(SEARCH(“みかん”, A2:A100))) > 0)
2つの条件式の結果を足し合わせ、その合計が0より大きい行(どちらかがTRUE)だけを抽出します。
OR条件を複数組み合わせたいケースは多いので、このパターンを覚えておくと応用が効きます。
ワイルドカードを使ったあいまい検索の基本と応用

ワイルドカードは、エクセルのあいまい検索で欠かせない表現方法です。
特定の文字列の前後に何が入っていてもよい、先頭だけ一致させたい、末尾だけ一致させたいといった柔軟な条件を、簡単な記号で表現できます。特にCOUNTIF、COUNTIFS、SUMIFなどの条件式や、オートフィルタの検索ボックスで活躍します。
ここでは、ワイルドカードの基本から、複数条件に活用するテクニック、FILTER関数との組み合わせまで詳しく解説します。
部分一致の精度を高めることで、必要なデータだけを素早く抽出できるようになります。
ワイルドカードの種類と使い方
エクセルで使用できる主なワイルドカードは次の3種類です。
| 記号 | 意味 | 使用例 |
| ? | 任意の1文字 | A?C(AAC、ABC、A1C など) |
| * | 任意の0文字以上 | *りんご*(前後に何がついても可) |
| ~ | 直後の記号を文字として扱う | *~?*(?を含む文字列を検索) |
例えば、商品名にりんごを含むセルをCOUNTIFで数えたい場合は、次のように指定します。
=COUNTIF(A2:A100, “*りんご*”)
アスタリスクを前後につけることで、先頭や末尾に何がついていても「りんご」を含むセルを対象にできます。
COUNTIFとワイルドカードであいまい一致を判定する
COUNTIF関数は、ワイルドカードと非常に相性が良い関数です。
特定の文字列を含むかどうかを簡単に数値で判定できるため、その結果をIFやFILTERと組み合わせれば、部分一致条件の抽出ロジックをシンプルに構築できます。
例えば、A列の商品名に「りんご」を含む行かどうかを判定したい場合、B列に次のような式を入れられます。
=COUNTIF(A2, “*りんご*”)>0
この式はTRUE/FALSEを返すので、FILTER関数の条件式としてそのまま利用できます。範囲に対して配列として使うなら、
=FILTER(A2:C100, COUNTIF(A2:A100, “*りんご*”))
のように指定し、COUNTIFの結果が0でない行だけを抽出する形にします。
FILTER関数とワイルドカード条件の連携
FILTER関数の条件式に、COUNTIFとワイルドカードを直接組み込むことで、読みやすく拡張性の高いあいまい検索が可能になります。
例えば、「商品名にりんごまたはみかんを含む」行を抽出したい場合は、次のようなアプローチがあります。
まず、検索キーワード一覧を別セル範囲にまとめ、そこにりんご、みかんなどを入力します。そのうえで、次のような式で複数キーワードをまとめて判定できます。
=FILTER(A2:C100, MMULT(–ISNUMBER(SEARCH(TRANSPOSE(E2:E3), A2:A100)), ROW(E2:E3)^0)>0)
少し高度な配列数式ですが、キーワードリストを増減するだけで条件を柔軟に変えられるのが利点です。より簡単なケースでは、条件式にCOUNTIFを使い、キーワードをワイルドカードで直接書き込む方法でも十分に対応可能です。
SEARCH・FIND・COUNTIFSを使った複数条件のあいまい抽出テクニック
FILTER関数が使えない環境や、より細かく条件を制御したい場合には、SEARCH・FIND・COUNTIFSといった関数の組み合わせが非常に有効です。
これらの関数は、セル内の文字列位置や条件の一致数を返すため、IF関数やフィルター機能と組み合わせて、複雑なあいまい検索ロジックを構築できます。
ここでは、部分一致の判定ロジックを理解しながら、AND条件・OR条件・多列条件を扱う実践的なテクニックを紹介します。
関数の意味を正しく理解しておくと、トラブルシューティングやカスタマイズも容易になります。
SEARCHとFINDの違いと使い分け
SEARCH関数とFIND関数はいずれも、指定した文字列がセル内のどの位置に現れるかを返す関数です。しかし、次のような違いがあります。
| 関数 | 大文字小文字の区別 | ワイルドカード対応 |
| SEARCH | 区別しない | 対応する |
| FIND | 区別する | 対応しない |
日本語や一般的なテキストでは、大文字小文字の区別が不要なケースが多いため、多くの場合SEARCH関数を使います。
SEARCHは、見つかった場合に位置を表す数値を返し、見つからない場合はエラーとなります。そこで、ISNUMBER関数やIFERROR関数と組み合わせることで、TRUE/FALSEの論理値に変換して、抽出条件として利用できます。
COUNTIFSで複数列のあいまい条件を判定する
COUNTIFS関数は、複数の範囲と条件を指定して、一致する行の数を数える関数です。ワイルドカードが利用できるため、あいまい検索に向いています。
例えば、「商品名にりんごを含み、かつ地域が関東を含む」行を判定したい場合、次のような式が考えられます。
=COUNTIFS(A2:A100, “*りんご*”, B2:B100, “*関東*”)
この結果が1以上であれば、その行は条件を満たしていると言えます。
補助列にこのCOUNTIFSを設定し、結果が1以上の行だけをオートフィルタで抽出する方法は、古いバージョンのエクセルでも安定して使える実務的な手法です。
OR条件を表現するための複数COUNTIFパターン
COUNTIFSはAND条件を扱うのに適していますが、OR条件を扱いたい場合は、複数のCOUNTIFまたはCOUNTIFSを合計するパターンが便利です。
例えば、「商品名にりんごまたはみかんを含む」行をカウントしたい場合、次のように書きます。
=COUNTIF(A2:A100, “*りんご*”) + COUNTIF(A2:A100, “*みかん*”)
行ごとに判定したい場合は、補助列に
= (COUNTIF(A2, “*りんご*”) + COUNTIF(A2, “*みかん*”))>0
のように設定し、TRUEになった行だけをフィルタやFILTER関数の条件として使用します。
このように、OR条件は「合計値が0より大きいかどうか」で判定するのが基本的な考え方です。
FILTER関数が使えない場合の代替手段と実務テクニック

すべての環境でFILTER関数が利用できるわけではありません。
そこで、古いバージョンのエクセルでも実務で使える、あいまい検索と複数条件抽出の代替手段を紹介します。オートフィルタ、高度なフィルター、関数と補助列の組み合わせなどを活用すれば、関数が制限されている環境でも柔軟な抽出が可能です。
また、これらの方法はFILTER関数と併用することもできます。既存のマクロや帳票の制約で、関数だけでは完結しない場合にも応用できます。
オートフィルタと検索ボックスでのあいまい抽出
最も手軽な方法は、オートフィルタの検索ボックスを使ったあいまい抽出です。
列の先頭行にフィルタを設定し、該当列のドロップダウンから検索ボックスにキーワードを入力すると、その文字列を含む値だけに絞り込みが可能です。
この検索ボックスでは、ワイルドカードを使った高度な指定もできます。例えば、りんごを含むが、青森という文字列を含まないなどの組み合わせも、条件のチェックを工夫することで表現可能です。
ただし、手作業で操作する必要があるため、自動レポートには向きません。日常的なスポット調査や一次確認には非常に便利な方法です。
高度なフィルターと条件範囲の活用
高度なフィルターは、シート上に設定した条件範囲をもとに、複雑な抽出を行う機能です。OR条件やAND条件を組み合わせた抽出に強く、特定の列だけを別の場所に抽出することもできます。
条件範囲にワイルドカードを含む文字列を指定すれば、あいまい検索も可能です。
例えば、A列に商品名、B列に地域があるデータを対象に、商品名にりんご、地域に関東を含む行を抽出したい場合、条件範囲として、商品名列の見出しの下に*りんご*、地域列の見出しの下に*関東*と入力します。そのうえで高度なフィルターを実行すると、条件を満たす行だけが抽出されます。
条件範囲を工夫することで、複数キーワードのOR条件なども表現できます。
関数と補助列で抽出フラグを作成する方法
FILTER関数が使えない場合でも、関数を補助列に設定して抽出フラグを作り、オートフィルタでそのフラグがTRUEまたは1の行だけを表示させる方法は、非常に実務的で汎用性があります。
例えば、C列に次のような式を設定して、商品名にりんごを含む行を判定します。
=IF(COUNTIF(A2, “*りんご*”)>0, 1, 0)
この列をもとにフィルタをかけ、1の行だけ表示すれば、あいまい検索による抽出が完了します。複数条件の場合も、COUNTIFSや複数COUNTIFの合計を使って同様にフラグを作成できます。
この方法はシート構造がわかりやすく、トラブルシューティングもしやすいため、共有ファイルやチーム運用にも向いています。
実務でよくあるあいまい検索のケース別サンプル
ここまで紹介した各種関数やテクニックを、実務でよくあるパターンに当てはめて具体的なサンプルとして整理します。
商品名や顧客名、住所などのデータでは、表記ゆれや部分一致が多いため、あいまい検索を駆使しなければ効率よく抽出できません。
ここでは、複数キーワードの検索、複数列にまたがる条件、否定条件を含む検索など、現場で特にニーズの高いパターンを取り上げます。自分の業務に近い例から応用すると、理解が深まりやすくなります。
商品名に複数のキーワードを含む行だけ抽出する
商品名に「りんご」と「ジュース」の両方を含む行だけを抽出したいケースでは、AND条件のあいまい検索が必要です。
FILTER関数が使える場合、商品名がA列で表がA2:C100にあるとすると、次のような式になります。
=FILTER(A2:C100, (ISNUMBER(SEARCH(“りんご”, A2:A100))) * (ISNUMBER(SEARCH(“ジュース”, A2:A100))))
両方の文字列を含む行だけが抽出されます。FILTERが使えない場合は、補助列に同様の条件式を設定し、結果がTRUEまたは1の行だけをオートフィルタで表示します。
このパターンを応用すれば、「機能」「容量」「ブランド名」など複数のキーワードを商品名から検索することも容易です。
顧客名と住所の両方であいまい検索する
顧客データベースでは、顧客名と住所の両方を条件にして抽出したいケースが頻繁に発生します。
例えば、「顧客名に佐藤を含み、住所に東京を含む」行だけ抽出したい場合は、複数列のAND条件によるあいまい検索となります。
FILTER関数を用いる場合、顧客名がB列、住所がC列で、抽出範囲がA2:D100なら、次のように指定できます。
=FILTER(A2:D100, (ISNUMBER(SEARCH(“佐藤”, B2:B100))) * (ISNUMBER(SEARCH(“東京”, C2:C100))))
これにより、条件を満たす顧客情報一式が抽出されます。
類似のパターンとして、「会社名と部署名」「品目名とカテゴリ」など、複数列のあいまい検索にも応用できます。
否定条件を含むあいまい検索の組み立て方
ときには、「特定のキーワードを含まない行だけ抽出したい」という否定条件が必要になることもあります。例えば、「商品名にサンプルを含まない行だけを抽出する」などです。
この場合、NOT関数や等号条件を使って条件式を反転させます。
FILTER関数の場合は、次のように指定できます。
=FILTER(A2:C100, NOT(ISNUMBER(SEARCH(“サンプル”, A2:A100))))
または
=FILTER(A2:C100, ISNUMBER(SEARCH(“サンプル”, A2:A100))=FALSE)
COUNTIFであれば、*サンプル*を条件にカウントし、その結果が0の行だけを抽出するように判定します。否定条件は間違えると意図しないデータが混入しやすいので、テストをしながら慎重に組み立てることが重要です。
あいまい検索と複数抽出を使いこなすための注意点とコツ
あいまい検索と複数条件抽出は非常に便利ですが、設定を誤ると意図しない行が含まれたり、逆に必要な行を見落としたりするリスクもあります。
また、関数の使い方やデータの持ち方によっては、処理速度が低下することもあります。
ここでは、実務でトラブルを避け、安定して運用するための注意点とコツを紹介します。抽出結果の検証方法や、データクレンジングのポイントもあわせて押さえておくことで、あいまい検索を安心して活用できるようになります。
全角半角・スペース・表記ゆれへの対処
日本語データでは、全角半角やスペースの有無、表記ゆれが原因で、想定どおりにあいまい検索が機能しないことがよくあります。
例えば、「りんご」と「リンゴ」、「株式会社」と「(株)」のような差異は、単純な文字列検索では拾えません。
対策としては、次のような方法が考えられます。
- UPPERやLOWER関数、ASC関数、CLEAN関数などで文字種を正規化する
- TRIM関数やSUBSTITUTE関数で不要なスペースや記号を除去する
- 別途マスタ表を用意し、表記ゆれを統一してから検索する
これらの前処理を行うことで、あいまい検索の精度が大きく向上します。
検索漏れと誤抽出を防ぐ検証のしかた
あいまい検索では、条件が複雑になるほど、検索漏れや誤抽出のリスクが高まります。
そのため、抽出結果を検証する仕組みを組み込んでおくことが重要です。
例えば、抽出前後の件数を比較し、大きく変動していないかを確認します。また、代表的なパターンのデータを複数ピックアップし、目視で条件に合っているかをチェックします。
さらに、抽出条件式を別セルに分解し、どの条件でTRUE/FALSEになっているのかを可視化しておくと、問題があったときに原因を特定しやすくなります。
処理速度と関数の複雑さを両立させるコツ
大量データに対して複数のSEARCH関数やCOUNTIFを配列演算で実行すると、計算に時間がかかることがあります。
処理速度を確保するには、関数の構造をシンプルに保ち、同じ計算を何度も繰り返さないよう工夫することが大切です。
具体的には、頻繁に使う中間計算は補助列に切り出し、最終的なFILTERやフィルタ条件ではその結果を参照します。また、不要な揮発性関数の使用を避けることも有効です。
このように設計しておくと、シートの保守性も上がり、他のメンバーが内容を理解しやすくなります。
まとめ
エクセルで「エクセル あいまい検索 複数 抽出」を実現するには、ワイルドカード、SEARCH・COUNTIF系関数、FILTER関数といった複数の機能を組み合わせて使うことが重要です。
最新の環境では、FILTER関数にあいまい条件の配列を渡すことで、動的で柔軟な抽出表を構築できますし、旧バージョンでも補助列とオートフィルタを使えば、同様のロジックを実現できます。
特に、AND条件とOR条件の考え方、否定条件の扱い方、全角半角や表記ゆれへの対処などを押さえておけば、実務で求められる多くのケースに対応できます。
まずは、小さなデータセットで本記事のサンプルを試し、自分の業務データに合わせて条件式をカスタマイズしてみてください。あいまい検索と複数抽出を使いこなすことで、エクセル作業の効率と精度が大きく向上します。
コメント