久闊を叙す。私です。例によりSpreadsheet AdventCalendar2020のアレとなります。
規定の時刻から2時間弱ほどオーバーしたところで今日のアドベントカレンダーの存在を思い出しました。大変申し訳ない。
本日は予定通りVLOOKUP vs INDEX-MATCH論争に終止符を打つ
なる大風呂敷を畳みにMATSURI STUDIO(がある笹塚)からやってまいりました。
諸賢におかれては言わずもがな、任意の検索キーで特定範囲からデータを参照する関数としてVLOOKUP
とINDEX+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で入れ換えてあげればよいのだ!!!カンタンに過ぎる!!!
ちなみに
前回の投稿では、VLOOKUPをVLOOKUPしたい(複数キーを検索条件にVLOOKUPしたい)という解として今回と同じくVLOOK+QUERYを提案しました。 あとQUERYなら中でIMPORTRANGEも出来るし、複数範囲をマージするQUERYも出来るし、OrderByして最上行だけ取ってくるとかもできますね。 つまりQUERYを挟んでしまえばもう何でも出来ちゃうので、もうINDEX+MATCHなんか目じゃないわけです。
いかがでしたか
とはいえINDEX+MATCHがBlurならVLOOKUPはOasisという感じで、最終好みといえば好みなのでINDEX+MATCH派閥の皆様におかれましては是非心を平らかにしてご覧ください。討ち入りとかしないでね。