Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@yoshi_yast

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

More than 1 year has passed since last update.

はじめに

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が市民権を得るのか、、楽しみです。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
yoshi_yast
個人開発初学者です。「1か月後の自分は他人である」・「自分の"やったこと"や"つまずき"はきっと誰かの役に立つ」・「アウトプットは最後は自分に返ってくる」ということを意識して個人の記録をOUTPUTしていきたいと思います。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?