Excel INDEX MATCH の使い方
MATCH は一覧の中での位置を返し、INDEX はその位置にある値を返します。MATCH を INDEX の引数に入れると、データの向きに左右されない検索になります。キーが右側にある表でも、VLOOKUP のように列番号を数える必要はありません。
INDEX MATCH の構文
2つの関数を1つに組みます。MATCH が「何番目か」を返し、INDEX がその番号の位置にある値を返します。組み合わせ全体で1つの検索式になります。
取り出したい値が入っている列(または行)です。C2:C5 のように書きます。キーの列を含める必要はなく、左右どちらでも構いません。
検索値、検索する範囲(キーの列)、照合の種類です。照合は必ず 0(完全一致)にします。省略すると 1(近似一致)になり、並び順が崩れた瞬間に違う行を返します。
検索の例
キーが左端にある表から、SKU の単価を取り出します。
| SKU | 商品 | 単価 |
|---|---|---|
| SKU-101 | キーボード | 49.00 |
| SKU-102 | マウス | 19.50 |
| SKU-103 | モニター | 24.99 |
| SKU-104 | ドック | 89.00 |
MATCH は SKU-103 が A2:A5 の3行目なので 3 を返し、INDEX が C2:C5 の3番目、24.99 を返します。返す範囲を直接指定するので、単価がキーの左でも右でも関係ありません。
縦と横の両方で探す(2次元検索)
行見出しと列見出しの両方で位置を決めたいときは、MATCH を2つ入れます。1つ目が行、2つ目が列です。
| 担当 | Q1 | Q2 | Q3 |
|---|---|---|---|
| 田中 | 120 | 150 | 180 |
| 佐藤 | 90 | 110 | 140 |
| 鈴木 | 200 | 180 | 210 |
行の MATCH が 2(佐藤)、列の MATCH が 3(Q3)を返すので、B2:D4 の2行3列目、140 が返ります。行と列を別々に探すので、表の並びを入れ替えても式は壊れません。
VLOOKUP との比較
同じ検索を VLOOKUP で書くと、返す列を「キーから何列目か」で指定します。この違いが、列を挿入したときに効いてきます。
| 観点 | VLOOKUP | INDEX MATCH |
|---|---|---|
| 検索の向き | キーより右だけ | 左右どちらでも |
| 列の挿入 | 列番号がずれて壊れる | 範囲名で指定するので無事 |
| 返す列の指定 | キーから数えた列番号 | 返す範囲を直接指定 |
| 読みやすさ | 短い | 長いが意図が明確 |
| 古い Excel | 動く | 動く(XLOOKUP は動かない) |
列が多い表や、誰かが列を足し続ける表では INDEX MATCH のほうが安全です。列が少なく、一度きりの確認なら VLOOKUP の短さは正義です。XLOOKUP が使える環境なら、戻り値と未検出時の値を1つの式で書けるぶん XLOOKUP が最短です。
INDEX MATCH でつまずきやすい4つの落とし穴
1. MATCH の照合を省略する
MATCH(検索値, 範囲) と書くと照合は 1(近似一致)になり、昇順で並んでいない範囲では無関係な行を返します。必ず 0 を書きます。
2. INDEX の範囲と MATCH の範囲の行数がずれる
C2:C5 に対して A2:A6 を探すと、位置が1つずれます。両方の範囲は同じ行数で、同じ開始行から始めます。表全体を範囲にしたくなったら、行番号を足して調整します。
3. 検索値とキーの型が違う
片方が文字列の "103"、もう片方が数値の 103 だと一致しません。CSV を取り込んだ直後に多い症状です。VALUE か TEXT で型を揃えてから検索します。
4. 配列の複数条件で Enter だけを押す
MATCH(1, (A2:A6="North")*(B2:B6="Q3"), 0) は配列を返します。古い Excel では Ctrl+Shift+Enter が必要で、そのまま Enter だと #N/A か 1 になります。
Excel と Google スプレッドシート
Microsoft Excel (365 / Desktop)
Excel の INDEX は3引数(範囲・行・列)、MATCH は3引数(検索値・範囲・照合)です。Excel 365 では配列の複数条件もそのまま入力できます。INDEX の行・列を省略すると列全体、行全体を返します。
Google スプレッドシート
Google スプレッドシートも同じ構文です。範囲の書き方が A2:A5 形式で共通なので、Excel で書いた式をほぼそのまま貼れます。
INDEX MATCH の練習問題
INDEX と MATCH を組み合わせて、キーの左側や部分一致で値を取り出します。式は行ごとに変わるように書きます。
よくある質問
INDEX MATCH と VLOOKUP は何が違いますか?
VLOOKUP はキーより右側の列しか取り出せず、列番号を式に持つため列を挿入すると静かに壊れます。INDEX MATCH は返す範囲を直接指定し、位置は MATCH で別に探すので、左右どちらでも検索でき、列を挿入しても崩れません。
XLOOKUP があるのに INDEX MATCH を覚える必要はありますか?
あります。Excel 2019 以前には XLOOKUP がなく、そのバージョンの人と共有するファイルや Google スプレッドシートでも使います。面接でも問われ、財務のテンプレートでも多用されています。
INDEX MATCH で複数条件にするには?
キーを連結する方法(=INDEX(C2:C6, MATCH(A2&B2, D2:D6&E2:E6, 0)))か、配列の書き方 =INDEX(C2:C6, MATCH(1, (A2:A6="North")*(B2:B6="Q3"), 0)) を使います。古い Excel の配列は Ctrl+Shift+Enter が必要です。