某计划问题:有一个数据中心库,里面有不同任务的不同测试结果,有上百列,后续可能还会增加,但是在查询的时候,需要查询某列的测试结果,他会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返回的区域还是需要手动选择;
我是古哥:
从事制造行业18年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!
领取专属 10元无门槛券
私享最新 技术干货