【Excel】INDEX+MATCHで複数条件検索する方法【VLOOKUP卒業の決め手】

Excel/VBA 自動化

「VLOOKUPでなんとか回してきたけど、もう限界…」
そう感じているなら、それはスキル不足ではなく、VLOOKUPの構造的な限界にぶつかっている証拠です。

特に、以下のようになるとVLOOKUP関数では検索できません。
・ 条件が2つになった瞬間に詰む
・ 列を1つ追加しただけで数式が壊れる。
・ 修正するたびにシートぐちゃぐちゃ。

こんなストレスを抱えていませんか? 「excel index match 複数条件」で検索してこの記事に辿り着いた方は、まさに今が切り替えどきです。

この記事では、実務でそのまま使えるINDEX+MATCHの複数条件検索を、コピペして使える型を中心に解説します。
毎月同じ集計をしている人や、VLOOKUPは使えるけど応用で止まってしまう人に特におすすめです。

VLOOKUPの限界とは? 実務でよく詰まる3つのポイント

VLOOKUPは単一条件の検索には便利ですが、以下のような場面で苦しくなります。

① 複数条件に対応できない

例:「部署 × 担当者」で人を特定したい 例:「商品名 × 日付」で売上を抽出したい

この時点でVLOOKUPは使えません。結果として、

  • 別列に「部署&担当者」のような結合キーを作る
  • 元データを加工する

といった、本来不要な作業が増えてシートが複雑化します。

② 列の追加で数式が壊れる

VLOOKUPは「列番号(3列目など)」で値を取得するため、表に列を1つ挿入しただけで参照がズレてしまいます。 #N/Aエラーにならず、「それっぽい間違った値」が返ってくるのが一番危険です。

③ 左方向に検索できない

検索キーは必ず一番左の列でなければならず、逆方向の取得は不可。
無駄な列のコピーや、表の並べ替えが発生します。

これらの問題は、INDEX+MATCHに切り替えることで一気に解決できます。

解決策:INDEX+MATCHで複数条件検索

やることはとてもシンプルです。

  1. 取得したい値の範囲を指定
  2. 条件を組み合わせて行番号を特定
  3. その行の値を取り出す

複数条件検索の基本形(掛け算方式)

excel

=INDEX(取得範囲, MATCH(1, (条件1範囲=条件1)*(条件2範囲=条件2), 0))

最初は意味が分からなくても大丈夫。 「コピペして使う型」として覚えておけば、実務で十分使えます。

具体例(A列:部署、B列:担当者、C列:氏名を抽出する場合) F2に部署、G2に担当者を入力した場合:

=INDEX(C2:C100, MATCH(1, (A2:A100=F2)*(B2:B100=G2), 0))

これで「部署と担当者の両方に一致する」行の氏名が取得できます。

なぜ「掛け算(*)」で条件を作るのか?

Excelの条件は
一致すると1(TRUE)
不一致だと0(FALSE)と扱われます。

  • 両方一致 → 1 × 1 = 1
  • 片方でも不一致 → 1 × 0 = 0 または 0 × 0 = 0

つまり、すべての条件を満たした行だけが「1」になり、MATCH関数がその行番号をピンポイントで探し出します。 その行番号をINDEX関数に渡して、目的の値を取り出す仕組みです。

別解:&(アンパサンド)結合方式も便利

書き方がシンプルになる場合があります。

excel

=INDEX(取得範囲, MATCH(条件1&条件2, 条件1範囲&条件2範囲, 0))

例:
excel

=INDEX(C2:C100, MATCH(F2&G2, A2:A100&B2:B100, 0))

注意点

  • 数値と文字列が混在すると一致しにくくなる
  • データ型に敏感

基本は「掛け算方式」をおすすめします。状況に応じて使い分けてください。

実務でよくハマる失敗3選と対策

ここが一番大事なポイントです。

① データの揺れで一致しない

  • 全角・半角の違い(「東京」と「トウキョウ」)
  • 余分なスペース(「東京 」) → TRIM関数CLEAN関数で前処理を。

② 数値と文字列の混在

  • 「001」(文字列)と1(数値) → VALUE関数で数値に統一、またはTEXT関数で文字列に統一。

③ 配列数式の入力ミス

  • Excel 365 / 2021以降:普通にEnterでOK
  • 古いExcel:Ctrl + Shift + Enterで確定(数式の両端に{}が付く)

入力後に{}が付かないと正しく動作しません。

エラー対策も忘れずに

excel

=IFERROR(INDEX(取得範囲, MATCH(1, (条件1範囲=条件1)*(条件2範囲=条件2), 0)), "該当なし")

実務では「該当なし」の表示を入れておくと、後で嫌われません。

この方法が特に刺さる人

  • 毎月同じような集計作業をしている
  • データ量が増えてきてVLOOKUPが限界を感じる
  • 「もっと効率化したい」と常々思っている

こういう人は、1回しっかり覚えるだけで作業時間が大幅に短縮されます。表の列が増えても、数式が壊れにくいのも大きなメリットです。

補足:最近のExcel 365ではXLOOKUPも複数条件に対応しやすくなっていますが、INDEX+MATCHはバージョン互換性が高く、今でも非常に強力です。両方使いこなせると理想的です。

まとめ:VLOOKUP卒業のタイミング

  • 単一条件まで → VLOOKUPでOK
  • 複数条件が出てきたら即INDEX+MATCHへ

粘れば粘るほど、後で作り直すコストが増えます。

ポイントをおさらい:

  • 複数条件はINDEX+MATCH一択
  • 条件組み合わせは「掛け算(*)」が基本
  • データの揺れ(全角半角・型違い)に注意
  • エラー対策(IFERROR)は必須

一番大事なのは、その場しのぎをやめることです。

Excelは単なる作業ツールではなく、業務を効率化する強力な武器。 この一歩を踏み出すだけで、周りと確実に差がつきます。

「excel index match 複数条件」で検索してここまで読んでくれたあなたなら、今日から実践できるはずです。 実際に使ってみて分からない点があれば、具体的な表の構造を教えてください。一緒に最適な数式を考えましょう!

コメント

タイトルとURLをコピーしました