✅ 自分のPCで動作確認済
この記事の手順・数式は、すべて運営者(じむ)自身のPCで実際に動かしてから掲載しています。
検証環境:Windows 11 Home / Microsoft 365(Excel 2024)/ 解像度 1920×1080
VLOOKUPを使いこなしている方に
ぜひ覚えてほしい関数があります。
それがINDEX+MATCHの組み合わせです。
「VLOOKUPで十分では?」と思うかもしれませんが
INDEX+MATCHにはVLOOKUPにはない
大きなメリットがあります。
この記事を読めばVLOOKUPから
INDEX+MATCHに乗り換えられるようになります。
VLOOKUPの弱点とは?
VLOOKUPには実は3つの弱点があります。
| 弱点 | 具体的な問題 |
|---|---|
| 左側を検索できない | 検索列より左にあるデータを取得できない |
| 列の挿入に弱い | 列を追加すると列番号がずれてエラーになる |
| 処理が遅い | データが多いとファイルが重くなりやすい |
INDEX+MATCHならこの3つの弱点がすべて解消されます。
VLOOKUPで限界を感じたら、次に覚えるのがこの組み合わせです。私はこれで複雑な検索が一気に楽になりました。
INDEX関数とMATCH関数をそれぞれ理解する
INDEX+MATCHは2つの関数を組み合わせて使います。
まずそれぞれの役割を説明します。
MATCH関数:「何番目にあるか」を調べる
MATCH関数は指定した値が
リストの中で何番目にあるかを返します。
【書き方】
=MATCH(探したい値, 探す範囲, 0)
【例】
A列に「東京・大阪・名古屋」と入っているとき
=MATCH(“大阪”, A1:A3, 0)
→ 結果は「2」(2番目にある)
最後の「0」は完全一致で探すという意味です。
いつも「0」と書いてください。
INDEX関数:「何番目のデータ」を取り出す
INDEX関数は指定した範囲から
何番目のデータかを指定して取り出します。
【書き方】
=INDEX(取り出したい範囲, 行番号)
【例】
B列に「100・200・300」と入っているとき
=INDEX(B1:B3, 2)
→ 結果は「200」(2番目のデータ)
INDEX+MATCHを組み合わせる
MATCH関数で「何番目か」を調べてその番号をINDEX関数に渡す。
これがINDEX+MATCHの仕組みです。
| ステップ | やっていること | 結果 |
|---|---|---|
| ① | MATCH関数で「大阪」が何番目にあるか調べる | 2番目 |
| ② | INDEX関数でB列の2番目のデータを取り出す | 200 |
数式にするとこうなります。
=INDEX(B1:B3, MATCH(“大阪”, A1:A3, 0))
「A列から大阪を探して、同じ行のB列の値を取り出す」
という意味です。VLOOKUPと同じ結果になります。
実際のデータで使ってみよう
以下のデータでINDEX+MATCHを使います。
| A列(社員番号) | B列(氏名) | C列(部署) | D列(売上) |
|---|---|---|---|
| 001 | 山田太郎 | 総務部 | 500,000 |
| 002 | 鈴木花子 | 経理部 | 380,000 |
| 003 | 田中一郎 | 営業部 | 620,000 |
例1:社員番号から氏名を取得する
=INDEX(B1:B3, MATCH(“002”, A1:A3, 0))
結果:鈴木花子
VLOOKUPでも同じことができますが
次の例がINDEX+MATCHの真価を発揮する場面です。
例2:氏名から社員番号を取得する(左方向の検索)
=INDEX(A1:A3, MATCH(“田中一郎”, B1:B3, 0))
結果:003
VLOOKUPでは検索列より左にあるデータは
取得できませんでしたが
INDEX+MATCHなら問題なく取得できます。
これがINDEX+MATCHの最大のメリットです。
VLOOKUPとINDEX+MATCHの比較まとめ
| VLOOKUP | INDEX+MATCH | |
|---|---|---|
| 検索方向 | 右方向のみ | 左右どちらも可能 |
| 列の挿入 | 列番号がずれる | 影響を受けない |
| 処理速度 | データが多いと遅い | VLOOKUPより速い |
| 数式の読みやすさ | シンプル | やや長い |
| おすすめ度 | 初心者向け | 中級者以上におすすめ |
いきなり全部を切り替えなくてOK
「今までVLOOKUPで作った表を
全部書き換えないといけないの?」
その必要はありません。
今動いている数式はそのままで大丈夫です。
新しく数式を作るときから
INDEX+MATCHを使い始めてみてください。
特に「検索列より左のデータを取りたい」
という場面が出てきたら
INDEX+MATCHの出番です。
まとめ
INDEX+MATCHはVLOOKUPの弱点を
すべて解消してくれる組み合わせです。
・MATCH関数:何番目にあるか調べる
・INDEX関数:何番目のデータを取り出す
・左方向の検索ができる
・列の挿入に影響されない
・VLOOKUPより処理が速い
VLOOKUPに慣れてきた方は
ぜひINDEX+MATCHを使ってみてください。
一度覚えればこちらの方が便利です。


コメント