Help us understand the problem. What is going on with this article?

これからのスタンダード!? VLOOKUPでも、INDEX+MATCHでもなく、XLOOKUP(EXCEL)

はじめに

EXCELを使っていると、VLOOKUP関数をよく使用します。(どこかでみましたが、SUM、AVERAGEに次いで第3位だとか)

VLOOKUPの不満点を解消したXLOOKUP関数というのがアナウンスされたようです(2019/08/29)

Announcing XLOOKUP
https://techcommunity.microsoft.com/t5/Excel-Blog/Announcing-XLOOKUP/ba-p/811376

普通に使いたい、と思わせるものなので、これからのスタンダードになるかもしれません。

VLOOKUPのいまいちな点

VLOOKUPは大変お世話になっていますが、個人的に感じる、いまいちな点は4つあります。

=VLOOKUP(検索する値, 検索範囲, 検索範囲における列番号, 0)

※0は、完全一致(0もしくはFALSEと指定する)

① 検索範囲の左端列(1番目)を基準としないといけない
②引数の3番目が、「検索範囲における列番号」を数えるのが大変
  • 1つ2つならよいですが、テーブルなどをダウンロードしたあと、表示する値(返り値)が遠く離れていると、3番目の引数に指定するために列数えないといけないです。
③引数の4番目の引数の初期値が「TRUE」となっている(近似値の検索)
  • ほとんどの場合は、完全一致の検索なので、0とかFALSEを指定する必要がある
④大量のデータに、VLOOKUPをいれるとEXCELがとても重くなる。

対応策:INDEX+MATCH or 高速VLOOKUP

①・②の不満を解消するためにでてくるのが、INDEX+MATCHです。

=INDEX(表示する列範囲, MATCH(検索する値, 検索先の列範囲, 0))

ただ、VLOOKUPよりは関数の式がシンプルでなくなってしまいます。

④については、INDEX、MATCH、VLOOKUPを使用して、注意点はあるものの対応することがありました。
下記のページで、「高速VLOOKUP」として紹介されています。
http://excel-ubara.com/EXCEL/EXCEL019.html
(検索先のシートやデータはソートされている必要があります)

=IF(INDEX(Sheet1!$A$2:$A$200001,MATCH($A2,Sheet1!$A$2:$A$200001,1),1)=$A2,VLOOKUP($A2,Sheet1!$A$2:$B$200001,2,TRUE),NA()) 

これからは、XLOOKUP

VLOOKUPに比べて、とてもシンプルになりました。

XLOOKUP 関数
https://support.office.com/ja-jp/article/xlookup-%e9%96%a2%e6%95%b0-b7fd680e-6d10-43e6-84f9-88eae8bf5929?ui=ja-JP&rs=ja-JP&ad=JP

=XLOOKUP(検索する値, 検索先の列範囲, 表示する列範囲,[match_mode],[search_mode])

※後ろ2つはオプション

下記、解説があります(動画もあります)
The VLOOKUP Slayer: XLOOKUP Debuts Excel
https://www.mrexcel.com/excel-tips/the-vlookup-slayer-xlookup-debuts-excel/

また、なぜリリースになったかという理由をみると、「検索範囲の左端列(1番目)を基準としないといけない」「近似値のデフォルトがTRUE」といった問題に対応してくれるものとなっていることがわかります。

1.png

長年の癖でVLOOKUPが勝つのか、それとも、XLOOKUPが市民権を得るのか、、楽しみです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away