INDEX(位置から値を取り出す)と MATCH(値から位置を探す)を組み合わせると、VLOOKUPより柔軟な検索ができます。XLOOKUPが使えない古いExcelでの定番です。
=INDEX(取り出す範囲, MATCH(検索値, 検索する範囲, 0))| 部品 | 構文 | 役割 |
|---|---|---|
| MATCH | MATCH(検索値, 範囲, 0) | 検索値が範囲の何番目にあるかを返す。0=完全一致 |
| INDEX | INDEX(範囲, 行番号) | 範囲のN番目の値を返す |
A列=社員番号、B列=氏名の表で、氏名から社員番号を出す(VLOOKUPでは不可能な向き):
=INDEX(A2:A100, MATCH("田中", B2:B100, 0))
→ MATCHが「田中はB列の何行目か」を返し、INDEXがA列の同じ行を取り出す行見出し=支店(A列)、列見出し=月(1行目)の売上クロス表から、大阪支店の3月を取る:
=INDEX(B2:M20, MATCH("大阪", A2:A20, 0), MATCH("3月", B1:M1, 0))| 第3引数 | 意味 | 前提 |
|---|---|---|
0 | 完全一致。通常はこれ | なし |
1(省略時) | 検索値以下の最大値 | 昇順に並んでいること |
-1 | 検索値以上の最小値 | 降順に並んでいること |
MATCH(...) 単体をセルに入れて、位置が返るかを確かめると切り分けが速いです。