VLOOKUP逆向查找
原创作者 | 李锐
微信公众号 | Excel函数与公式(ID:ExcelLiRui)
个人微信号 | (ID:ExcelLiRui520)
VLOOKUP逆向查找
今天的文章再帮同学们解决一个难题,很多初学VLOOKUP函数的同学都知道这个函数的查找方向是从左向右,即查找条件在返回数据的左侧,才能正常运行。
可是在实际工作中,有的原始数据中的排列顺序并不全都按照你想的那样,经常会遇到查找条件有的在返回数据的左侧,有的在右侧,这时怎么办呢?
今天要讲的就是VLOOKUP逆向查找的技术,看完觉得好的,记得去底部点个好看再分享给朋友,我会根据大家的反馈调整发文内容及写法。
问题描述
下图左侧是原始数据,里面包含订单编号以及若干信息,要求按照订单编号查询对应的其他字段信息。
观察数据源结构你会发现,只有订单金额在订单编号右侧,也就是说使用VLOOKUP基础用法只能根据订单编号返回对应的订单金额,对于其他3个字段无从查询。
那么如果让你在H2:K2黄色区域输入一个统一的公式,实现全部字段的信息调取,应该怎么做呢?
为了让大家清晰案例效果,可以先看下面的效果演示,自己思考一下。
效果演示
下图是我做好公式以后的效果演示,便于你理解案例要求和捋顺思路。
右侧根据订单编号的条件切换,自动调取对应的4个字段信息。
右侧的黄色单元格是VLOOKUP公式所在位置,根据条件切换自动更新计算结果。
(下图为gif动图演示)
从上面的动图演示可见,无论在原始数据中要返回的数据位于订单编号列左侧还是右侧,公式都可以很智能的把你想要的匹配结果查找出来。
在看下面的解决方案之前,请你先独立思考,带着思路和问题继续向下看。
解决方案
思路提示:关键在于VLOOKUP的查询区域的构建,即VLOOKUP函数的第二参数。根据公式所在位置要查找的结果构建对应的内存数组,使查询条件位于返回数据的左侧。
这里我们使用多个函数组合来进行技术实现。
H2公式如下,将其向右填充:
=VLOOKUP($G2,IF({1,0},$D:$D,INDIRECT("c"&MATCH(H1,$A$1:$E$1,),)),2,)
如下图所示。
(下图为公式示意图)
一句话解析:
先用MATCH函数根据公式所在位置的字段确定要查询的数据在数据源中的位置,然后配合INDIRECT函数的R1C1样式实现区域引用,再借助IF函数构建内存数组辅助VLOOKUP查询。
Excel多函数组合运用的技术是迈向函数中级水平的重要标志之一,这比掌握单个函数用法更需长期的积累和领悟。