Toolnote

INDEX・MATCHの使い方と、エラーが出ないまま間違う2つの書き方

Toolnote 編集部・2026-08-22 更新・約7分で読めます

INDEX・MATCHでいちばん怖いのは #N/A ではありません。エラーが一切出ないまま、探していないほうの商品名が入ってくることです。

2026年8月22日に、Googleスプレッドシートで実際に商品マスタを作り、正しい式と、よくある書き間違いを2つ並べて置いて、それぞれ何が返るかを確認しました。以下はその画面と結果です。

使った表

A列に商品名、B列に商品コード、C列に単価、D列に在庫。商品コードは昇順に並んでいません。この「並んでいない」ことが後で効いてきます。

探すキーは B11 に置いた P-205。正解は4行目の「ぶどう」です。

Googleスプレッドシートの画面。A列に商品名、B列に商品コード、C列に単価、D列に在庫が入った8行の商品マスタがあり、商品コードはP-103、P-101、P-205、P-102…と昇順に並んでいない。その下に検証結果が並び、①正しい書き方は「ぶどう」、②第3引数を省略しただけは「バナナ」、③INDEXの範囲だけA:Aにしたは「みかん」、④末尾に半角スペースが入ったキーで検索は#N/Aを返している
Googleスプレッドシートの画面。A列に商品名、B列に商品コード、C列に単価、D列に在庫が入った8行の商品マスタがあり、商品コードはP-103、P-101、P-205、P-102…と昇順に並んでいない。その下に検証結果が並び、①正しい書き方は「ぶどう」、②第3引数を省略しただけは「バナナ」、③INDEXの範囲だけA:Aにしたは「みかん」、④末尾に半角スペースが入ったキーで検索は#N/Aを返している

① 正しい書き方

=INDEX($A$2:$A$9, MATCH($B$11, $B$2:$B$9, 0))

結果は ぶどう。狙いどおりです。

やっていることは2段階です。

MATCHが出した番号をINDEXに渡す。これがINDEX・MATCHの全てです。詰まったときは、この記事のようにMATCH単体をどこかのセルに置いて、返ってくる数字を目で見るのがいちばん早いです。

② 第3引数を省略しただけ ― 「バナナ」が返る

同じ式から、MATCHの最後の 0 だけを消します。

=INDEX($A$2:$A$9, MATCH($B$11, $B$2:$B$9))

返ってきたのは バナナ。このセルにはエラー表示も、隅の赤い三角も出ませんでした(④で #N/A になったセルには赤い三角が付いています)。

Googleスプレッドシートで、②の行のセルB13を選択した状態。数式バーには =INDEX($A$2:$A$9,MATCH($B$11,$B$2:$B$9)) と表示され、セルの値は「バナナ」になっている。エラー表示は出ていない
Googleスプレッドシートで、②の行のセルB13を選択した状態。数式バーには =INDEX($A$2:$A$9,MATCH($B$11,$B$2:$B$9)) と表示され、セルの値は「バナナ」になっている。エラー表示は出ていない

数式バーを見ると、たしかに 0 がないだけで、それ以外は①と同じ式です。それでも別の商品名が入っています。

MATCHの第3引数は、省略すると 1(近似一致)になります。近似一致は「探す範囲が昇順に並んでいること」を前提にした探し方です。今回の商品コードは並んでいません。実際、=MATCH($B$11,$B$2:$B$9) を単体で置くと 4 が返りました。INDEX($A$2:$A$9, 4) は A5 = バナナ。①の 3 とは1つずれた位置です。

本当に並び順が原因なのかを確かめるため、式は一文字も変えずに、表だけを昇順にして同じことをしました。=SORT($A$2:$B$9,2,TRUE) で商品コード順に並べた表を別の場所に作り、そこへ同じ「第3引数を省略した式」を向けます。返ってきたのは ぶどう、MATCHの返り値は 6。正しくなりました。式ではなく並び順が原因だったと、これで言えます。

ただし、並んでいない表でなぜ 4 だったのかという内部の理由までは調べていません。確かめられたのは「並んでいなければ答えは信用できない」ことと、「並べたら正しくなった」ことの2つです。

MATCHの 0 は「省略してもいい引数」ではなく、省略すると別モードに切り替わるスイッチです。 完全一致で探したいなら必ず書きます。

③ INDEXの範囲だけ A:A にした ― 「みかん」が返る

今度は 0 は残したまま、INDEXの取り出す範囲だけを列全体にします。

=INDEX(A:A, MATCH($B$11, $B$2:$B$9, 0))

返ってきたのは みかん。これもエラーは出ません。

MATCHが返しているのは 3 ですが、これは「B2:B9 の中で3番目」という相対位置であって、行番号ではありません。それを INDEX(A:A, 3) に渡すと、A列全体の3番目、つまり A3 = みかん が取り出されます。見出し行のぶんだけ、まるごとずれています。

ここから言えるのは、INDEXの範囲とMATCHの範囲は、開始行をそろえて同じ高さにする、というルールです。片方が A:A(1行目から)で、もう片方が $B$2:$B$9(2行目から)だと必ずずれます。どちらも $2:$9 にそろえておけば起きません。

②も③も、式は一見それらしく、結果も商品名らしい文字列です。目視で気づける手がかりが何もないのがこの2つの厄介なところです。

④ 末尾の半角スペース ― これは #N/A になる

比較のために、末尾に半角スペースを1つ足したキー(=$B$11&CHAR(32))でも検索してみました。結果は #N/A。

画面のB15を見ると、表示は P-205 で、B11とまったく同じに見えます。それでも一致しません。見えない1文字が入っているためです。

#N/A は不親切に見えますが、間違いをその場で止めてくれるぶん、②や③よりはるかにましな失敗です。#N/A が出たら、まずMATCH単体を置いて数字が返るか確かめ、返らないならキー側の余分な空白や表記ゆれを疑います。実際に MATCH(TRIM($B$15), $B$2:$B$9, 0) のように TRIM を挟んだところ、同じキーで ぶどう が返りました。

まとめ ― 見直す順番

INDEX・MATCHの結果が怪しいと思ったら、この順に見ます。

  1. MATCHの第3引数に 0 があるか。 無ければ近似一致になり、並んでいない表では黙って別の位置を返します(②)。
  2. INDEXの範囲とMATCHの範囲の開始行がそろっているか。 片方だけ列全体にすると、見出し行のぶんずれます(③)。
  3. #N/A なら、キーの余分な空白・表記ゆれ。 ここまで来ていれば、むしろ発見しやすい部類です(④)。

なお、この記事の結果はすべて2026年8月22日にGoogleスプレッドシート上で実際に式を置いて確認したものです。Excelなど他の表計算ソフトでは確認していないため、同じ挙動になるかどうかはここでは断定しません。

VLOOKUP・XLOOKUPとの使い分け

この記事でやっていたことは、実はVLOOKUPにはできません。B列の商品コードで探して、その左にあるA列の商品名を取り出しています。取り出す範囲と探す範囲を独立して書けるINDEX・MATCHだから成立する形です。

一方で、その「独立して2箇所書く」ことが、③のずれの原因でもありました。利点と弱点が同じところから出ています。

なお、INDEX・MATCHの利点としてよく挙げられる「列を挿入してもズレにくい」ことと、XLOOKUPとの書きやすさの比較については、今回は試していません。この記事で確かめたのは上の①〜④だけです。基礎のVLOOKUPの使い方も合わせてどうぞ。