VLOOKUP七大高级用法,会用的都是EXCEL函数高手!

VLOOKUP七大高级用法,会用的都是EXCEL函数高手!

一、查找多行

场景:查找WPS2、WPS3的工资。

公式:

=VLOOKUP(F3:F4,C2:D5,2,0)

解析:

F3:F4为VLOOKUP的第一参数,表示同时查找“WPS2、WPS3”,好处在于不用下拉填充公式,结果就可以返回每个查找对象对应的工资。

二、查找多列

场景:查找序号1对应的部门、姓名、工资。

公式:

=VLOOKUP(F3,A1:D5,{2,3,4},0)

解析:

{2,3,4}为VLOOKUP的第三参数,表示同时查找序号1对应的第2、3、4列数据,结果返回序号1对应的部门、姓名、工资。

如果将第三参数改为{2;3;4},查找结果还会纵向排为一列。

三、定位查找

场景:动态查找序号0任意两个标题对应的数据。

公式:

=VLOOKUP(F4,A1:D5,XMATCH(G3:H3,A1:D1),0)

解析:

XMATCH(G3:H3,A1:D1)定位“姓名、工资”行标题所在的列位置,作为VLOOKUP的第三参数,结果返回查找对象对应的“姓名、工资”。

当改变查找的标题行时,定位的结果改变带来VLOOKUP第三参数的改变,从而使VLOOKUP达到动态查找的目的。

四、逆向查找

场景:查找WPS2的序号。

公式:

=VLOOKUP(E3,HSTACK(C1:C5,A1:A5),2,0)

解析:

HSTACK(C1:C5,A1:A5)将C列A列重新横向拼接为新的数组,作为VLOOKUP的第三参数,从而使VLOOKUP实现从右向左逆向查找。

五、查找比对

场景:核对两个数据区域是否一致。

公式:

=IF(VLOOKUP(E3:E6,B9:D12,2,0)=B2:B5,"√","×")

解析:

VLOOKUP在B9:D12数据范围内查行查找,将查找到的结果与B2:B5数据区域的值对比,相同返回"√",不相同返回"×",从而实现数据核对功能。

六、一对多查找

场景:查找部门A对应的多个姓名。

公式:

=LET(X,SCAN(0,B2:B5=E3,SUM),VLOOKUP(UNIQUE(X)&E3,HSTACK(X&B2:B5,C2:C5),2,0))

解析:

虽然一对多查找FILTER很容易实现,但是VLOOKUP在多个函数帮助下也不是不能实现。

公式的核心思路是重构数据区域:

首先多个相同的查找对象部门A,由SCAN(0,B2:B5=E3,SUM)生成{1;1;2;3}数组序列,再与A连接生成{"1A";"1A";"2A";"3A"},UNIQUE去重就会得到{"1A";"2A";"3A"}作为查找对象。

然后{"1A";"1A";"2A";"3A"}与C2:C5用HSTACK横向拼接,得到新的数组{"1A","WPS1";"1A","WPS2";"2A","WPS3";"3A","WPS4"}作为查找范围。

这样,查找对象、查找范围都得到了重构,VLOOKUP就可以轻松实现一对多查找了。

七、循环查找

场景:查找D对应的所有下级,即查出D的下级E,再继续查找E的下级F,查到F无下级返回结束。

公式:

=f(D3,A2:B7)

解析:D3为f函数的第一参数,A2:B7为f函数的第二参数,公式中并没有看到VLOOKUP出现。

实际VLOOKUP在f函数中,f函数为一个自定义函数,方法是在“公式”-“名称管理”中定义一个函数f,公式如下:

=LAMBDA(a,b,LET(x,VLOOKUP(a,b,2,0),IF(x="","结束",HSTACK(x,f(x,b)))))

这样,就可以通过f函数实现循环查找。