r1|Excelで「INDEXとMATCH」関数を使った「複数条件」検索の完全ガイド

目次

はじめに

VLOOKUPの代替として注目を集めている「INDEX」と「MATCH」関数。特に「複数条件」で検索する場合、その真価を発揮します。本記事では、「INDEX」と「MATCH」関数を使った「複数条件」検索について、基礎から応用まで詳しく解説します。

「INDEX+MATCH」関数の基本構造

まず、単一条件での基本的な使い方を確認しましょう。

=INDEX(返値範囲, MATCH(検索値, 検索範囲, 0))
  • INDEX関数:指定された範囲から特定の値を取り出す
  • MATCH関数:検索範囲内での検索値の位置(行番号または列番号)を返す

複数条件でのINDEX、MATCH関数の使用方法

複数条件を使用する場合は、MATCH関数を入れ子にします:

=INDEX(返値範囲,
    MATCH(1,
        (条件範囲1=検索値1)*(条件範囲2=検索値2),
        0
    )
)

重要なポイント

  1. 条件式をカッコでくくり、掛け算「*」で連結します
  2. MATCH関数の検索値として「1」を指定します

具体例で学ぶ|Excelで「INDEXとMATCH」関数を使った「複数条件」検索の完全ガイド

以下のような売上データを例に考えてみましょう:

表1:売上データ(A2:D10のセル範囲)

行/列ABCD
1日付商品地域売上
22024/4/1A商品東京1,000
32024/4/1B商品大阪1,500
42024/4/1C商品福岡800
52024/4/2A商品大阪1,200
62024/4/2B商品東京900
72024/4/2C商品名古屋1,100
82024/4/3A商品福岡1,300
92024/4/3B商品名古屋1,400
102024/4/3C商品東京950

検索条件入力セル

行/列FG
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

計算の流れ:

  1. 日付の一致チェック(A2:A10=G2)
    • 各行の日付と検索条件(2024/4/1)を比較
    • 最初の「3行」がTRUE(一致)
  2. 商品の一致チェック(B2:B10=G3)
    • 各行の商品と検索条件(C商品)を比較
    • 「3」,「6」,「9」行目がTRUE(一致)
  3. 条件の積の計算((A2:A10=G2)*(B2:B10=G3))
    • TRUEは1、FALSEは0として計算
    • 両方の条件が一致する行のみ「1」となる
    • この例では3行目のみが「1」
  4. MATCH関数で位置を特定
    • 1が見つかった最初の位置「3」を返す
  5. 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. データ量が多い場合は、検索範囲を必要最小限に絞る
  2. 可能な限り、数式を複製せず、1つの数式で処理する
  3. 頻繁に更新が必要な場合は、ヘルパー列の使用を検討する

承知いたしました。この回答の中で「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以前)
  • 条件範囲のサイズが異なる
  • データ型の不整合

解決手順:

  1. Ctrl + Shift + Enterで再入力
  2. すべての範囲が同じ行数になっているか確認
  3. 検索値が適切なデータ型か確認

⚖️ 他の関数との比較

Q6: VLOOKUPとINDEX MATCHの違いは?

A: 詳細な比較表:

項目VLOOKUPINDEX MATCH
複数条件❌ 不可✅ 可能
左方向検索❌ 不可✅ 可能
列の挿入・削除❌ エラーの原因✅ 影響なし
処理速度⚡ 高速🐌 やや低速
学習コスト✅ 簡単❌ やや複雑

使い分けの目安:

  • 単純な検索: VLOOKUP
  • 複数条件・柔軟な検索: INDEX MATCH

Q7: XLOOKUPとの違いは?

A: XLOOKUP(Excel 365の新関数)との比較:

XLOOKUP複数条件の書き方:

=XLOOKUP(1, (条件範囲1=検索値1)*(条件範囲2=検索値2), 返値範囲)
項目INDEX MATCHXLOOKUP
複数条件✅ 可能✅ 可能
書きやすさ❌ 複雑✅ シンプル
対応バージョン✅ 全バージョン❌ 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がフリーズする
  • 計算が終わらない

対処法:

  1. データの分割: 大きなデータセットを小さく分ける
  2. Power Queryの使用: データ処理をPower Queryで実行
  3. データベースの活用: AccessやSQLを検討
  4. 64bit版Excelの使用: より多くのメモリを活用可能

🔧 トラブルシューティング

Q13: 数式が動作しないときのチェックポイントは?

A: 段階的なトラブルシューティング手順:

ステップ1: 基本確認

  1. 数式にスペルミスがないか
  2. 範囲指定が正確か
  3. 配列数式として入力されているか(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関数は古いバージョンで動作しない

✅ 互換性を保つ方法:

  1. ヘルパー列の併用: 複雑な数式をシンプルに分解
  2. 説明の追加: セルにコメントで使い方を記載
  3. 動作確認: 異なるExcelバージョンでテスト
  4. 代替案の提供: 古いバージョン用の数式も準備

🎯 まとめ

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の新機能活用

🎯 学習ロードマップ

🔰 初心者向け(基礎固め)

  1. INDEX & MATCH関数 完全ガイドまずはここから
  2. MATCH関数でデータの位置を特定
  3. VLOOKUP vs XLOOKUP比較

📈 中級者向け(応用展開)

  1. 脱VLOOKUP上級テクニック
  2. XLOOKUP複数条件検索
  3. 部分一致検索テクニック

🚀 上級者向け(実践活用)

  1. 複数結果の一括抽出
  2. 2次元検索テクニック
  3. 特殊パターンの検索・抽出

これらの関連記事を順番に学習することで、INDEX MATCH複数条件から始まり、Excel検索機能の全体像を体系的にマスターできます。各記事には実際のサンプルファイルも用意されているため、実践的なスキル向上が期待できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次