見出し画像

「VLOOKUP」<「INDEX×MATCH」の理由をちゃんと説明している記事が少なすぎる~ちゃんと使ったことないのに記事書くなハゲタコ~

【1.問題の所在】

多くのExcel入門本の最後のほうにはだいたいVLOOKUP関数が登場し、VLOOKUPを覚えればとりあえず”初級編クリア”といった風潮がある。
ex.『たった1日で即戦力になるExcelの教科書』『神速Excel』他多数
※ちなみに『神速Excel』は内容・装丁ともにめちゃくちゃいい本。

しかし、VLOOKUPは不便&遅いだけなので、VLOOKUPを覚えたらすぐに忘れてINDEX×MATCH関数に移行してほしい

INDEX×MATCH関数を紹介しているブログ記事は多数あるが、VLOOKUPの一体なにが問題で、INDEX×MATCHであればどのように解決されるかをきちんと理解しているものが著しく少ない。おそらくそれらの筆者はまともにExcelを使ったことのないハゲタコどもであろうと推察される。この文章は、オレ達からそんなハゲタコ達への鎮魂歌です。


【2.VLOOKUPの問題点~不便&遅い~】

①不便
VLOOKUPはその性質上、「検索キー」が「引っ張ってきたいデータ」より左にないと使えない。よくわからんという方は「VLOOKUP 不便」とかでググってほしい。

②遅い
後述するように、VLOOKUPはINDEX×MATCHのような軽量化の工夫ができないので遅い。数が少なければ影響はそんなにないが、計算は速いに越したことはないし、ファイルは軽いに越したことはない。
ファイルサイズがとんでもないExcelをたまに見かけるが、VLOOKUPの使いすぎだったりする。

【3.ハゲタコ記事の言う、”INDEX×MATCHの良さ”】

とりあえず、「VLOOKUP INDEX MATCH」とクエリに打ち込んで、ヒットした(2021/02/19時点)記事を上から10個読んでみようと思った。
10個目がMicrosoftのHPだったので除外し、9個にした。

それら9個の記事を便宜的に上から順に⑴~⑼とする。
⑴~⑼が、INDEX×MATCHを使うことのメリットについてどう述べているかというと、

⑴ 左端の列からでなくても検索可能
⑵ 柔軟な検索が可能
⑶ 左端の列からでなくても検索可能
⑷ 左端の列からでなくても検索可能
⑸ 柔軟な検索が可能
⑹ 単なるINDEX×MATCHの紹介
⑺ 左端の列からでなくても検索可能
⑻計算が軽い、左端の列からでなくても検索可能、後からデータベースに列を挿入しても参照先がずれない
⑼ 単なるINDEX×MATCHの紹介

と、⑻以外の記事はすべて、理解が乏しいと言わざるを得ないハゲタコ記事であった。たしかにINDEX×MATCHは左端から検索しなくてもいいのだが、それだけじゃない、というか、違う、そうじゃない。

※⑻の記事のみ、非常に良い記事だったので紹介しておきます↓
投資銀行エクセル術:vlookupよりもindex matchが格段に優れている理由を解説します


【4-1.INDEX×MATCHの良さ~列番号を指定しなくてよい~】

INDEX×MATCHの最大の利点は「列番号を指定しなくてよい」ということである。

例えば以下のようなA~Jというフィールドを持つデータセットからHフィールドのデータを持ってくるとき、VLOOKUPでは列番号の「9」を指定する必要がある。

画像7

この場合、Hフィールドが9列目であることを数える必要がある。9列目だから今回は助かったが、これが1812列目とかだった場合、詰む。

INDEX×MATCHの場合は引数の「配列」を1列だけにした場合、列番号の指定が要らないので、以下のようになる。9列目だろうが1812列目だろうが、持ってきたいデータの列を選択さえできれば大丈夫である。

画像7

先ほど紹介した⑻を除く8つのハゲタコ記事のうち、「列番号の指定が要らない」ということに触れているものはたったの1つであった。また、関数の表記を間違えているものも散見される。例えばこれ↓

画像3

違う、そうじゃない。Excelに関数を打ち込んでよく見てみろ。列番号が省略できることを表すために[ ]で囲ってあるだろうが。

画像4

また、ハゲタコ記事は「配列」の選択の仕方もまるでなってない。

画像5

こんなかんじで、データセット全部を選択してしまっている。

あほか。この選択の仕方だと列番号の指定が要るだろうが。おまけに全部検索するから遅くなる。

【4-2.INDEX×MATCHの良さ~MATCH関数の外出しによる軽量化~】

INDEX×MATCHを使う利点はこれだけではない。
VLOOKUP然りMATCH然り、検索系の関数は使いすぎると重くなり、時にはファイルがフリーズする。
そんな時、INDEX×MATCHならば、一工夫してMATCH関数の登場回数を減らしファイルを軽くすることができるのである。

例えば先ほどと同じデータセットから、Hフィールドに加えJフィールドの計2フィールドからデータを持ってきたいとする。

画像7

このとき、VLOOKUPであれば、D4セル、E4セルそれぞれにVLOOKUP関数を打ち込む必要がある。

しかし、INDEX×MATCHは違う。以下のように、別セルにMATCH関数だけを打ち込み(=外出しして)、行番号を先に求めておけば、

画像7

INDEX関数の行番号指定でそのセルを参照するだけでデータを引っ張ってこれる。

画像8

この場合、MATCH関数は1回しか登場していない。引っ張ってきたいデータが多くなればなるほど、その分MATCH関数の登場回数を減らせるので、効果は大きくなる。

引っ張りたい数値が膨大になる場合はMATCH関数を外出ししてファイルを軽くしておくのがよい。


【5.結論】

①息をするようにINDEX×MATCHを使え。持ってきたいデータは1列だけ選択し、INDEX関数の列番号は指定するな。

②引っ張ってきたい数値が多い場合はMATCH関数を外出しして軽量化しろ。

③INDEX×MATCHをろくに使ったこともない似非ビジネスマンはブログ書くなハゲタコ。

④当然ながらいい記事も多数存在するので、頑張っていい記事を探せ。
例えば以下の2つ:
「分かりにくくて再計算が遅い」Excelを改善するための数式
VLOOKUPの高速化方法と速度比較(VLOOKUP/INDEX+MATCH)


この記事が気に入ったらサポートをしてみませんか?