【Excel】INDEX関数とMATCH関数を2次元で組み合わせる!Excelの行列交差検索テクニック

【Excel】INDEX関数とMATCH関数を2次元で組み合わせる!Excelの行列交差検索テクニック
🛡️ 超解決

Excelで特定の条件に一致するデータを検索する際、VLOOKUP関数やHLOOKUP関数がよく使われます。しかし、これらの関数では行方向または列方向のどちらか一方しか検索できません。複数の条件を指定して、行と列の両方で一致するデータを検索したい場面は業務で頻繁に発生します。そのような場合に役立つのがINDEX関数とMATCH関数を組み合わせた2次元検索テクニックです。このテクニックを習得すれば、複雑なデータ集計や分析が格段に効率化できます。本記事では、INDEX関数とMATCH関数を組み合わせた2次元検索の方法を、具体的な手順とともに解説します。

INDEX関数とMATCH関数を組み合わせることで、VLOOKUP関数やHLOOKUP関数では実現できない、複数条件での検索が可能になります。このテクニックは、表形式のデータから特定の行と列が交差するセルの値を取り出したい場合に非常に強力です。例えば、商品名と月を指定して売上金額を検索したり、部署名と年度を指定して予算額を検索したりする際に活用できます。本記事を読めば、INDEX関数とMATCH関数を2次元で組み合わせる方法を理解し、実際の業務で活用できるようになります。

【要点】INDEX関数とMATCH関数による2次元検索

  • INDEX関数: 指定した範囲の特定の位置にあるセルの値を取得する。
  • MATCH関数: 指定した範囲内で、検索値が何番目にあるか(位置)を返す。
  • 2次元検索: INDEX関数とMATCH関数を2つ組み合わせ、行と列の両方の条件に一致するセルの値を取得する。

ADVERTISEMENT

INDEX関数とMATCH関数で実現する行列交差検索の仕組み

INDEX関数とMATCH関数を組み合わせた2次元検索は、それぞれの関数が持つ機能を活用することで実現されます。まず、INDEX関数は、指定された範囲の中から、行番号と列番号で指定された位置にあるセルの値を取得する関数です。例えば、`INDEX(A1:C5, 2, 3)`と入力すると、範囲A1:C5の2行目3列目、つまりC2セルの値が返されます。

一方、MATCH関数は、指定した検索値が、指定した範囲の何番目にあるかを返す関数です。例えば、`MATCH(“商品B”, A1:A5, 0)`と入力すると、範囲A1:A5の中で「商品B」が何番目にあるかを返します。このとき、最後の引数「0」は完全一致を意味します。MATCH関数は、この「位置」を返す能力が、INDEX関数と組み合わせる上で重要となります。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

INDEX関数とMATCH関数を組み合わせた2次元検索の手順

INDEX関数とMATCH関数を組み合わせた2次元検索では、通常、2つのMATCH関数を1つのINDEX関数の中にネストします。これにより、行方向の検索と列方向の検索を同時に行い、両方の条件に一致するセルの値を取り出すことが可能になります。以下に具体的な手順を示します。

  1. 検索対象となる表の準備
    検索したいデータが入力されている表を用意します。この表は、検索条件となる項目(例:商品名、月)が、それぞれ行ヘッダーと列ヘッダーとして配置されている必要があります。例えば、A列に商品名、1行目に月があり、それらの交差するセルに売上金額が入力されているような表です。
  2. 検索条件の入力セル設定
    検索したい商品名や月などの条件を入力するためのセルを、表の外などに設けます。ここでは、商品名を入力するセルをE2、月を入力するセルをF2とします。
  3. INDEX関数とMATCH関数を用いた数式の入力
    結果を表示したいセル(ここではG2とします)に、以下の数式を入力します。数式は、検索対象の表の範囲、行検索条件、列検索条件、そして表の範囲を適切に指定して構成します。数式は以下のようになります。

    =INDEX(B2:D6, MATCH(E2, A2:A6, 0), MATCH(F2, B1:D1, 0))

    この数式における各部分の意味は以下の通りです。

    • `B2:D6`: 検索対象のデータ範囲(値が入力されている範囲)。行ヘッダー(A列)や列ヘッダー(1行目)は含めません。
    • `MATCH(E2, A2:A6, 0)`: 商品名(E2セル)が、A2からA6の範囲(商品名のリスト)の何番目にあるかを検索します。0は完全一致を意味します。これにより、行番号が特定されます。
    • `MATCH(F2, B1:D1, 0)`: 月(F2セル)が、B1からD1の範囲(月のリスト)の何番目にあるかを検索します。0は完全一致を意味します。これにより、列番号が特定されます。
  4. 検索条件の入力と結果の確認
    設定した検索条件の入力セル(E2とF2)に、検索したい商品名と月を入力します。例えば、E2に「商品B」、F2に「3月」と入力すると、G2セルには、商品Bと3月が交差するセル(この例ではD3セル)の値が表示されます。

2次元検索でよくある失敗パターンとその対処法

INDEX関数とMATCH関数を組み合わせた2次元検索は非常に便利ですが、いくつかの注意点や失敗しやすいパターンがあります。これらを理解しておくことで、トラブルシューティングやより確実なデータ検索が可能になります。

#N/Aエラーが表示される場合

このエラーは、MATCH関数が検索値を見つけられなかった場合に発生します。原因としては、検索対象の表のヘッダーやデータ範囲に、入力した検索条件と完全に一致する値が存在しないことが考えられます。

対処法:

  1. 検索値と範囲の一致確認
    数式で指定している検索条件のセル(例: E2, F2)の値と、MATCH関数で検索対象としている範囲(例: A2:A6, B1:D1)の値が、文字通り完全に一致しているかを確認します。全角・半角の違い、スペースの有無、表記揺れなどが原因で一致しないことがあります。
  2. 範囲指定の確認
    MATCH関数で指定している検索範囲が、検索したい値を含んでいるかを確認します。例えば、商品名がA列のA2からA6までしかないのに、MATCH関数でA2:A5を指定している場合、A6の商品名は検索対象外となります。
  3. MATCH関数の検索方法の確認
    MATCH関数の最後の引数(照合の種類)が「0」(完全一致)になっているかを確認します。もし「1」や「-1」になっていると、近似値で検索されてしまい、意図しない結果や#N/Aエラーの原因となることがあります。

検索結果が意図したものと異なる場合

MATCH関数は、検索値が複数存在する場合、最初に見つかった値の位置を返します。そのため、意図しない行や列の値が返されることがあります。

対処法:

  1. データの重複確認
    検索条件となる行ヘッダー(例: 商品名リスト)と列ヘッダー(例: 月リスト)に、重複する値がないか確認します。もし重複がある場合は、どちらか一方、あるいは両方を一意の値に変更する必要があります。
  2. 検索範囲の正確性
    INDEX関数のデータ範囲(値が入力されている範囲)と、MATCH関数で指定しているヘッダー範囲が、相対的に正しく対応しているかを確認します。例えば、INDEX関数の範囲がB2:D6なのに、MATCH関数でA2:A6(行ヘッダー)とB1:D1(列ヘッダー)を指定している場合、INDEX関数の範囲とMATCH関数が返す位置のズレが生じます。INDEX関数のデータ範囲は、MATCH関数で取得した行番号・列番号で参照される「値そのもの」の範囲である必要があります。

INDEX関数のデータ範囲の指定ミス

INDEX関数の最初の引数で指定するデータ範囲は、検索対象となる「値」そのものが含まれる範囲です。これにヘッダー行やヘッダー列を含めてしまうと、MATCH関数が返す位置と実際の値のズレが生じ、正しい結果が得られなくなります。

対処法:

  1. ヘッダーを含めない範囲指定
    INDEX関数の範囲指定では、行ヘッダー(例: A列)や列ヘッダー(例: 1行目)は含めず、値のみが入力されている範囲(例: B2:D6)を指定するように徹底します。
  2. 絶対参照の活用
    数式をコピーして使用する場合、参照範囲がずれないように、INDEX関数とMATCH関数の範囲指定には絶対参照(例: `$A$2:$A$6`)を使用することが推奨されます。これにより、数式をコピーしても参照範囲が固定され、意図しないエラーを防ぐことができます。

ADVERTISEMENT

INDEX関数とMATCH関数の比較表

INDEX関数とMATCH関数を組み合わせた2次元検索は、VLOOKUP関数やHLOOKUP関数と比較して、どのようなメリット・デメリットがあるのでしょうか。以下に比較表を示します。

項目 INDEX+MATCH (2次元検索) VLOOKUP関数 HLOOKUP関数
検索方向 行・列ともに指定可能 行方向のみ(左から右へ) 列方向のみ(上から下へ)
検索条件数 複数指定可能 1つのみ 1つのみ
検索列の位置 どこでも可 指定範囲の左端列のみ 指定範囲の先頭行のみ
結果列の指定 どこでも可 列番号で指定 行番号で指定
パフォーマンス 一般的に高速 データ量が多いと遅くなる可能性 データ量が多いと遅くなる可能性
数式の複雑さ やや複雑 比較的シンプル 比較的シンプル
柔軟性 非常に高い 限定的 限定的

INDEX関数とMATCH関数を組み合わせた2次元検索は、VLOOKUP関数やHLOOKUP関数では対応できない、複数条件での検索や、検索列・検索行が表の左端や先頭にない場合でも柔軟に対応できる点が最大のメリットです。特に、複雑なデータ構造を持つ表や、検索条件が多い場合に威力を発揮します。

一方で、数式の構造がやや複雑になるため、初心者には学習コストがかかる可能性があります。しかし、一度理解してしまえば、Excelでのデータ検索・集計作業の幅が大きく広がるため、習得する価値は非常に高いと言えます。VLOOKUP関数やHLOOKUP関数で限界を感じている方は、ぜひこのINDEX+MATCHの2次元検索テクニックを試してみてください。

INDEX関数とMATCH関数を組み合わせることで、Excelでのデータ検索能力が飛躍的に向上します。本記事で解説した手順と注意点を理解し、実際の業務で活用することで、より効率的かつ正確なデータ分析が可能になります。まずは簡単な表で試してみて、徐々に複雑なデータに応用していくことをお勧めします。

次に、INDEX関数とMATCH関数を組み合わせた応用テクニックとして、検索範囲を動的に変更する方法や、エラー処理を組み込んだ数式の作成などを学ぶことで、さらに高度なデータ活用ができるようになるでしょう。例えば、INDEX関数とMATCH関数にIFERROR関数を組み合わせることで、#N/Aエラーが表示される代わりに「該当なし」などのメッセージを表示させることができます。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】