Excel関数 INDEXとMATCHの完全ガイド|VLOOKUPではできない検索をマスター!

Excel裏技

この記事でわかること

Excelの検索関数といえば「VLOOKUP」が有名ですが、もっと自由度の高い検索がしたいときに活躍するのが「INDEX関数」と「MATCH関数」の組み合わせです。

この組み合わせを使えば、VLOOKUPではできない「左側の列から検索」「列の挿入・削除に強い検索」「複数条件での柔軟な検索」が可能になります。

この記事では、INDEXとMATCHの基本的な使い方から、VLOOKUPとの違い、応用例、実務で役立つテクニックまで詳しく解説します。

INDEX関数とは?

構文

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

指定した範囲の中から、指定された行・列の交差セルにある値を返す関数です。

使用例

A列B列
りんご100
みかん120
バナナ80

=INDEX(B2:B4, 2) は、B列の2番目の値「120」を返します。

特徴

  • 値を「位置」で取得できる
  • 他の関数と組み合わせて応用しやすい

MATCH関数とは?

構文

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

検索値が、検索範囲の中で何番目にあるかを返す関数です。

使用例

=MATCH("みかん", A2:A4, 0) は、「みかん」が範囲の2番目にあるので「2」を返します。

注意点

  • 0 は完全一致
  • 1 または -1 は近似一致(通常は使わない)

INDEX + MATCH の組み合わせ

構文

=INDEX(返したい列, MATCH(検索値, 検索列, 0))

この形で、検索値に対応する列の値を取り出すことができます。

使用例

「A列で ‘みかん’ を検索し、B列の価格を取得」:

=INDEX(B2:B4, MATCH("みかん", A2:A4, 0))

👉 結果:120

VLOOKUPとの違い

機能VLOOKUPINDEX+MATCH
左側の列から検索できないできる
列の追加・削除の影響ありほぼなし
複数条件への対応やや困難柔軟に対応可能

応用:MATCHで列番号を動的にする

以下のような表があるとします:

商品コード商品名価格在庫
A001りんご10030
A002みかん12040

「みかん」の「価格」を動的に取得したいとき:

=INDEX(A2:D3, MATCH("みかん", B2:B3, 0), MATCH("価格", A1:D1, 0))

👉 結果:120

応用:複数条件でのINDEX+MATCH

以下のような表で「商品名 × 地域」による在庫数を取得したいとき:

商品名東京大阪
りんご5040
みかん6045
=INDEX(B2:C3, MATCH("みかん", A2:A3, 0), MATCH("大阪", B1:C1, 0))

👉 結果:45

よくあるエラーと対策

  • #N/A:MATCHで見つからなかった
  • #REF!:INDEXの範囲外を参照した
  • 範囲のズレ:行番号・列番号が意図と違っている

まとめ

  • INDEX + MATCHは、柔軟な検索が可能で実務に強い
  • 表の構造変更に強く、壊れにくい式が作れる
  • 複数条件・動的な列指定にも対応できる

次回は、配列数式やXLOOKUPとの比較、さらなる実践的な活用方法を紹介予定です!

コメント

タイトルとURLをコピーしました