INDEX MATCHで複数条件検索する方法|コピペできる数式と実践手順

INDEX MATCHで複数条件検索する方法|コピペできる数式と実践手順

INDEX MATCHで複数条件検索をしたいのに、数式が長くて毎回つまずいていませんか。VLOOKUPでは対応しにくく、#N/Aや#VALUE!で止まる人も多いです。この記事では、すぐ使えるコピペ用の数式、仕組み、実践手順、エラー対処、XLOOKUPやFILTERとの違いまで、初心者にもわかる形でまとめて解説します。

目次

【コピペOK】INDEX MATCH 複数条件の基本構文

【コピペOK】INDEX MATCH 複数条件の基本構文

結論から言うと、INDEX関数で取り出す範囲を指定し、MATCH関数で複数条件に一致する行番号を求めれば対応できます。

基本形は、=INDEX(返す範囲,MATCH(1,(条件範囲1=条件1)(条件範囲2=条件2),0))です。

この形を覚えておけば、担当者と商品、支店と月、社員番号と部署など、2条件でも3条件でも同じ考え方で拡張できます。

最初は長く見えますが、実際に触る要素は『返す範囲』『条件範囲』『検索値』の3つだけなので、慣れると数分で作れるようになります。

2条件で検索する数式テンプレート

2条件で検索するなら、まずはこのテンプレートをそのまま使うのが最短です。

=INDEX($D2:D10,MATCH(1,(A2:A10=G2)∗(B2:B10=H$2),0))

この式では、A列が1つ目の条件、B列が2つ目の条件、D列が取得したい値の列です。

たとえばG2に『東京』、H2に『ノートPC』を入れると、A列が東京かつB列がノートPCの行にあるD列の値を返します。

検索値をセル参照にしておくと、条件を変えるだけで再利用できるので、手入力よりミスを大きく減らせます。

3条件以上に拡張する書き方

3条件以上にしたい場合も、条件式をで追加するだけなので考え方は同じです。

=INDEX($D2:D10,MATCH(1,(A2:A10=G2)∗(B2:B10=H2)∗(C2:C10=I$2),0))

A列とB列とC列の3つがすべて一致した行だけが1になり、その位置をMATCHが見つけます。

4条件でも5条件でも同じ形で増やせますが、範囲の行数を必ずそろえることが重要です。

条件が増えるほど入力ミスの影響も大きくなるため、列名と検索セルを表で整理してから式を作ると失敗しにくくなります。

Excel 365とExcel 2019以前の入力方法の違い

入力方法の違いは非常に重要で、ここを間違えると式が正しくても結果が返りません。

Excel 365では、上の数式をそのまま入力してEnterで確定するだけで動くケースがほとんどです。

一方で、Excel 2019以前では配列数式として扱う必要があり、Ctrl+Shift+Enterで確定する場面があります。

もし通常のEnterで#N/Aや不正な結果になるなら、まず確定方法を見直してください。

社内PCではバージョン差が混在しやすいので、共有ファイルでは『365はEnter、旧版はCtrl+Shift+Enter』とメモを残すと親切です。

INDEX MATCHで複数条件検索ができる仕組み

INDEX MATCHで複数条件検索ができる仕組み

結論として、INDEXが値を返し、MATCHが位置を返し、条件同士の掛け算で『すべて一致した行』を特定しているのが仕組みです。

見た目は難しくても、役割を分けて理解すると構造はかなりシンプルです。

特に初心者が混乱しやすいのは、MATCHが値ではなく行番号を返している点です。

この原理がわかると、エラー修正や応用式の作成スピードが一気に上がります。

INDEX関数の役割=「指定位置の値を取り出す」

INDEX関数の役割は、指定した範囲の中から『何行目か』を指定して値を取り出すことです。

たとえばD2:D10が売上列なら、3行目にあたる値を返すだけなので、INDEX自体は検索していません。

つまり、INDEXは受け取った行番号に従って機械的に値を出す部品だと考えると理解しやすいです。

複数条件検索では、この行番号をMATCHが作り、INDEXが最後に正しい値を返します。

MATCH関数の役割=「条件に一致する位置を返す」

MATCH関数は、指定した値が配列の何番目にあるかを返す関数です。

今回の式では、探す値を1にしているため、条件がすべて一致して1になった位置を見つけています。

たとえば配列結果が0,0,1,0なら、MATCHは3を返し、その3番目をINDEXが受け取る流れです。

この考え方を理解すると、MATCHの戻り値が『見つかった値』ではなく『見つかった場所』だと整理できます。

複数条件を「」で繋ぐ理由|配列演算の仕組み

複数条件をでつなぐ理由は、TRUEとFALSEを1と0として扱い、全部一致した行だけを1にするためです。

たとえば、A列条件が1,1,0で、B列条件が1,0,1なら、掛け算の結果は1,0,0になります。

このように、1*1だけが1になり、どれか1つでも不一致なら0になるので、AND条件を作れます。

Excelではこの計算を配列演算と呼び、複数行をまとめて一気に判定できるのが強みです。

VLOOKUPとの違いと使い分け

結論として、複数条件や左方向の参照が必要ならINDEX MATCHのほうが柔軟です。

VLOOKUPは左端列だけを検索し、返す列番号を数値で指定するため、列挿入に弱いという欠点があります。

項目INDEX MATCHVLOOKUP複数条件得意工夫が必要左方向参照可能不可列挿入耐性高い低い

一方で、単純な1条件検索ならVLOOKUPのほうが短く書けるため、用途に応じて使い分けるのが実務的です。

【実践】INDEX MATCH 複数条件をサンプルデータで試す

【実践】INDEX MATCH 複数条件をサンプルデータで試す

ここでは実際に手を動かせるように、シンプルな売上表でINDEX MATCHの複数条件検索を試します。

実務で多いのは『支店』『商品』『月』の組み合わせなので、この3条件を例にすると応用しやすいです。

手順どおりに進めれば、初めてでも10分ほどで動作確認まで終えられます。

使用するサンプルデータ

まずは次のような表を用意してください。

A列B列C列D列支店商品月売上東京ノートPC1月120000東京ノートPC2月135000大阪モニター1月80000

検索条件はG2に支店、H2に商品、I2に月を入力し、結果はJ2に表示する形にするとわかりやすいです。

サンプルは最低でも5行以上あると、正誤判定やエラー確認までしやすくなります。

ステップ1:検索条件と取得したい値を決める

最初に決めるべきなのは、どの列を条件にし、どの列の値を返したいかです。

今回なら条件はA列の支店、B列の商品、C列の月で、返したい値はD列の売上です。

この整理が曖昧だと、範囲指定ミスや列の取り違えで式が壊れます。

紙に『条件列』『検索セル』『返す列』を書き出してから入力すると、初心者でも迷いにくくなります。

ステップ2:数式を入力する

次に、結果を表示したいセルJ2へ数式を入力します。

=INDEX($D2:D10,MATCH(1,(A2:A10=G2)∗(B2:B10=H2)∗(C2:C10=I$2),0))

この式は、A列からC列の3条件がすべて一致した行を探し、その行のD列売上を返します。

範囲を固定するために$を付けておくと、式をコピーしても参照がずれません。

ステップ3:確定方法を確認する

ここで重要なのが、使っているExcelのバージョンに応じて確定方法を変えることです。

Excel 365ならEnterで確定し、結果がそのまま返るかを確認してください。

Excel 2019以前で動かない場合は、Ctrl+Shift+Enterで配列数式として確定します。

確定後に数式バーで式全体が波かっこで囲まれて見えるなら、旧環境での入力が正しくできている可能性が高いです。

ステップ4:結果を確認してテストする

最後に、条件を変えながら正しい値が返るかを2から3パターン試してください。

たとえばG2を東京、H2をノートPC、I2を2月にした場合、J2が135000になれば成功です。

次に存在しない組み合わせを入れて#N/Aになるかを確認すると、検索ロジックの検証にもなります。

実務では『正しい値が出るか』だけでなく、『存在しない条件でどう返るか』まで見ると事故を防げます。

INDEX MATCH 複数条件でよくあるエラーと解決策

INDEX MATCH 複数条件でよくあるエラーと解決策

INDEX MATCHの複数条件検索は便利ですが、実際には数式の構造よりも入力ミスやデータ不整合で失敗することが多いです。

よくあるエラーを原因別に見ると、修正ポイントがすぐ特定できます。

ここでは現場で特に多い4つのパターンを整理します。

#N/Aエラーが出る場合の原因と対処法

#N/Aは、条件に一致する行が見つからないときに最もよく出るエラーです。

原因として多いのは、前後の空白、全角半角の違い、数値と文字列の混在、そもそも一致データがないケースです。

TRIM関数で余分な空白を除去する表示形式ではなく実データ型をそろえる条件セルの文字をコピー貼り付けで統一する

一時的にIFERRORで隠すより、まずは条件列と検索値が本当に一致しているかを確認するほうが根本解決になります。

#VALUE!エラーが出る場合の原因と対処法

#VALUE!は、配列計算の形が崩れているときに出やすいエラーです。

典型例は、A2:A10とB2:B9のように条件範囲の行数がそろっていない場合です。

また、かっこの不足や、*の位置ミスでも配列演算が成立せずエラーになります。

返す範囲は別列でも問題ありませんが、条件範囲同士の開始行と終了行は必ず一致させてください。

0や空白が返る場合の原因と対処法

0や空白が返るときは、数式が壊れているとは限らず、取得先セルの中身が実際に0または空白のことがあります。

まずは一致した行の返却列を直接見て、本当に値が入っているか確認してください。

もう1つ多いのが、セルの表示形式が数値や日付になっていて、見え方だけ変わっているケースです。

見た目では空白でも、数式バーに値があるなら表示設定を、完全な空白なら元データを修正しましょう。

間違った値が返る場合の原因と対処法

違う値が返る場合は、重複データがある可能性を最初に疑うべきです。

MATCHは最初に見つかった1件だけを返すため、同じ条件の行が2つあれば先頭行の値が返ります。

たとえば東京、ノートPC、2月が2行あると、後ろの行を取得したい意図でも前の行が選ばれます。

対策としては、条件を1つ追加して一意にするか、重複を許すならFILTER関数へ切り替えるのが有効です。

INDEX MATCH 複数条件の応用テクニック

INDEX MATCH 複数条件の応用テクニック

基本式を覚えたら、次は部分一致やテンプレート化など、実務で便利な応用を押さえると作業効率が大きく上がります。

特に毎月同じ表を扱う人は、応用テクニックの有無で入力時間が半分近く変わることもあります。

ここでは再利用しやすい3つのパターンを紹介します。

部分一致(ワイルドカード)で検索する方法

商品名の一部だけで探したいなら、SEARCH関数を組み合わせる方法が実用的です。

=INDEX($D2:D10,MATCH(1,(A2:A10=G2)∗(ISNUMBER(SEARCH(H2,B2:B$10))),0))

H2に『ノート』と入れると、B列の『ノートPC』を含む行が候補になります。

完全一致では拾えない表記ゆれに強い反面、想定外の語も拾うため、対象範囲はできるだけ絞るのが安全です。

条件をセル参照にしてテンプレート化する方法

毎回数式を書き換えずに済ませるなら、条件部分をすべてセル参照にするのが基本です。

たとえばG2に支店、H2に商品、I2に月を置けば、利用者はセルの値を変えるだけで検索できます。

さらに見出しセルに入力規則でプルダウンを設定すると、誤入力が減り、共有ファイルでも扱いやすくなります。

月次レポートや在庫表では、このテンプレート化だけで更新時間を毎回数分短縮できることも珍しくありません。

複数列の値をまとめて取得する方法

1つの条件で売上だけでなく数量や利益もまとめて取りたいなら、返す範囲を複数列にします。

=INDEX($D2:F10,MATCH(1,(A2:A10=G2)∗(B2:B10=H$2),0),0)

Excel 365では横方向に結果が展開され、D列からF列までの値を一度に取得できます。

旧バージョンでは動作差が出やすいため、互換性を優先するなら列ごとにINDEX MATCHを分ける方法も堅実です。

XLOOKUP・FILTERとの比較|どれを使うべき?

XLOOKUP・FILTERとの比較|どれを使うべき?

結論として、1件だけ返すならXLOOKUP、複数行を返すならFILTER、互換性を重視するならINDEX MATCHが向いています。

最近のExcelでは新関数が便利ですが、社内環境では旧版が残っていることも多く、使い分けが重要です。

関数の新しさではなく、配布先の環境と目的で選ぶのが失敗しないコツです。

Excel 365ならXLOOKUPも選択肢になる

Excel 365を使えるなら、XLOOKUPで複数条件を処理する方法もかなり書きやすいです。

=XLOOKUP(1,($A2:A10=G2)∗(B2:B10=H2),D2:D$10)

INDEX MATCHより構文が短く、見返したときに意味が読み取りやすい点が利点です。

ただし、古いExcelでは使えないため、共有先が365限定かどうかを先に確認しておきましょう。

複数行を抽出するならFILTER関数が最適

同じ条件に合う行をすべて一覧で出したいなら、FILTER関数のほうが適しています。

=FILTER($A2:D10,(A2:A10=G2)∗(B2:B10=H$2),’該当なし’)

この式なら一致した全行がそのまま展開されるため、検索結果一覧や抽出表の作成に向いています。

一方で、単一セルに1つの値だけ返したい用途では、INDEX MATCHやXLOOKUPのほうが扱いやすいです。

互換性重視ならINDEX MATCH一択

社内配布や古いPCを含む運用なら、結局いちばん無難なのはINDEX MATCHです。

Excel 365専用のXLOOKUPやFILTERは便利ですが、使えない環境では数式そのものが壊れます。

関数向いている場面互換性INDEX MATCH複数条件の標準解高いXLOOKUP365で1件取得中FILTER複数行抽出中

迷ったらまずINDEX MATCHで作り、利用環境が365に統一されているときだけ新関数へ寄せると安全です。

まとめ

まとめ

INDEX MATCHの複数条件検索は、式の見た目ほど難しくありません。

大切なのは、INDEXが値を返し、MATCHが位置を返し、でAND条件を作るという3点を押さえることです。

2条件は基本テンプレートをコピペすればすぐ使える3条件以上は(条件式)を増やすだけで拡張できるExcel 365はEnter、旧版はCtrl+Shift+Enterを確認する重複データや空白混入はエラーの大きな原因になる複数行抽出はFILTER、互換性重視はINDEX MATCHが有力

まずはサンプル表で1本動かし、次に自分の業務表へ置き換えて練習すると、実務でもすぐ使いこなせます。

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

この記事を書いた人

コメント

コメントする

目次