はじめに
VLOOKUPの代替として注目を集めている「INDEX」と「MATCH」関数。特に「複数条件」で検索する場合、その真価を発揮します。本記事では、「INDEX」と「MATCH」関数を使った「複数条件」検索について、基礎から応用まで詳しく解説します。
「INDEX+MATCH」関数の基本構造
まず、単一条件での基本的な使い方を確認しましょう。
=INDEX(返値範囲, MATCH(検索値, 検索範囲, 0))
- INDEX関数:指定された範囲から特定の値を取り出す
- MATCH関数:検索範囲内での検索値の位置(行番号または列番号)を返す
複数条件でのINDEX、MATCH関数の使用方法
複数条件を使用する場合は、MATCH関数を入れ子にします:
=INDEX(返値範囲,
MATCH(1,
(条件範囲1=検索値1)*(条件範囲2=検索値2),
0
)
)
重要なポイント
- 条件式をカッコでくくり、掛け算「*」で連結します
- MATCH関数の検索値として「1」を指定します
具体例で学ぶ|Excelで「INDEXとMATCH」関数を使った「複数条件」検索の完全ガイド

以下のような売上データを例に考えてみましょう:
表1:売上データ(A2:D10のセル範囲)
| 行/列 | A | B | C | D |
|---|---|---|---|---|
| 1 | 日付 | 商品 | 地域 | 売上 |
| 2 | 2024/4/1 | A商品 | 東京 | 1,000 |
| 3 | 2024/4/1 | B商品 | 大阪 | 1,500 |
| 4 | 2024/4/1 | C商品 | 福岡 | 800 |
| 5 | 2024/4/2 | A商品 | 大阪 | 1,200 |
| 6 | 2024/4/2 | B商品 | 東京 | 900 |
| 7 | 2024/4/2 | C商品 | 名古屋 | 1,100 |
| 8 | 2024/4/3 | A商品 | 福岡 | 1,300 |
| 9 | 2024/4/3 | B商品 | 名古屋 | 1,400 |
| 10 | 2024/4/3 | C商品 | 東京 | 950 |
検索条件入力セル
| 行/列 | F | G |
|---|---|---|
| 1 | 検索条件 | 入力値 |
| 2 | 日付 | 2024/4/1 |
| 3 | 商品 | A商品 |
特定の日付と商品の売上を検索する場合:
=INDEX(D2:D10,
MATCH(1,
(A2:A10=G2)*(B2:B10=G3),
0
)
)
この数式は以下の要素で構成されています:
- 返値範囲 :D2:D10(売上データ)
- 条件範囲1:A2:A10(日付列)
- 条件範囲2:B2:B10(商品列)
- 検索値1 :G2(日付の検索条件)
- 検索値2 :G3(商品の検索条件)
検索結果の解説

上記の条件を「2024/4/1」の「C商品」で検索した場合の計算過程を見てみましょう:
表2:検索結果
| 計算項目 | 結果 |
|---|---|
| 日付の一致 | {TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE} |
| 商品の一致 | {FALSE; FALSE; TRUE; FALSE; FALSE; TRUE; FALSE; FALSE; TRUE} |
| 条件の積 | {0; 0; 1; 0; 0; 0; 0; 0; 0} |
| 最終結果 | 800 |
計算の流れ:
- 日付の一致チェック(A2:A10=G2)
- 各行の日付と検索条件(2024/4/1)を比較
- 最初の「3行」がTRUE(一致)
- 商品の一致チェック(B2:B10=G3)
- 各行の商品と検索条件(C商品)を比較
- 「3」,「6」,「9」行目がTRUE(一致)
- 条件の積の計算((A2:A10=G2)*(B2:B10=G3))
- TRUEは1、FALSEは0として計算
- 両方の条件が一致する行のみ「1」となる
- この例では3行目のみが「1」
- MATCH関数で位置を特定
- 1が見つかった最初の位置「3」を返す
- INDEX関数で値を取得
- 返値範囲(D2:D10)の「3行目」の値を返す
- 結果として800が返される
この例では、「2024/4/1」の「C商品」の売上「800」が正しく抽出されています。エラーとならない理由は:
- 検索条件が正確に一致する行が存在する
- 数式で参照している範囲が正しく設定されている
Excel練習用サンプルデータ|ダウンロード
上記で解説したExcelデータを以下からダウンロードできますので、練習用としてお使いください。
応用テクニック
1. 3つ以上の条件を使用する
=INDEX(返値範囲,
MATCH(1,
(条件範囲1=検索値1)*(条件範囲2=検索値2)*(条件範囲3=検索値3),
0
)
)
2. 部分一致検索を組み合わせる
SEARCH関数やワイルドカード(*)を使用することで、部分一致検索も可能です:
=INDEX(返値範囲,
MATCH(1,
(ISNUMBER(SEARCH("検索文字列",条件範囲1)))*(条件範囲2=検索値2),
0
)
)
エラー処理
検索条件に該当するデータが見つからない場合、#N/A エラーが返されます。これを防ぐには、IFERROR関数を使用します:
=IFERROR(
INDEX(返値範囲,
MATCH(1,
(条件範囲1=検索値1)*(条件範囲2=検索値2),
0
)
),
"該当なし"
)
パフォーマンスの考慮点
- データ量が多い場合は、検索範囲を必要最小限に絞る
- 可能な限り、数式を複製せず、1つの数式で処理する
- 頻繁に更新が必要な場合は、ヘルパー列の使用を検討する
承知いたしました。この回答の中で「INDEX MATCH 複数条件」のFAQを作成いたします。
INDEX MATCH複数条件のよくある質問FAQ
📌 基本的な質問
Q1: INDEX MATCH複数条件とは何ですか?
A: INDEX MATCH複数条件とは、2つ以上の検索条件を同時に満たすデータを検索・抽出するExcel関数の組み合わせです。
基本構文:
=INDEX(返値範囲,
MATCH(1,
(条件範囲1=検索値1)*(条件範囲2=検索値2),
0
)
)
使用例: 「2024年4月」かつ「A商品」の売上データを検索する際に使用します。
Q2: なぜ掛け算(*)を使うのですか?
A: 掛け算(*)は論理AND演算を表現するためです。
| 条件1 | 条件2 | 結果 | 意味 |
|---|---|---|---|
| TRUE(1) | TRUE(1) | 1 | ✅ 両方一致 |
| TRUE(1) | FALSE(0) | 0 | ❌ 片方のみ一致 |
| FALSE(0) | TRUE(1) | 0 | ❌ 片方のみ一致 |
| FALSE(0) | FALSE(0) | 0 | ❌ 両方不一致 |
MATCH関数は「1」を検索するため、すべての条件が一致した行のみが対象となります。
Q3: 配列数式として入力する必要がありますか?
A: Excelのバージョンによって異なります。
✅ Excel 365・2021の場合:
- 通常のEnterキーで入力可能(動的配列対応)
⚠️ Excel 2019以前の場合:
- Ctrl + Shift + Enterで配列数式として入力が必要
- 正しく入力されると数式が { } で囲まれて表示されます
🚨 エラーに関する質問
Q4: #N/Aエラーが表示される原因は?
A: #N/Aエラーの主な原因と対処法:
原因1: 検索条件に一致するデータが存在しない
- 入力値のスペルミス
- 全角・半角の違い
- データ型の不一致(文字列vs数値)
原因2: 参照範囲のミス
- 条件範囲と返値範囲の行数が一致しない
- 範囲指定が間違っている
エラー回避の数式:
=IFERROR(
INDEX(D2:D10,
MATCH(1,
(A2:A10=G2)*(B2:B10=G3),
0
)
),
"該当データなし"
)
Q5: #VALUE!エラーが出る場合の対処法は?
A: #VALUE!エラーの原因と解決策:
主な原因:
- 配列数式として正しく入力されていない(Excel 2019以前)
- 条件範囲のサイズが異なる
- データ型の不整合
解決手順:
- Ctrl + Shift + Enterで再入力
- すべての範囲が同じ行数になっているか確認
- 検索値が適切なデータ型か確認
⚖️ 他の関数との比較
Q6: VLOOKUPとINDEX MATCHの違いは?
A: 詳細な比較表:
| 項目 | VLOOKUP | INDEX MATCH |
|---|---|---|
| 複数条件 | ❌ 不可 | ✅ 可能 |
| 左方向検索 | ❌ 不可 | ✅ 可能 |
| 列の挿入・削除 | ❌ エラーの原因 | ✅ 影響なし |
| 処理速度 | ⚡ 高速 | 🐌 やや低速 |
| 学習コスト | ✅ 簡単 | ❌ やや複雑 |
使い分けの目安:
- 単純な検索: VLOOKUP
- 複数条件・柔軟な検索: INDEX MATCH
Q7: XLOOKUPとの違いは?
A: XLOOKUP(Excel 365の新関数)との比較:
XLOOKUP複数条件の書き方:
=XLOOKUP(1, (条件範囲1=検索値1)*(条件範囲2=検索値2), 返値範囲)
| 項目 | INDEX MATCH | XLOOKUP |
|---|---|---|
| 複数条件 | ✅ 可能 | ✅ 可能 |
| 書きやすさ | ❌ 複雑 | ✅ シンプル |
| 対応バージョン | ✅ 全バージョン | ❌ Excel 365のみ |
| エラー処理 | IFERROR必要 | 組み込み機能 |
🎯 応用・高度な使い方
Q8: 3つ以上の条件で検索するには?
A: 条件を掛け算で追加するだけです:
=INDEX(返値範囲,
MATCH(1,
(条件範囲1=検索値1)*
(条件範囲2=検索値2)*
(条件範囲3=検索値3)*
(条件範囲4=検索値4),
0
)
)
⚠️ 注意点: 条件が多くなるほど処理速度が低下します。5つを超える条件の場合は、フィルタ機能やピボットテーブルの使用を検討してください。
Q9: 部分一致で検索するには?
A: SEARCH関数やワイルドカードを組み合わせます:
=INDEX(D2:D10,
MATCH(1,
(ISNUMBER(SEARCH("商品",B2:B10)))*
(A2:A10=G2),
0
)
)
この例では、B列に「商品」という文字が含まれ、かつA列が検索条件と一致する行を検索します。
Q10: 複数の結果を取得するには?
A: INDEX MATCH は最初に見つかった1つの結果のみ返します。複数結果には以下の方法があります:
方法1: FILTER関数(Excel 365)
=FILTER(D2:D10, (A2:A10=G2)*(B2:B10=G3))
方法2: 配列数式を複数セルに展開
SMALL関数とROW関数を組み合わせて、2番目、3番目の一致を求めることも可能ですが、非常に複雑になります。
💡 推奨: 複数結果が必要な場合は、FILTER関数(Excel 365)またはピボットテーブルの使用を強く推奨します。
⚡ パフォーマンスに関する質問
Q11: 大量データで処理が遅い場合の対策は?
A: パフォーマンス改善の方法:
1. 範囲の最適化
- 不要な行・列を範囲から除外
- 動的範囲(OFFSET、INDIRECT)を避ける
- 可能な限り固定範囲を使用
2. ヘルパー列の活用
// ヘルパー列E2に以下を入力
=A2&"|"&B2
// 検索式をシンプルに
=INDEX(D2:D10, MATCH(G2&"|"&G3, E2:E10, 0))
3. 計算方法の変更
- 手動計算モードに変更(Ctrl+Alt+F9)
- 不要な数式の削除
- 配列数式の見直し
Q12: メモリ不足エラーが出る場合は?
A: メモリ不足の対処法:
症状:
- 「メモリまたはディスク領域が不足しています」
- Excelがフリーズする
- 計算が終わらない
対処法:
- データの分割: 大きなデータセットを小さく分ける
- Power Queryの使用: データ処理をPower Queryで実行
- データベースの活用: AccessやSQLを検討
- 64bit版Excelの使用: より多くのメモリを活用可能
🔧 トラブルシューティング
Q13: 数式が動作しないときのチェックポイントは?
A: 段階的なトラブルシューティング手順:
ステップ1: 基本確認
- 数式にスペルミスがないか
- 範囲指定が正確か
- 配列数式として入力されているか(Excel 2019以前)
ステップ2: 条件の確認
// 条件1の確認
=A2:A10=G2
// 条件2の確認
=B2:B10=G3
// 条件の積の確認
=(A2:A10=G2)*(B2:B10=G3)
ステップ3: データ型の確認
- 数値が文字列として保存されていないか
- 日付形式が統一されているか
- 不可視文字が含まれていないか
Q14: 結果が間違っている場合の原因は?
A: よくある間違いの原因と対策:
| 問題 | 原因 | 対策 |
|---|---|---|
| 常に最初の行が返される | 条件式が常にTRUEになっている | 条件式を個別に確認 |
| 空白が返される | 返値範囲に空白セルがある | 返値範囲の確認・修正 |
| 異なる行のデータが返される | 範囲のズレ | すべての範囲の行数を統一 |
💡 デバッグのコツ: F9キーを使って数式の一部分だけを計算し、期待通りの結果になっているかを段階的に確認しましょう。
Q15: 他のユーザーと共有する際の注意点は?
A: ファイル共有時の重要なポイント:
⚠️ バージョン互換性:
- Excel 2019以前では配列数式として認識されない場合がある
- XLOOKUP、FILTER関数は古いバージョンで動作しない
✅ 互換性を保つ方法:
- ヘルパー列の併用: 複雑な数式をシンプルに分解
- 説明の追加: セルにコメントで使い方を記載
- 動作確認: 異なるExcelバージョンでテスト
- 代替案の提供: 古いバージョン用の数式も準備
🎯 まとめ
INDEX MATCH複数条件は、Excelの強力な検索機能です。基本的な構文を理解し、エラーの対処法を覚えることで、様々な業務シーンで活用できます。不明点があれば、このFAQを参考に段階的にトラブルシューティングを行ってください。
さらに詳しい使い方や実践例については、関連記事もぜひご覧ください。
まとめ
INDEX MATCH関数による複数条件検索は、以下のような利点があります:
- VLOOKUPよりも柔軟な検索が可能
- 左方向への検索も可能
- 複数の条件を組み合わせられる
- データの挿入・削除に強い
ただし、以下の点に注意が必要です:
- 配列数式として入力する必要がある
- 構文がやや複雑
- 大量データの場合はパフォーマンスに影響が出る可能性がある
これらの特徴を理解し、適切に使用することで、より効率的なExcelワークが可能になります。
excel15.comサイトから検索した結果をもとに、INDEX MATCH複数条件に関連する記事をまとめて紹介いたします。
📚 関連記事 – INDEX MATCH複数条件をもっと学ぶ
🔰 基本から応用まで
1. 【必読】INDEX & MATCH関数 完全ガイド
📖 Excelで「INDEXとMATCH」関数を使った「複数条件」検索の完全ガイド
- INDEX MATCH複数条件の基本構文から実例まで詳しく解説
- VLOOKUPとの比較とメリット・デメリット
- エラー処理と実践的な活用方法
2. 【脱VLOOKUP】上級者の常識テクニック
📖 【脱VLOOKUP】Excel上級者の常識!INDEX & MATCH関数組み合わせテクニック
- VLOOKUPの弱点を完全解決するテクニック
- INDEX関数とMATCH関数の基本的な組み合わせ方
- どんな方向からでもデータ検索が可能な方法
3. 【基礎強化】MATCH関数でデータ位置を特定
📖 【Excel】VLOOKUPの弱点を克服!MATCH関数でデータの位置を特定
- MATCH関数の基本的な使い方
- 指定範囲内での検査値の位置を数値で取得
- INDEX関数との連携テクニック
🚀 進化版・代替手法
4. 【最新】XLOOKUP関数による複数条件検索
📖 VLOOKUP進化版!「XLOOKUP」の使い方!「複数条件」での検索
- XLOOKUP関数を使った複数条件検索の方法
- INDEX MATCHとXLOOKUPの比較
- より簡単な構文でのデータ抽出
5. 【応用】XLOOKUP関数 基本から応用まで
📖 VLOOKUP進化版!「XLOOKUP」の使い方!柔軟な検索と取得
- XLOOKUP関数の基本構文と使い方
- VLOOKUPからの移行ポイント
- 柔軟な検索機能の活用法
6. 【部分一致】XLOOKUP関数でワイルドカード検索
📖 Excel XLOOKUP関数で部分一致検索を極める!ワイルドカード活用
- XLOOKUP関数での部分一致検索テクニック
- ワイルドカード(*、?)の効果的な使い方
- VLOOKUP関数との部分一致比較
🎯 実践・応用テクニック
7. 【複数結果】条件を満たすデータをすべて抽出
📖 Excel関数による「複数条件」を満たすデータを抽出する方法
- INDEX、SMALL、ROW関数を使った複数結果の取得
- 複数条件に一致するすべてのデータを抽出
- 配列数式を使った高度な検索テクニック
8. 【リスト抽出】複数条件のリストから該当データを抽出
📖 Excel関数による複数条件のリストをもとに該当するデータを抽出
- FILTER関数とISNUMBER関数の組み合わせ
- 複数の条件リストから該当データを効率的に抽出
- Excel 365の新機能を活用した検索方法
9. 【特定行抽出】特定の文字を含む行を抽出
📖 エクセルで「特定の文字を含む行」を「抽出」する手順の解説
- FILTER関数を使った複数条件での行抽出
- 文字列検索と条件組み合わせのテクニック
- 実務で使える抽出パターン集
💡 検索・抽出の総合ガイド
10. 【比較検討】VLOOKUP vs HLOOKUP vs XLOOKUP
📖 ExcelでVLOOKUP、HLOOKUP、XLOOKUP関数を使用したデータ検索
- 3つの検索関数の特徴と使い分け
- INDEX関数とMATCH関数との組み合わせ比較
- 状況に応じた最適な関数選択ガイド
11. 【2次元検索】縦横検索でクロス集計から抽出
📖 Excel XLOOKUP関数:入れ子で「縦横検索」2次元データ抽出
- XLOOKUP関数の入れ子による2次元検索
- INDEX/MATCHの代替としてのXLOOKUP活用
- クロス集計表からの効率的なデータ抽出
12. 【逆引き検索】データ抽出の自由度を高める
📖 Excel XLOOKUP関数:逆引き検索でデータ抽出を自由自在に
- 従来のINDEX/MATCHによる逆引きとXLOOKUPの比較
- より簡単な逆引き検索の実現方法
- データ構造に左右されない柔軟な検索
🔧 特殊な検索・抽出パターン
13. 【クロス集計】複数シートからのデータ抽出
- 別シートのクロス表からの検索抽出
- INDEX関数の複数範囲指定テクニック
- シート横断的なデータ検索方法
14. 【連続列抽出】該当データの連続する列を一括取得
- XLOOKUP関数による連続列の一括抽出
- 複数条件での効率的なデータ検索
- 範囲指定の最適化テクニック
15. 【横並び抽出】条件を満たすデータを横並びで表示
📖 Excel関数による条件を満たすデータを横並びで抽出する方法
- FILTER関数とTRANSPOSE関数の組み合わせ
- 縦データを横並びに変換する方法
- Excel 2021/365の新機能活用
🎯 学習ロードマップ
🔰 初心者向け(基礎固め)
📈 中級者向け(応用展開)
🚀 上級者向け(実践活用)
これらの関連記事を順番に学習することで、INDEX MATCH複数条件から始まり、Excel検索機能の全体像を体系的にマスターできます。各記事には実際のサンプルファイルも用意されているため、実践的なスキル向上が期待できます。

コメント