Excel関数入門:INDEX + MATCH関数の組み合わせ活用法【VLOOKUPより柔軟な検索】

Excelのデータ検索で定番のVLOOKUP関数に物足りなさを感じたことはありませんか?
そんなときに強力な解決策となるのが INDEX関数とMATCH関数の組み合わせ です。柔軟性が高く、複雑な検索にも対応できるため、上級者にも愛用されています。

この記事では、INDEX+MATCH関数の使い方と実用例をわかりやすく紹介します。


PR

INDEX関数とMATCH関数の基本

INDEX関数とは?

指定した範囲から、行番号・列番号に対応するセルの値を返す関数

=INDEX(範囲, 行番号, [列番号])

関連記事:INDEX関数の使い方

MATCH関数とは?

指定した値が、範囲の中で何番目にあるか(位置)を返す関数

=MATCH(検索値, 検索範囲, [照合の型])

関連記事:MATCH関数の使い方


INDEX + MATCH関数の基本構文

=INDEX(取得したい範囲, MATCH(検索値, 検索範囲, 0))

使用例

例:名前に対応する点数を検索

テスト結果の一覧から「鈴木さんの点数」をINDEX + MATCH関数を使って取り出してみましょう。

① MATCH関数で「位置を見つける」

MATCH関数は、検索値(= 鈴木)が、B3:B5の中で何番目にあるかを探します。

=MATCH(E3,B3:B5,0)

MATCH関数の最後の「0」は「完全一致」を意味します。
部分一致ではなく、「鈴木」とぴったり一致するデータを探すときに使います。

B列が「B3:佐藤  B4:鈴木  B5:高橋 」の場合、「鈴木」は2番目にあるため、
MATCH関数の結果は「2」 になります。

② INDEX関数で「その位置の値を取り出す」

MATCH関数の結果から、「鈴木」が2番目にあることが分かっているので、
次にINDEX関数を使って、C3:C5の中から2番目の値(=鈴木さんの点数)を取り出します。

=INDEX(C3:C5,2)

この式では、範囲 C3:C5 の中の 2番目の値 が返されます。

C列が「C3:80  C4:90  C5:85 」の場合、INDEX関数の結果は「90」 になります。

③ INDEX関数とMATCH関数を組み合わせる

2つの関数を組み合わせると、INDEX+MATCH関数の完成です。

=INDEX(C3:C5,MATCH(E3,B3:B5,0))

検索値に「鈴木」と入力すると、MATCH関数がB列で「鈴木」の位置を見つけ、
INDEX関数がC列の2番目の値(=90点)を返します。

結果:90(鈴木さんの点数)

MATCH関数が「探す」、INDEX関数が「取りに行く」。
この関係を覚えておけば、INDEX + MATCH関数を自在に使いこなせます。


INDEX+MATCHの強み

特徴説明
柔軟な列選択検索対象が左にあってもOK(VLOOKUPは左端限定)
列の追加に強い列番号ではなく列参照なので、構造変更に強い
並び順に依存しないデータがソートされていなくても問題なし
垂直・水平の両方に対応MATCHの検索範囲を列方向にすれば行方向検索も可能

横方向の検索例

例:科目名から点数を取得

A列B列C列
1行目国語数学英語
2行目809070
=INDEX(A2:C2, MATCH("数学", A1:C1, 0)) → 90

応用:2軸検索(行+列)

例:クロス表から得点を取得

A列B列C列
1行目国語数学
2行目鈴木8090
3行目高橋7095
=INDEX(B2:C3, MATCH("高橋", A2:A3, 0), MATCH("数学", B1:C1, 0)) → 95

注意点

  • MATCHの照合型は「0(完全一致)」が基本
  • INDEXの行・列番号は検索範囲内の位置として指定する
  • 検索値が見つからない場合は #N/A エラーが返る

まとめ

INDEX+MATCH関数の組み合わせは、VLOOKUPよりも柔軟で堅牢な検索手段です。表の構造が変更されても壊れにくく、横方向や2軸の検索にも対応可能。検索を極めたいなら、INDEX+MATCHの習得は避けて通れません! XLOOKUP関数への理解にもつながるので、ぜひ実務で使ってみましょう。

関連記事:VLOOKUP関数の使い方
関連記事:XLOOKUP関数の使い方