在Excel的函数库中,XLOOKUP函数堪称“全能选手”。它突破传统查找函数局限,通过灵活的参数设置,让复杂数据查找变得轻松高效。无论是基础的数据核对,还是进阶的多条件匹配,XLOOKUP函数都能游刃有余。掌握它的两大核心用法,就像拥有了数据处理的“金钥匙”,能大幅提升工作效率。接下来,我们一起解锁XLOOKUP函数这些实用技巧。
一、XLOOKUP一对多查找:精准定位多组匹配结果
在数据处理中,我们常常会遇到需要根据一个关键词,查找出所有符合条件记录的情况,这就是一对多查找。XLOOKUP函数在应对这类问题时,展现出了超乎寻常的便捷性。
- 需求场景
根据产品名称,从数据中查找出所有对应的库存记录。
- 实用公式
=LET(a,SCAN(0,A2:A6=D4,SUM)&D4,XLOOKUP(UNIQUE(a),a,B2:B6))
- 公式解析
这个公式的精妙之处在于巧妙地解决了查找对象存在多个相同值的难题。首先,SCAN(0,A2:A6=D4,SUM)这部分通过累加运算,得到一组新的序号,例如{1;1;2;2;3}。接着,将这组序号与查找对象(如“A”)相连,形成{"1A";"1A";"2A";"2A";"3A"}这样一组独特的标识。然后,利用UNIQUE函数对这组标识去重,得到{"1A";"2A";"3A"}作为新的查找对象。最后,以B2:B6作为返回数据区域,XLOOKUP函数就能精准地返回所有符合条件的库存记录。
与之前常用的VLOOKUP一对多公式相比,XLOOKUP的优势十分明显。它只需要构造新的查找对象,而VLOOKUP还需要额外构造查找数据范围,大大简化了操作步骤。
二、XLOOKUP多行多列查找:高效获取多维度数据
当我们需要根据多个关键词,查找出对应的多列数据时,多行多列查找就成了必要的技能。虽然FILTER函数在这类操作中表现出色,但XLOOKUP函数同样不甘示弱,借助“REDUCE+LAMBDA”函数组合,它能完美实现这一需求。
- 需求场景
根据多个序号,查找出对应的“名称、盘点”等多列数据。
- 初始尝试
一开始,尝试使用XLOOKUP函数,将查找对象和返回区域均以数组形式书写,公式如下:
=XLOOKUP(F4:F6,A2:A6,CHOOSECOLS(A2:D6,XMATCH({"名称","盘点"},A1:D1)))
但结果并不理想,仅返回了名称列的数据{"B";"C";"E"},挑战以失败告终。
- 成功公式
经过优化,借助“REDUCE+LAMBDA”函数组合,成功实现了XLOOKUP多行多列查找,公式如下:
=LET(a,{"名称","盘点
"},REDUCE(a,F4:F6,LAMBDA(X,Y,VSTACK(X,XLOOKUP(Y,A2:A6,CHOOSECOLS(B2:D6,XMATCH(a,B1:D1)))))))
- 公式解析
这个公式的核心在于计算表达式部分:
XLOOKUP(Y,A2:A6,CHOOSECOLS(B2:D6,XMATCH(a,B1:D1)))。其中,CHOOSECOLS+XMATCH的组合构造出了需要返回的数据区域,“Y”作为查找对象,其值由REDUCE函数从数组F4:F6中依次传递得到。
整个过程相当于把查找一列值的操作,拆分为多次查找单个值,每次查找出一行结果后,就用VSTACK函数将其与上一步的结果垂直拼接。当REDUCE函数传递完所有参数后,运算终止,最终实现了用XLOOKUP函数查找多行多列数据的效果。
与VLOOKUP公式对比
类似的,使用VLOOKUP函数结合VSTACK也能实现该功能,公式如下:
=LET(a,{"名称","盘点
"},REDUCE(a,F4:F6,LAMBDA(X,Y,VSTACK(X,VLOOKUP(Y,A2:D6,XMATCH(a,A1:D1),0)))))
通过对比可以发现,无论是XLOOKUP还是VLOOKUP,实现多行多列查找功能的背后,都离不开“REDUCE+LAMBDA”这个强大的函数组合。
知识链接:“REDUCE+LAMBDA”函数组合的妙用
“REDUCE+LAMBDA”函数组合是Excel中功能十分强大的工具,它能极大地拓展函数的应用范围。
- 示例公式
=REDUCE(0,B1:K1,LAMBDA(X,Y,Y^2+X))
- 公式解析
REDUCE函数的功能是通过将LAMBDA函数应用到数组的每个值上,返回累加器中的总值,从而将数组减小为一个累计值。在上面的公式中,REDUCE的第一参数0为初始值,第二参数B1:K1是需要传递计算的数组;第三参数LAMBDA(X,Y,Y^2+X)中,X对应REDUCE函数的第一参数(初始值或上一步的计算结果),Y对应REDUCE函数的第二参数(数组中的每个值),Y^2+X则是具体的计算表达式。
其计算原理是,REDUCE依次将第二参数B1:K1中的每个值传递到LAMBDA的计算表达式中。计算得到的第一个值为1²+0=1;第一步的结果1在第二步计算中作为X,第二个值为2²+1=5;第三个值为3²+5=14,以此类推,直到计算完最后一个值,得到385作为最终结果。
结语
XLOOKUP函数的这两大顶级用法,从一对多查找的精准高效,到多行多列查找的灵活拓展,充分展现了它在数据处理中的强大实力。而“REDUCE+LAMBDA”函数组合的加入,更是让XLOOKUP函数的功能如虎添翼。掌握这些技巧,不仅能让你在面对复杂数据查找时游刃有余,更能让你在Excel的使用水平上更上一层楼。
评论 (0)