前言
八月底,微软在开发体验版中推出了XLOOKUP,之前已经写了一篇文章介绍VLOOKUP函数的局限性,
惊呆!微软要抛弃VLOOKUP函数了
由于龙逸凡当时没有更新到最新版,没这个函数,只是利用该函数帮助中的示例图片简单地介绍了一下其功能。现在已将Excel更新到最新版。试用了一下,从本人的试用情况来看,有了这个XLOOKUP函数,基本上不用使用VLOOKUP、HLOOKUP了,也在一定程度上替代LOOKUP函数。
与VLOOKUP相比,VLOOKUP函数有的功能,XLOOKUP都有,并且,它还增加了几个关键特性:
1、
可以指定查询的顺序,
可以从前往后查,也可从后往前找,满足不同情境下的查找需求。因而可以返回指定条件的第一个,也可返回指定条件的最后一个。
2、如果没找到指定的值,
可以返回最接近的值(可返回比指定值大的最小值,也可以返回比指定值小的最大值)
3、
既可以纵向查找,也可横向查找(这一点和LOOKUP一样),即可实现VLOOKUP的功能,也可实现HLOOKUP的功能。
4、XLOOKUP函数不必使用Ctrl+Shift+Enter三键输入,就
可以进行数组运算(和LOOKUP一样)。所以可以利用这个特点进行很多扩展。比如多条件查找、一次查找多个值、查找第一个文本、查找最后一个数字,等等
现在详细介绍一下其用法,让大家体验一下它的强大。
一、XLOOKUP函数基础知识语法格式:
用法示例: 注意:上图是在F2:H3单元格利用XLOOKUP函数在B列查找5,要返回的C列对应的值。当XLOOKUP第四、第五参数分别为0、1和-1时返回的结果是不同的,为了方便大家理解,已将B列的值剔除重复值,升序排列放在E7:E14单元格区域。G2单元格公式:
=XLOOKUP(5,$B$3:$B$14,$C$3:$C$14,-1,1)
在B列从上往下查找5,没找到,就返回比它小的最大值(B9单元格的4.5)C列所对应值“甲A7”。G3单元格公式:
=XLOOKUP(5,$B$3:$B$14,$C$3:$C$14,-1,-1)
在B列从下往上查找5,没找到,就返回比它小的最大值(B13单元格的4.5)C列所对应值“甲A11”。H3单元格公式:
=XLOOKUP(5,$B$3:$B$14,$C$3:$C$14,1,1)
在A列从上往下查找5,没找到,就返回比它等大的最小值(B8单元格的6.3)C列所对应值“甲A6”。
H4单元格公式:
=XLOOKUP(5,$B$3:$B$14,$C$3:$C$14,1,-1)
在A列从下往下查找
5,没找到,就返回比它等大的最小值(B10单元格的6.3)C列所对应值“甲A8”。
查找最接近的数
如果要查找
6,要返回最接近的值(两者相减,绝对值最小),可以使用下面的公式:
=XLOOKUP(MIN(ABS(6-B3:B14)),ABS(6-B3:B14),C3:C14)
这个公式比用LOOKUP更好理解
=LOOKUP(1,0/FREQUENCY(0,ABS(B3:B14-6)),C3:C14)
二、典型应用案例
典型应用案例1:返回指定日期的余额这是财务工作中的实际应用案例。查找5月31日的余额,明细账中没有5月31日,就返回5月11日最后一笔的余额:
=XLOOKUP(E1,$A$5:$A$34,$F$5:$F$34,-1,-1)
从下往上找,如果没找到,就返回比它小的最大值对应的数据
典型应用案例2:查找适用的个人所得税税率=XLOOKUP($B5,$D$14:$D$19,E$14:E$19,1,1)
三、扩展应用
1、逆向查找(从右往左查找):=XLOOKUP(A14,$B$4:$B$10,$A$4:$A$10)
2、替代HLOOKUP横向查找横向查找公式
=XLOOKUP(A12,B2:F2,B4:F4)
3、多条件查找 =XLOOKUP($E2&F$1,$A$2:$A$21&$B$2:$B$21,$C$2:$C$21,0,1)
4、还可打批发,一次查找多个 =XLOOKUP($A$11:$A$13,$A$3:$A$8,$C$3:$C$8)
外面套一个SUM就可对查找出的多个结果进行求和:
=SUM(XLOOKUP($A$11:$A$13,$A$3:$A$8,$C$3:$C$8))
查找多个单元格时,还可以是横向或矩形区域:
=XLOOKUP($A$21:$B$22,$A$3:$A$8,$C$3:$C$8)
5、纵向横向交叉查询 没有INDEX+MATCH就不能干交叉查询的活了?
XLOOKUP一个人就搞定了!
=XLOOKUP(A11,A3:A8,B3:F8,0,1) XLOOKUP(A12,B2:F2,B3:F8,0,1)
上面的公式,两个XLOOKUP之间是一个空格
也可以用下面这个公式实现交叉查询:
=XLOOKUP(A11,A3:A8,XLOOKUP(A12,B2:F2,B3:F8,0,1))
6、一个公式就返回多列 =XLOOKUP(A12,$A$3:$A$8,$B$3:$F$8,0,1)
注意,上面公式XLOOKUP的第3参数是一个矩形区域。利用了动态数组的自动溢出功能。
7、返回第一个XX值返回第一个非空单元格的值:
=XLOOKUP(1,--NOT(ISBLANK(A2:A17)),B2:B17)
返回第一个文本值:
=XLOOKUP(1,--ISTEXT(A2:A17),B2:B17)
返回第一个数字:
=XLOOKUP(1,--ISNUMBER(A2:A17),A2:A17)
返回第一个非零值:
=XLOOKUP(1,--(A2:A17<>0),B2:B17)
8、返回最后一个XX值 返回最后一个非空单元格值:
=XLOOKUP(1,--NOT(ISBLANK(A2:A17)),B2:B17,0,-1)
其余类推
9、查找最新单价=XLOOKUP(MAX((B2:B13=E1)*A2:A13),(B2:B13=E1)*A2:A13,C2:C13,0,1)
10、提取唯一值列表 数据表如下:
工作表名称为“数据表”,本工作表的A1:E54单元格区域已使用表格功能,命名为“销售明细”。
按出现的顺序提取唯一值列表=IFNA(XLOOKUP(0,0/(COUNTIF(B$4:B4,数据表!$A$2:$A$54)=0),数据表!$A$2:$A$54),"")
如果用的是新版Excel,其实不用这么复杂,一个UNIQUE函数就搞定了
=UNIQUE(销售明细[客户名称])
11、指定条件的唯一值列表 提取“润发国际集团”所销售的产品的列表:
=IFNA(XLOOKUP(0,0/((数据表!$A$2:$A$54=$C$3)*(COUNTIF(B$4:B4,数据表!$C$2:$C$54)=0)),数据表!$C$2:$C$54),"")
新版Excel,联用FILTER和UNIQUE函数更简单:
=UNIQUE(FILTER(销售明细[商品名称],销售明细[客户名称]=C3,"商品名称"))
新版的Excel有哪些好用的新功能和新函数,请参考下面的链接: Excel 2019 新增了哪些实用功能?(附正式版下载地址)OFFICE 365的这些功能,颠覆了我对Excel的认知①
OFFICE 365的FILTER函数,颠覆了我对Excel的认知②
OFFICE 365的两个筛选函数,颠覆了我对Excel的认知③
亲,现在都是9102年了,就别再用Excel 2003、Excel 2007、Excel 2010了,不装19,好歹装一个13呗
本文知识点XLOOKUP函数
UNIQUE函数
FILTER函数
本文首发于微信公众号“
Excel偷懒的技术”,欢迎大家关注。
。