VLOOKUP查询多个数据时返回列号太大了如何处理?

古哥计划   2023-02-23 02:41:04

某计划问题:有一个数据中心库,里面有不同任务的不同测试结果,有上百列,后续可能还会增加,但是在查询的时候,需要查询某列的测试结果,他会VLOOKUP函数,可是查询起来特别麻烦了,因为表1的测试数据不一定连续,表2需要指定的测试数据,需要一个一个VLOOKUP函数返回,问有无更好解决方案。


(资料图)

对于上面的问题,我们看一下他的解决方案,如表2中的54号测试数据,需要去表1中人工判断找到在第几列,然后通过VLOOKUP函数来查询工单号来串联,录入函数:

=VLOOKUP(A2,"1.数据中心"!A:X,24,0),返回结果400,然后针对后面的68号数据再次人工判断。如果列数据少一点,还是不太麻烦的了,如果多了的话,这样判断就非常低效了;

针对这样的情况,是很多新学会VLOOKUP函数的生产计划,只能一个人一个人工判断,录入多个VLOOKUP函数解决,其实只需要掌握一个简单的函数MATCH就可以用一个公式快速来解决这类问题了。

MATCH这个函数非常好用,也非常好理解,用通俗的白话就是,查找某个条件在指定区域的相对位置,以数字返回,如1、2、3等;参数也只有3个,第一个参数是具体的查询条件,第二参数是具体查询范围,第三个参数是精确匹配还是模糊匹配,一般情况就是录入0,代表精确匹配;

学习了MATCH这个函数,就可以把这个函数的返回结果当成VLOOKUP第三个参数,实现动态判断。我们先录入函数:

=MATCH(B1,"1.数据中心"!1:1,0),结果返回的24,理解为,64号测试数据在数据中上第一行的标题列的位置是在第24列。

此时,把我们把引用方式锁定一下,公式更改为:

=MATCH(B$1,"1.数据中心"!$1:$1,0)

向右填充,就得到每一个标题对应的位置,嵌套到VLOOKUP的第三个参数就可以实现一个公式填充完,并得到想要的结果:

B2=VLOOKUP($A2,"1.数据中心"!$A:$CW,MATCH(B$1,"1.数据中心"!$1:$1,0),0),这样查询这张表,无论是几号测试数据都没有问题,不用去判断具体是哪一列了;

总结:一般查询函数如INDEX、OFFSET、VLOOKUP这类有返回行号和列号的参数的函数,而行号或者列号又是用具体的数字代表,用MATCH来替代就解决很多查询难点了。如经典的组合:

INDEX+MATCH;

OFFSET+MATCH;

VLOOKUP+MATCH;

都是用得这个原理,而XLOOKUP,没有返回列这个概念,所以就无法使用XLOOKUP+MATCH这样的组合,上面的问题用XLOOKUP不是最佳的解决方案,因为XLOOKUP返回的区域还是需要手动选择;

想了解更多精彩内容,快来关注古哥计划