エクセルで複数の条件を組み合わせて一致する値を取得することは、実務のデータ分析において非常に頻繁に必要とされる操作です。
INDEX+MATCHの組み合わせやXLOOKUP・FILTER関数を使うことで複合条件検索が実現します。
本記事では、2つ・3つの複数条件を満たす値を返すための各種方法を、旧バージョン対応から最新関数まで詳しく解説いたします。
複数条件での検索・抽出に課題を感じている方は、ぜひ参考にしてください。
複数条件検索の基本と方法の全体像
それではまず、複数条件を満たす値を返すための基本的な考え方と方法の全体像について解説していきます。
単一条件のVLOOKUPだけでは対応できない複合条件検索には、複数のアプローチが存在します。
バージョンと目的に応じて最適な方法を選択することが重要です。
複数条件検索が必要になる典型的な場面
複数条件検索が必要になる場面として「商品名かつ店舗名で売上を検索」「担当者かつ月で実績を取得」「顧客IDかつ商品カテゴリで価格を参照」などが挙げられます。
これらはいずれも2つの条件が一致する行の特定の列の値を取得する操作で、単一条件のVLOOKUPでは対応できません。
複数条件検索の実装には補助列を使う方法・配列数式を使う方法・最新関数を使う方法の3つのアプローチがあります。
それぞれの特徴を理解した上で状況に合った方法を選択することが、効率的な数式設計の基本です。
補助列を使った複数条件検索の方法
最もシンプルな複数条件検索の方法は、複数の条件列を「&」で結合した補助列を作成してVLOOKUPで参照する方法です。
例えばA列(商品名)とB列(店舗名)を結合した「商品名&店舗名」という補助列をC列に作り、検索キーも同様に結合してVLOOKUPで検索します。
補助列を使う方法は数式がシンプルで理解しやすい反面、元のデータシートに列を追加する必要があるデメリットがあります。
補助列の追加が難しい場合は配列数式または最新関数での実装を検討しましょう。
INDEX+MATCH配列数式で補助列なしに複数条件検索する
補助列を使わずに複数条件検索を実現する代表的な方法がINDEX+MATCH配列数式です。
「=INDEX(C:C,MATCH(1,(A:A=E1)*(B:B=F1),0))」をCtrl+Shift+Enterで入力することで、A列がE1に一致かつB列がF1に一致する行のC列の値が返されます。
条件の乗算(*)によってAND条件を表現するのがこの数式の核心で、条件を増やす場合はさらに条件を乗算で追加します。
Excel 2021以降ではCtrl+Shift+Enterなしで入力できる場合もあります。
3つ以上の条件に対応した複合条件検索の実装
続いては、3つ以上の条件を組み合わせた複合条件検索の実装方法を確認していきます。
条件が増えても基本の考え方は変わらず、条件の数だけ乗算を追加することで対応できます。
3条件のINDEX+MATCH配列数式
3つの条件(A列・B列・C列がそれぞれ指定値と一致)に対応する場合は条件を3つ乗算します。
「=INDEX(D:D,MATCH(1,(A:A=G1)*(B:B=H1)*(C:C=I1),0))」をCtrl+Shift+Enterで入力することで3条件AND検索が実現します。
条件の数がいくつに増えても同様の構造で対応できるため、この数式のパターンを一度習得すれば様々な複合条件に応用できます。
条件が4つ以上になると数式が長くなるため、補助列を使うアプローチか最新関数への移行を検討することをおすすめします。
XLOOKUP関数での複数条件検索(Excel 365・2021以降)
Excel 365・2021以降ではXLOOKUP関数を使うことで、より簡潔に複数条件検索が実現できます。
「=XLOOKUP(E1&F1,A:A&B:B,C:C,”なし”)」のように検索値と検索範囲を「&」で連結する方法で2条件のAND検索が可能です。
XLOOKUPはIFERROR不要でエラー処理が引数に含まれ、数式がシンプルになるため、使える環境ではXLOOKUPへの移行を強くおすすめします。
3条件以上の場合も同様に「&」で連結を追加するだけで対応できます。
FILTER関数で複数条件一致の全行を一括取得する
一致するデータが複数行ある場合にすべての行を取得したいケースでは、FILTER関数が最も適しています。
「=FILTER(D:D,(A:A=G1)*(B:B=H1))」とすることで2条件AND一致の全行のD列データが一括取得されます。
FILTER関数はスピル機能で複数行の結果を自動展開するため、一致件数が変動しても数式を変えずに全件表示が実現します。
複数列を同時に取得したい場合は「=FILTER(A:D,(B:B=G1)*(C:C=H1))」のようにA〜D列全体を指定することで複数列を一括抽出できます。
複数条件検索のパフォーマンスと選択のガイドライン
続いては、複数条件検索の方法別パフォーマンスの違いと、状況に応じた選択ガイドラインを確認していきます。
方法によって計算速度や保守性に差があるため、大量データを扱う場合は特に注意が必要です。
方法別パフォーマンスの比較
補助列を使ったVLOOKUPは最もパフォーマンスが高く大量データでも高速に動作します。
INDEX+MATCH配列数式は補助列不要ですが、配列数式は全セルを評価するため大量データでは処理が重くなることがあります。
XLOOKUP・FILTER関数は最適化されているため配列数式より高速な場合が多いですが、バージョンの制約があります。
データ量が多い場合は補助列+VLOOKUPまたはXLOOKUPの選択がパフォーマンス面で有利です。
バージョン別の最適な方法選択ガイド
エクセルのバージョンに応じた複数条件検索の最適な方法を整理します。
Excel 2010〜2016:補助列+VLOOKUP または INDEX+MATCH配列数式
Excel 2019:MAXIFS・MINIFS対応。INDEX+MATCHが主力
Excel 2021:XLOOKUP・FILTER関数が使用可能。これらを優先推奨
Microsoft 365:全最新関数対応。XLOOKUP・FILTERを積極活用
エラー対処とデータ品質の確保
複数条件検索で一致するデータが存在しない場合、INDEX+MATCHはエラーを返すためIFERROR関数で対処が必要です。
「=IFERROR(INDEX(C:C,MATCH(1,(A:A=E1)*(B:B=F1),0)),”該当なし”)」のようにエラー処理を組み込むことで、一致なしの場合も見やすい表示になります。
検索キーに空白や表記揺れがあると一致しないケースが発生するため、データの正規化(トリミング・表記統一)を事前に行うことがデータ品質確保の基本です。
TRIM関数・SUBSTITUTE関数を使って検索前にデータを整形しておくことで、検索精度が大幅に向上します。
まとめ
エクセルで複数条件を満たす値を返す方法は、補助列+VLOOKUP・INDEX+MATCH配列数式・XLOOKUP・FILTER関数の4つが主要な選択肢です。
バージョンが旧い場合は補助列+VLOOKUPまたはINDEX+MATCH配列数式で対応し、Excel 2021以降ではXLOOKUP・FILTERを優先的に活用することをおすすめします。
一致件数が複数になる可能性がある場合はFILTER関数が最も柔軟に対応でき、スピル機能で全件を自動表示できます。
複数条件検索のテクニックを習得することで、エクセルでのデータ分析力が一段と高まるでしょう。