エクセルでINDEXとMATCH関数を組み合わせて値を検索する方法

手順をタップして順番に確認してみましょう。

  1. 結果を表示したいセルをクリック

    検索結果を表示したい空白のセルをクリックします。

  2. MATCHで検索値の位置を求める

    「=MATCH(検索値, 検索範囲, 0)」で、検索値が検索範囲内の何番目にあるかを求めます。

  3. INDEXでその位置の値を返す

    「=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))」のように2つの関数を組み合わせ、MATCHが見つけた位置の値をINDEXが取得するようにします。

  4. 左側の列でも検索できることを確認

    VLOOKUPと違い、戻り範囲が検索範囲より左側にあっても正常に機能します。

  5. なぜ便利なのか

    VLOOKUPやXLOOKUPが使いにくい古いバージョンのエクセルでも同じように動作し、検索列と戻り値の列の位置に制約なく自由に値を検索できる、伝統的かつ強力な組み合わせです。

どのバージョンのエクセルでも、どちら方向にも使える

VLOOKUPやXLOOKUPは古いエクセルで使えなかったり、表の列順を先に整理し直す必要があったりします。INDEXとMATCHは古くから存在するシンプルな2つの関数に処理を分けており、MATCHが位置を独立して求めるため、戻り範囲は検索範囲に対してどの位置にあっても機能します。

列の挿入や並び替えにも強い

VLOOKUPは戻り値の列を固定の番号で参照するため、検索範囲内のどこかに列を挿入・削除すると、エラーも出ないまま結果がずれてしまいます。MATCHは固定の列番号ではなく位置そのものを動的に特定するため、表のレイアウトが変わっても、INDEXとMATCHの組み合わせは正しい値を指し続けます。

よくある質問

MATCHの3番目の引数「0」はどういう意味ですか?

完全に一致する値だけを探すという意味です。空欄にしたり別の数字を入れたりすると近似一致になり、想定と違う結果になることがあります。

複数の条件で検索することもできますか?

はい、MATCHの中で配列数式を使えば2つ以上の条件を同時に満たす値も検索できますが、数式が複雑になるため、使える環境であればXLOOKUPの複数条件検索のほうが簡単な場合があります。