ホーム / 関数 / Excel INDEX MATCH の使い方
検索 Excel + Google スプレッドシート

Excel INDEX MATCH の使い方

MATCH は一覧の中での位置を返し、INDEX はその位置にある値を返します。MATCH を INDEX の引数に入れると、データの向きに左右されない検索になります。キーが右側にある表でも、VLOOKUP のように列番号を数える必要はありません。

INDEX MATCH の構文

=INDEX(返す範囲, MATCH(検索値, 検索範囲, 0))

2つの関数を1つに組みます。MATCH が「何番目か」を返し、INDEX がその番号の位置にある値を返します。組み合わせ全体で1つの検索式になります。

1 INDEX の第1引数:返す範囲
必須

取り出したい値が入っている列(または行)です。C2:C5 のように書きます。キーの列を含める必要はなく、左右どちらでも構いません。

2 MATCH の3つの引数
必須

検索値、検索する範囲(キーの列)、照合の種類です。照合は必ず 0(完全一致)にします。省略すると 1(近似一致)になり、並び順が崩れた瞬間に違う行を返します。

検索の例

キーが左端にある表から、SKU の単価を取り出します。

SKU商品単価
SKU-101キーボード49.00
SKU-102マウス19.50
SKU-103モニター24.99
SKU-104ドック89.00
=INDEX(C2:C5, MATCH("SKU-103", A2:A5, 0))

MATCH は SKU-103 が A2:A5 の3行目なので 3 を返し、INDEX が C2:C5 の3番目、24.99 を返します。返す範囲を直接指定するので、単価がキーの左でも右でも関係ありません。

縦と横の両方で探す(2次元検索)

行見出しと列見出しの両方で位置を決めたいときは、MATCH を2つ入れます。1つ目が行、2つ目が列です。

担当Q1Q2Q3
田中120150180
佐藤90110140
鈴木200180210
=INDEX(B2:D4, MATCH("佐藤", A2:A4, 0), MATCH("Q3", B1:D1, 0))

行の MATCH が 2(佐藤)、列の MATCH が 3(Q3)を返すので、B2:D4 の2行3列目、140 が返ります。行と列を別々に探すので、表の並びを入れ替えても式は壊れません。

VLOOKUP との比較

同じ検索を VLOOKUP で書くと、返す列を「キーから何列目か」で指定します。この違いが、列を挿入したときに効いてきます。

観点VLOOKUPINDEX 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 を組み合わせて検索してください。VLOOKUP では届かない向きの検索です。

練習問題のページを開く
問題文
ヒント 0/4
模範解答 2
–
テストケース
1
2
3
リセット
提出
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
インタラクティブなスプレッドシートを読み込み中...
セルと数式の計算エンジンを準備しています
○ 準備完了 ハイライトされたセルに数式を入力し、「提出」を押してください。

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 が必要です。