酩酊記

俺にいいことがあるように

VLOOKUP vs INDEX MATCH論争に終止符を打つ

久闊を叙す。私です。例によりSpreadsheet AdventCalendar2020のアレとなります。

adventar.org

規定の時刻から2時間弱ほどオーバーしたところで今日のアドベントカレンダーの存在を思い出しました。大変申し訳ない。

本日は予定通りVLOOKUP vs INDEX-MATCH論争に終止符を打つなる大風呂敷を畳みにMATSURI STUDIO(がある笹塚)からやってまいりました。 諸賢におかれては言わずもがな、任意の検索キーで特定範囲からデータを参照する関数としてVLOOKUPINDEX+MATCHのどちらが優れているかという神学論争的アレが今回の題材です。

風呂敷あるある・畳めばコンパクト、ということで、結論はきわめてシンプルです。

俺はVLOOKUPで行く

森崎ウィン風にお届けしました。VLOOKUPで行きます。

なぜか

VLOOKUP最大の難点であった 「検索キーとなる列は参照したい列より左にないといけない」 という問題を、QUERY関数との組み合わせで解消できることが分かったからです。

\どういうことだよ/

説明しますね。

まず検索キーりんごで、売上シートに記載されているりんごの販売単価を得たいとしましょう。

売上シートのデータはこちら。

A B C
販売単価 商品 売上点数
¥500 りんご 30

得たい値である販売単価がりんご(商品名)の列より左にありますね。こうなるともうVLOOKUPはお手上げです。

VLOOKUP(A:C,-1,0)が出来たらいいのに、って何度思ったか知れない。そんなあなたへの抜群にスマートなソリューションが

これです

=VLOOKUP(QUERY("売上シート!A:C","Select B,A),2,0)

範囲となるデータをQUERYのSelectで入れ換えてあげればよいのだ!!!カンタンに過ぎる!!!

ちなみに

yone-yama.hatenadiary.jp

前回の投稿では、VLOOKUPをVLOOKUPしたい(複数キーを検索条件にVLOOKUPしたい)という解として今回と同じくVLOOK+QUERYを提案しました。 あとQUERYなら中でIMPORTRANGEも出来るし、複数範囲をマージするQUERYも出来るし、OrderByして最上行だけ取ってくるとかもできますね。 つまりQUERYを挟んでしまえばもう何でも出来ちゃうので、もうINDEX+MATCHなんか目じゃないわけです。

いかがでしたか

とはいえINDEX+MATCHがBlurならVLOOKUPはOasisという感じで、最終好みといえば好みなのでINDEX+MATCH派閥の皆様におかれましては是非心を平らかにしてご覧ください。討ち入りとかしないでね。