はじめに
Excelでデータを検索する際、「複数の条件に合うデータだけを取り出したい」と思ったことはありませんか?
例えば、「氏名が佐藤さんで、かつ商品がAの場合の点数だけを抽出したい」といったケースです。
しかし、VLOOKUP関数ではこのような複数条件検索には対応できません。
本記事では、初心者の方にもわかりやすくINDEX関数とMATCH関数の組み合わせ、そしてFILTER関数を使った柔軟な検索方法を丁寧に解説します。
1. VLOOKUPではなぜ複数条件に対応できないのか?
VLOOKUP関数はある1つの値(検索キー)に基づいて、指定列から一致する値を探す関数です。
しかし以下のような制限があります:
- 複数条件を同時に指定できない(検索キーは1つだけ)
- 検索列は必ず最左列である必要がある
- 左側の列を参照することができない
そのため、「名前が佐藤」で「商品がA」といった2つ以上の条件を扱うには限界があるのです。
2. INDEX関数とMATCH関数の組み合わせで解決する方法
2-1. INDEX関数とは?
=INDEX(範囲, 行番号)
の形式で、指定した範囲の中から特定の位置にある値を返す関数です。
例:
=INDEX(B2:B6, 3)
→ B2:B6の3番目のセルの値を返す
2-2. MATCH関数とは?
=MATCH(検索値, 検索範囲, 検索の型)
の形式で、検索値が範囲の中で何番目にあるかを返す関数です。
検索の型の違い:
型 | 意味 |
---|---|
0 | 完全一致(通常はこれ) |
1 | 以下の最大値(昇順ソートが必要) |
-1 | 以上の最小値(降順ソートが必要) |
2-3. 複数条件検索への応用(配列式)
MATCH関数では、条件を掛け合わせて一致する行を特定できます。
=MATCH(1, (A2:A6="佐藤")*(B2:B6="A"), 0)
この式は、
- A列が「佐藤」
- かつB列が「A」
に一致する最初の行番号を返します。
その行番号をINDEX関数に組み合わせて使えば、該当する点数を抽出できます:
=INDEX(C2:C6, MATCH(1, (A2:A6="佐藤")*(B2:B6="A"), 0))

※ Excelのバージョンによっては、Ctrl+Shift+Enter(配列数式)で確定が必要です。
🔍 よくあるトラブルと対処
- #N/Aエラー:条件に一致する行がない、もしくは文字列の全角・半角違いなどが原因。
- 空白セルがあると式の計算が意図せず失敗することも。データの前処理をしましょう。
3. FILTER関数を使った複数条件検索(Excel 365以降)
FILTER関数は、条件に合致したデータをまとめて抽出できる便利な関数です。
Excel 365やExcel 2021以降で利用できます。
基本構文:
=FILTER(範囲, 条件)
複数条件は掛け算で書けます:
=FILTER(C2:C6, (A2:A6="佐藤")*(B2:B6="A"))

FILTER関数のメリット
- 配列数式のような特殊な入力不要
- 一致する複数の行すべてを抽出できる
- 検索条件のORは
+
(加算)で記述可能
制限事項
- Excel 365/2021以降でのみ使用可
- 条件に一致する値がないと
#CALC!
エラーになる IFERROR
関数と組み合わせることで、エラー時に任意のメッセージを表示できます:
=IFERROR(FILTER(C2:C6, (A2:A6="田中")*(B2:B6="A")), "該当なし")

4. INDEX MATCHとFILTERのどちらを使えばいい?
比較項目 | INDEX MATCH | FILTER関数 |
---|---|---|
対応バージョン | すべてのExcel | Excel 365以降 |
抽出方法 | 最初に一致した1件のみ | 条件に一致するすべての行 |
柔軟性 | 非常に高い(複雑な処理可能) | シンプルで直感的 |
習得の難易度 | やや高め | 初心者でも使いやすい |
5. よくある疑問とトラブル解決
Q. 複数条件で正しく抽出できない(#N/A)
→ データに空白があったり、条件の書き方が間違っている可能性。配列の範囲がずれていないか確認しましょう。
Q. 条件が3つ以上ある場合も対応できる?
→ (条件1)*(条件2)*(条件3)
のように掛け合わせればOK。
Q. FILTER関数でOR条件にするには?
→ (条件1)+(条件2)
のように加算で書きます。
6. 実務での使用シーンの例
複数条件検索が活躍する場面:
- 社員マスタから「部署が営業部」かつ「評価がA」の人を抽出したい
- 顧客リストから「地域が東京」かつ「購入額が1万円以上」の人だけにDMを送りたい
- 在庫表から「商品カテゴリーが食品」で「在庫数が0」の商品を抽出したい
このようなケースで、INDEX MATCHやFILTER関数を活用することで、効率よく抽出が可能です。
7. まとめ|複数条件検索は思ったよりカンタン!
VLOOKUPでは難しかった複数条件の検索も、
- INDEX関数+MATCH関数(配列式)
- FILTER関数(Excel 365限定)
を使えば、柔軟に対応できます。
実務でのデータ抽出や管理をもっとラクにしたい方は、ぜひ実際のシートで試してみてください!