Excel・表計算を整える
中級INDEX・MATCHを整える。
= 座標を探す係と、取り出す係の分業が見える
INDEX・MATCHは1本の関数ではなく、2つの係の分業です。MATCHは「探している値が、範囲の中で何番目にあるか(座標)」を返すだけ。INDEXは「その位置番号の値を取り出す」だけ。この分業のおかげで、VLOOKUPではできない「検索列より左の値を引く」や「行×列のクロス表引き」ができます。段階を分けて光らせるアニメで、まず分業そのものを体験してください。入力した表がサーバに送られることはありません(送信ゼロ)。
TLDR — 30秒で分かる
MATCHが座標を探し、INDEXがその座標を取り出す——たった2工程。VLOOKUPが引けない「検索列より左」も引けて、行×列のクロス表引きまで。
主な機能
- MATCH→INDEXの2段階を順番に光らせて可視化
- 検索列より左の値を引ける実演(VLOOKUPとの対決)
- 行×列のクロス表引き(INDEX+MATCH最大の実務価値)
- VLOOKUPの3つの弱点比較表+XLOOKUP版の併記
- ありがちな3つの失敗(第3引数省略・範囲ズレ)を再現体験
- すべてブラウザ内・送信ゼロ
STEP
① まず分業を見てみる
社員名簿のミニ表です(1行目が見出し、データはA2:D6)。「氏名」をB列に置いているのは、VLOOKUPが苦手な『検索列が左端でない表』をわざと作るためです。下のボタンでMATCH→INDEXの2段階を順番に再生します。
| A | B 🔎 | C | D 📤 | |
|---|---|---|---|---|
| 1 | 社員番号 | 氏名 | 部署 | 内線 |
| 2 | E101 | 佐藤 | 営業部 | 1201 |
| 3 | E102 | 田中 | 総務部 | 1305 |
| 4 | E103 | 鈴木 | 開発部 | 1450 |
| 5 | E104 | 高橋 | 経理部 | 1120 |
| 6 | E105 | 伊藤 | 開発部 | 1477 |
ボタンを押すと、ここに実況が出ます
🔎 MATCHが走査するのはB列(氏名)だけ。📤 INDEXが値を取り出すのはD列(内線)だけ。この2つの列は離れていても・どちらが左でも構いません。
STEP1・MATCHが座標を探す
=MATCH(, B2:B6, 0)
…
STEP2・INDEXが座標から取り出す
=INDEX(D2:D6, )
…
合体した完成数式
MATCHが返した「座標」を、そのままINDEXの2番目の引数に差し込むだけ。これがINDEX・MATCHの正体です。
VS
② VLOOKUPとの対決 — 検索列より左を引く
同じ名簿で「氏名から社員番号を引く」を試します。社員番号(A列)は氏名(B列)より左にあるため、VLOOKUPは原理的にこれができません。
VLOOKUP → できない
=VLOOKUP("高橋", A2:D6, -1, FALSE) VLOOKUPは常に範囲の左端の列を探し、右方向にしか値を返せません。「列番号 -1」は存在しないので数式として書けず、#VALUE! になります。範囲をB列始まりに組み替えると社員番号(A列)自体が範囲外になり、結局引けません。
INDEX+MATCH → 取れる
MATCHはB列(氏名)の中で「高橋」の位置を探すだけ、INDEXはA列(社員番号)からその位置を取り出すだけ。「どちらの列が左か」は一切関係ありません。 答え:
| VLOOKUPの弱点 | VLOOKUP | INDEX+MATCH |
|---|---|---|
| 検索列より左が引けない | ✕ 範囲の左端しか探せない | ○ MATCHとINDEXの列は無関係 |
| 列を挿入すると壊れる | ✕ 列番号は「数字で固定」。挿入でズレる | ○ 列を範囲で指定。挿入にも追従しやすい |
| 大きい表で重くなる | ✕ 列全体を毎回コピーして探す扱いになりがち | ○ 探す範囲を最小限に絞りやすく軽い |
正直な結論:Excel 2021/Microsoft 365 が使える環境なら、XLOOKUPで十分です(=XLOOKUP("高橋", B2:B6, A2:A6) の1本で同じ結果)。INDEX+MATCHが今も現役なのは、古いExcelとの互換性が必要な場面や、後述のクロス表引きのような発展形があるからです。
MATRIX
③ クロス表引き(行×列)— INDEX+MATCH最大の実務価値
料金表(行=サイズ、列=地域)から、サイズと地域を選ぶと交点が光って取れます。MATCHを縦横2回使うのが、この技のすべてです。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 東北 | 関東 | 関西 | |
| 2 | S | 980 | 1080 | 1050 |
| 3 | M | 1180 | 1280 | 1250 |
| 4 | L | 1380 | 1480 | 1450 |
交点の答え
…
完成した数式
MATCH(サイズ, A2:A4, 0) で「行番号」、MATCH(地域, B1:D1, 0) で「列番号」を別々に求め、INDEXに2つとも渡すと交点が1発で取れます。行だけ・列だけの表引きより、こちらが実務では圧倒的によく使う形です。
RESCUE
④ ありがちな3つの失敗
INDEX・MATCHが思った値を返さないときは、ほぼこの3つが原因です。体験ボタンで①のミニ表に再現します。
MATCHの第3引数を省略 → 近似一致になる
MATCH(検索値, 範囲) と第3引数を省略すると「1」(昇順の近似一致)扱いになります。表が昇順に並んでいないと、探している値が無いのに“それらしい間違った位置”が返り、INDEXも間違った値を返します。
直し方:完全一致で探したいときは必ず第3引数に 0 を書きます。=MATCH(検索値, 範囲, 0)
INDEXの範囲とMATCHの範囲の行数がズレている
INDEXで取り出す範囲とMATCHで探す範囲は「同じ行数・同じ並び」が大前提です。範囲の開始行がずれていると、MATCHが返した位置番号は正しくても、INDEXは別の行の値を取り出してしまいます。
直し方:2つの範囲は「同じ表の同じ行範囲」から選ぶ。コピーで範囲がずれていないか都度確認。
INDEXの範囲とMATCHの範囲が「別物」になっている
氏名列で探した位置を、まったく別の表(部署の並びが違う表など)のINDEXに渡してしまうミス。位置番号だけが独り歩きすると、探した表と取り出す表の行の対応が崩れます。
直し方:INDEXの範囲・MATCHの範囲は「同じ表」から選ぶ。範囲名やコメントで対応を明示するのも有効。
いま①で再現している内容
INDEX・MATCHの読み方
2つの係の分業。それぞれは驚くほど単純です。
- 1
MATCHは「何番目にあるか」を返すだけ
=MATCH(検索値, 範囲, 0)。範囲の中を上から順に見て、一致した位置(1始まり)を返します。値そのものは返しません。
- 2
INDEXは「その位置の値」を返すだけ
=INDEX(範囲, 位置番号)。位置がどこから来たか(手入力かMATCHの結果か)は関係ありません。だからMATCHの結果をそのまま差し込めます。
- 3
MATCHの第3引数は、迷わず 0 と書く
省略すると近似一致(1)扱いになり、昇順でない表では間違った位置が返ります。完全一致で探したいときは必ず 0 を明示します。
- 4
2回使えば、行×列のクロス表引きになる
MATCHで行番号、MATCHで列番号を求め、INDEX(範囲, 行番号, 列番号) に両方渡すだけ。これがVLOOKUPには(素直には)できない、INDEX+MATCH最大の実務価値です。
🔒 ミニ表の検索も数式の組み立ても、すべてあなたのブラウザの中(純JavaScript)で完結します。入力・選択した内容はサーバに送られません(送信ゼロ)。文字列の大小比較は簡易版(文字コード順)のため、Excelのロケール依存の並び順とは細部が異なる場合があります。
📖 このツールで使う用語
用語集トップへ →分からない用語があれば、クリックして解説をご覧ください。
よくある質問
Q. INDEX・MATCHとは何ですか?
A. 2つの関数の組み合わせです。MATCHが「検索値が範囲の何番目にあるか」という位置(座標)を返し、INDEXがその位置の値を取り出します。=INDEX(取り出す範囲, MATCH(検索値, 探す範囲, 0)) の形で使います。
Q. VLOOKUPよりどこが優れていますか?
A. 3点あります。①検索列より左の値も引ける。②列を範囲で指定するので列を挿入してもズレない。③探す範囲を絞りやすく大きい表で軽い。行×列のクロス表引きができる点も大きな利点です。
Q. MATCHの第3引数はどう指定すべきですか?
A. 完全一致で探したいときは必ず 0 を指定します。省略すると近似一致扱いになり、表が昇順でないと間違った位置が返ることがあります。本ツールで再現できます。
Q. 行×列のクロス表引きとは何ですか?
A. サイズや地域のように、行見出しと列見出しの2軸で交わる値を取り出す使い方です。MATCHを縦横2回使って行番号・列番号を求め、INDEX(範囲, 行番号, 列番号) に渡すと交点の値が取れます。
Q. XLOOKUPがあればINDEX・MATCHは不要ですか?
A. Excel 2021/Microsoft 365 ならXLOOKUP1本で十分な場面が多いです。ただし古いExcelとの互換性が必要なファイルや、クロス表引きのような発展形ではINDEX・MATCHの考え方が今も役立ちます。
Q. INDEXの範囲とMATCHの範囲がズレるとどうなりますか?
A. MATCHが返すのは「範囲内の何番目か」なので、INDEXの範囲の開始行がズレていると違う行の値を取り出します。2つの範囲は同じ表・同じ開始行から選ぶのが鉄則です。
Q. 入力したデータはどこかに送られますか?
A. いいえ。ミニ表の走査も数式の組み立てもすべてブラウザ内で完結します(送信ゼロ)。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
RELATED TOOLS
続けて整える