最近这几个月,XLOOKUP震惊了Excel界,传言三头六臂无所不能,一个人把LOOKUP全家兄弟姐妹的活都给抢了。最开始我是不以为意的,但是相关的信息越来越多,我终于忍不住,今天去买了一套office365,发现还是没有,查了消息才知道需要加入office预览体验计划,又折腾了半天,终于XLOOKUP出现在我的函数列表里,怀着激动的心情,开始写这篇文章。
先放一个总结,就是:艾玛!真香!
但是,香是香了,可是大多数使用非365版的office的朋友暂时还用不上XLOOKUP,活还是要干的,咋办?在这里我整理了一些XLOOKUP函数的功能以及通过其他函数实现的办法,正好可以以XLOOKUP为线索,系统的讲一下LOOKUP家族的常见玩法。
本着喜新厌旧的性格,先介绍一下新人
=XLOOKUP(lookup_value,lookup_array,return_array,[match_mode],[search_mode],[if_not_found])
XLOOKUP函数一共6个参数,前3个为必填参数,后3个选填参数,一般默认值时可以省略。
lookup_value:查询值
lookup_array:查询区域
return_array:返回值区域
match_mode:匹配方式。有4个值可以选:0/省略,精确匹配;-1,精确匹配或下一个较小项;1,精确匹配或下一个较大项;2,通配符匹配。
search_mode:查询方式。1,正序查询,从上到下,类似于vlookup的玩法;-1,倒序查询从下往上,类似于lookup的玩法,2和-2没玩过,是二进制文件的正序以及倒序查询。
if_not_found:查询不到的返回值。看到这里,我才知道,失业的不光是VLOOKUP,IFERROR和IFNA也跟着失业了,以往VLOOKUP等函数查询不到结果的时候,会返回错误值#N/A,我习惯用IFERROR屏蔽错误值,但是在XLOOKUP这里,只需要把IFERROR里面第二参数填的内容填在XLOOKUP的第六参数里面就可以了,如果不填,查询不到依旧会返回#N/A。这感觉就像加多宝和王老吉打架,把和其正给打死了,这冤不冤啊!
下面来继续讲讲这一家子的玩法
一、单条件查找
这是VLOOKUP最擅长干的活了,但是XLOOKUP又有什么特别的呢?
=XLOOKUP(H9,$H$2:$H$5,$K$2:$K$5,0,1,"找不到")
这里为了演示,我把6个参数全部填满了,但其实第四第五参数是可以省略的:
=XLOOKUP(H9,$H$2:$H$5,$K$2:$K$5,,,"找不到")
如果不需要填第六参数:
=XLOOKUP(H9,$H$2:$H$5,$K$2:$K$5)
如果不使用XLOOKUP,那么使用VLOOKUP,LOOKUP,INDEX+MATCH都可以实现,这里介绍最常用的VLOOKUP用法:
=IFERROR(VLOOKUP(H15,$H$2:$K$5,4,0),"找不到")
可以看到,为了实现和XLOOKUP第六参数一样的功能,这里用到了IFERROR,也可以用IFNA。
LOOKUP玩法:
=LOOKUP(0,1/(H9=$H$2:$H$5),$K$2:$K$5)
在这里看,XLOOKUP和LOOKUP家族其他成员相比,并没有什么优势,反而好像更复杂一些,6个参数看着都头晕,要他干嘛呢?下面就要展示真正的技术了,如果要查询的不是一列数据,而是要返回多列数据把后面的1-12月都填满该怎么办呢?
二、查询返回多列
接着上面的说,如果返回多列数据,XLOOKUP终于要体现出优越性了。
=XLOOKUP(H9,$H$2:$H$5,$K$2:$V$5)
从图上可以看到,点击填充数据的单元格的时候,后面的单元格也一起框出来了,这就是office的新功能,动态数组溢出,返回值为单个时和之前一样,返回值为数组时,自动溢出向右或者向下填充。公式只在第一个单元格里面。
然而这个活没有XLOOKUP怎么干呢?
方法一:VLOOKUP+MATCH
=VLOOKUP($H14,$H$2:$V$5,MATCH(K$13,$H$1:$V$1,),)
这里第三参数使用MATCH函数生成,如果确定返回数据和查询数据表头完全一致,那么第三参数可以直接改为COLUMN(D:D):
=VLOOKUP($H14,$H$2:$V$5,COLUMN(D:D),)
方法二:有没有更简单的办法?LOOKUP来了:
=LOOKUP(1,0/($H$2:$H$5=$H14),K$2:K$5)
这里的用法与VLOOKUO+COLUMN一样,也是表头完全一致的情况下才可以用关键是K$2:K$5使用行绝对引用列相对引用。
可以看出,到这一步XLOOKUP的优越性就体现出来了,语法简单,不需要嵌套其他函数,但是如果没有XLOOKUP,LOOKUP的语法也比较简单。
三、多条件查询
日常当中经常会遇到多条件查询的情况,以往需要使用VLOOKUP+IF数组公式来实现,或者使用LOOKUP。而使用XLOOKUP就简单多了:
=XLOOKUP(I9&J9,$I$2:$I$5&$J$2:$J$5,$K$2:$V$5)
使用VLOOKUP:
=VLOOKUP($I14&$J14,IF({1,0},$I$2:$I$5&$J$2:$J$5,K$2:K$5),2,)
使用LOOKUP:
=LOOKUP(1,0/(($I14=$I$2:$I$5)*($J14=$J$2:$J$5)),K$2:K$5)
这是LOOKUP常用的多条件查询的使用方法,相乘表示且的关系,等于AND,相加表示或的关系,等于OR的用法。
可以看出,对于多条件查询,VLOOKUP和LOOKUP虽然可以实现,但是语法嵌套关系比XLOOKUP复杂得多,而且逻辑关系,相对引用和绝对引用的使用,可能不熟悉的朋友会很头疼,但是如果要两个条件满足其一即可的情况下,LOOKUP就比XLOOKUP和VLOOKUP简单得多了。
四、横向查询
在LOOKUP家族中,HLOOKUP像是清高孤傲的大家闺秀,一般很少露面,但是她的工作,除了INDEX+MATCH能掺和,一般没人抢饭碗,INDEX+MATCH毕竟写起来复杂,HLOOKUP的工作还是很稳定。但是这次XLOOKUP的到来,连HLOOKUP的饭碗也被抢了。
通过月,查询对于行的值:
=XLOOKUP(K$8:V$8,K$1:V$1,$K3:$V3)
这里也是利用动态数组溢出,把K9单元格的内容向右溢出
HLOOKUP实现方法:
=HLOOKUP(K$13,$K$1:$V$5,ROW(3:3),)
第三参数使用ROW函数产生,和前面VLOOKUP里面用的COLUMN一个道理。看起来,还是XLOOKUP使用起来简单。如果结合多条件查询,XLOOKUP函数的优势更明显。
五、模糊查询,根据分数判定等级
=XLOOKUP(B2:B30,H2:H6,J2:J6,-1,)
这里,第四参数-1,表示从小到大升序匹配,用了XLOOKUP动态数组自动溢出功能以后,简直不要太爽!爽到停不下来!再也不用担心相对引用和绝对引用搞错了!
如果使用VLOOKUP模糊匹配,也可以实现:
=VLOOKUP(B2,$H$2:$J$6,3,1)
VLOOKUP当中,是否绝对引用就很重要了,第四参数1表示模糊匹配,VLOOKUP模糊匹配需要查询数据升序排列
还可以用LOOKUP:
=LOOKUP(B2,$H$2:$H$6,$J$2:$J$6)
可以看出LOOKUP语法也比较简单
以上查询数据都是升序排列,如果是降序,那么就会出错:
这个时候,XLOOKUP只需要把第四参数改为1:
=XLOOKUP(B2:B30,H2:H6,J2:J6,1,)
其他两位,就很难搞定了。
到这里,LOOKUP家族的多数常用功能就讲的差不多了,可以看到,XLOOKUP可以算是把全家的饭碗都给抢了,而且衔着金钥匙出生的XLOOKUP凭借动态数组的加成,大大简化了语法以及对绝对引用的要求。总结起来就两个字:
真香!!!!
最后,如果你有其他思路,欢迎和我分享,如有Excel使用的问题需要解决,也欢迎留言或者私信交流,
我会的,我会尽量回复大家;
我不会的,我去学会后再分享给大家;
我学不会的,我尽量推荐大神来回答。
我就是个菜鸟,也希望能帮到在这条路上更多的你,不写公众号,不引流,不卖课程,单纯的交流学习。
——————————分割线———————————
收藏是赞同的五倍,各位,点个赞再走啊!