こんにちは、阿久梨絵です!
EXCEL でデータを検索・参照するとき、真っ先に思い浮かぶのが VLOOKUP。
でも、実はもっと柔軟で壊れにくい方法があるんです。
それが、INDEX + MATCHの組み合わせ。
今回はこの2つの関数を使って、より安全で拡張性の高い検索方法を解説します。
VLOOKUPの限界とは?
まずはよく使われる VLOOKUP の例から。
=VLOOKUP(“りんご”, A2:B10, 2, FALSE)
・A2:A10 に果物名、B2:B10 に価格があるとき
・「りんご」の価格を取得する式
問題点
・検索列は常に左端でなければならない
・列番号が固定なので、列の順序が変わると壊れる
・複数条件の検索ができない
INDEX + MATCHの基本構文
=INDEX(参照範囲, MATCH(検索値, 検索範囲, 検索方法))
・MATCHで検索値の位置(行番号)を取得
・INDEXでその位置の値を取り出す
具体例:果物の価格を検索する
=INDEX(B2:B10, MATCH(“りんご”, A2:A10, 0))
・A列に果物名、B列に価格
・「りんご」の価格を取得する式
この方法のメリット
| 比較項目 | VLOOKUP | INDEX + MATCH |
|---|---|---|
| 検索列の位置 | 左端のみ | どこでもOK |
| 列の順序変更 | 式が壊れる | 式は壊れない |
| 複数条件検索 | 不可 | 組み合わせで可能 |
| 横方向の検索 | 不可 | INDEXで可能 |
応用:複数条件で検索する
例えば「果物が“りんご”で、サイズが“L”の価格」を検索したい場合
| A列(果物名) | B列(サイズ) | C列(価格) |
|---|---|---|
| りんご | L | 120 |
| みかん | M | 80 |
| バナナ | L | 100 |
| りんご | S | 100 |
| ぶどう | M | 150 |
=INDEX(C2:C10, MATCH(1, (A2:A10=”りんご”)*(B2:B10=”L”), 0))
※この式は配列数式なので、Ctrl + Shift + Enter(またはEXCEL365なら通常のEnter)で確定します。
まとめ
・INDEX + MATCHは、VLOOKUPよりも柔軟で壊れにくい
・列の順序が変わっても安心
・複数条件や横方向の検索にも対応可能
おまけ:覚え方のコツ
・MATCHは「何行目かを探す」
・INDEXは「その行の値を取り出す」
この2つをセットで使えば、 EXCEL の検索力が一気にレベルアップします!
阿久梨絵でした!
