この記事でわかること
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との違い
機能 | VLOOKUP | INDEX+MATCH |
---|---|---|
左側の列から検索 | できない | できる |
列の追加・削除の影響 | あり | ほぼなし |
複数条件への対応 | やや困難 | 柔軟に対応可能 |
応用:MATCHで列番号を動的にする
以下のような表があるとします:
商品コード | 商品名 | 価格 | 在庫 |
---|---|---|---|
A001 | りんご | 100 | 30 |
A002 | みかん | 120 | 40 |
「みかん」の「価格」を動的に取得したいとき:
=INDEX(A2:D3, MATCH("みかん", B2:B3, 0), MATCH("価格", A1:D1, 0))
👉 結果:120
応用:複数条件でのINDEX+MATCH
以下のような表で「商品名 × 地域」による在庫数を取得したいとき:
商品名 | 東京 | 大阪 |
---|---|---|
りんご | 50 | 40 |
みかん | 60 | 45 |
=INDEX(B2:C3, MATCH("みかん", A2:A3, 0), MATCH("大阪", B1:C1, 0))
👉 結果:45
よくあるエラーと対策
#N/A
:MATCHで見つからなかった#REF!
:INDEXの範囲外を参照した- 範囲のズレ:行番号・列番号が意図と違っている
まとめ
- INDEX + MATCHは、柔軟な検索が可能で実務に強い
- 表の構造変更に強く、壊れにくい式が作れる
- 複数条件・動的な列指定にも対応できる
次回は、配列数式やXLOOKUPとの比較、さらなる実践的な活用方法を紹介予定です!
コメント