業務効率化

VLOOKUPではできない?INDEX関数・MATCH関数で柔軟な検索をマスター

スポンサーリンク

はじめに

「VLOOKUPではうまく検索できない……」「左側のデータを取り出したいのにできない……」そんな経験はありませんか?

そんなときに役立つのが、Excelの強力な組み合わせ関数「INDEX・MATCH(インデックス・マッチ)」です。
VLOOKUPの限界を超えてより柔軟に検索・参照ができる「INDEX・MATCH」の基本を、初心者にもわかりやすく解説します。

INDEX関数とMATCH関数の基本

「INDEX・MATCH」は、2つの関数を組み合わせて使う方法です。
それぞれの役割を簡単に紹介します。

INDEX関数とは?

指定した行・列の交差するセルの値を返す関数です。

=INDEX(範囲, 行番号, [列番号])
  • 範囲:参照する表や列
  • 行番号:何行目の値を取得するか
  • 列番号:何列目の値を取得するか(省略可)

🔗 Microsoft公式:INDEX関数の解説

MATCH関数とは?

検索値が範囲の中で何番目にあるか(=相対位置)を返す関数です。

=MATCH(検索値, 検索範囲, 一致の種類)
  • 検索値:探したい値
  • 検索範囲:探す対象となる列
  • 一致の種類:通常は”0″(完全一致)を使います

🔗 Microsoft公式:MATCH関数の解説

🔍 一致の種類の違い
種類意味備考
0完全一致最も一般的。順不同OK
1以下の最大値検索範囲は昇順で並んでいる必要あり
-1以上の最小値検索範囲は降順で並んでいる必要あり

INDEX MATCHの組み合わせで検索する方法

INDEXとMATCHを組み合わせることで、VLOOKUPではできなかったことが可能になります。

基本構文

=INDEX(戻り値の範囲, MATCH(検索値, 検索範囲, 0))

例:名前から点数を取り出す

次のような表があったとします:

A列(名前)B列(点数)
田中80点
佐藤90点
鈴木85点

検索値がD3セルに入っている場合:

=INDEX(B2:B4, MATCH(D3, A2:A4, 0))

→ D3が”佐藤”なら “90点” を返します。

INDEX・MATCHのメリットまとめ

機能VLOOKUPINDEX MATCH
左の列の値を取得❌ 不可✅ 可能
列の追加・削除に強い❌ 弱い✅ 強い
可読性・保守性◎(動的な列参照)
横方向検索(MATCH+INDEX)

なぜ柔軟?

  • MATCHで検索対象の位置を動的に取得できます
  • INDEXで取り出す範囲を自由に指定できます
  • 複数条件検索などの応用にも対応できます

複数条件検索の例(AND条件)

「名前が佐藤 かつ 点数が90点の行を検索」のような複数条件での検索には配列数式やFILTER関数との組み合わせが必要です。

=INDEX(点数範囲, MATCH(1, (名前範囲="佐藤")*(点数範囲="90点"), 0))

※Ctrl + Shift + Enterで配列数式として入力(古いExcelの場合)

INDEX・MATCHができないときの原因と対処法

#N/Aエラーが出る

  • 検索値が表に存在しない
  • 検索値にスペースが入っている(特に全角/半角)

結果がズレる・意図した値と違う

  • INDEXとMATCHの範囲がズレている
  • MATCHの”0″(完全一致)を忘れている

対処法

  • 範囲の整合性を必ずチェックしましょう
  • MATCH関数には必ず”0″(完全一致)を指定 しましょう
  • セルをコピーする際に相対参照/絶対参照の使い分けにも注意しましょう。

VLOOKUPとの違いを比較表で整理

特徴VLOOKUPINDEX MATCH
左側の列を検索
柔軟な構文
表の構造変更耐性弱い強い
複数条件の応用難しい可能

XLOOKUPという便利な関数もある

実は、VLOOKUPとINDEX MATCHのいいとこ取りをした「XLOOKUP」という関数も登場しています。

  • 列番号の指定が不要
  • 左右両方向に検索可能
  • エラー処理も内蔵

※XLOOKUPはExcel 365またはExcel 2021以降のバージョンで使用できます。

まとめ

INDEX関数とMATCH関数を使えば、VLOOKUPの制限を超えた柔軟な検索が可能になります。
「列の順番に依存しない検索」「左側の値の取得」「構造変更に強い式」を作るなら、ぜひ覚えておきたい関数です。

さらにステップアップしたい方は、XLOOKUPも検討してみましょう。

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