大家都知道VLOOKUP可以按给定的内容去匹配到我们所需的数据,正因为如此,它在函数界有了很大的名气。但是今天要分享的这三个示例,如果使用VLOOKUP去匹配数据的话,就有些麻烦了。就在VLOOKUP头疼不已的时候,MAX函数二话不说,只用了一个套路就把三个问题都给解决了。
可能有些小伙伴会好奇,MAX不是求最大值的函数么,它怎么能够解决VLOOKUP都搞不定的问题呢?还有这个套路又是什么呢?一起往下看看就明白了……
示例1:在业务明细表中找出每个经销商最近一次的业务日期
为了便于理解问题,数据源只保留了经销商和业务日期两列数据,现在需要得到每个经销商最近一次发生业务的日期。(提示:数据源中的业务日期是升序排列的。)
不知道使用VLOOKUP该怎么解决问题呢?MAX使出的套路是这样的:
=MAX(($A$2:$A$18=D2)*$B$2:$B$18)
录入方法请看动画演示:
注意这个公式在输入后要同时按住Ctrl和Shift键再回车,公式会自动出现大括号。
如何理解这个公式是大家最关心的问题,其实原理很简单,首先做一个比较,看看A列有哪些数据和我们需要判断的供货商一致,也就是$A$2:$A$18=$D2这部分的作用。在编辑栏选中这部分公式,按下F9键就能看到公式的计算结果。
可以看到公式的结果是一组逻辑值,当A列的内容与所要匹配的经销商一致时得到TRUE,不一致则为FALSE。
接下来就是用这一组逻辑值与B列的业务日期做乘法(Excel中的日期的本质上是数字哦),TRUE在进行运算时与数字1相同,FALSE在进行运算时与数字0相同,因此计算结果是这样的。
在得到的这组数字中,0表示没有匹配到对应的经销商时返回的值,而不为0的这些数字表示匹配到对应的经销商后返回的业务日期。其中最大的那个值就是最近的一次日期,因此MAX就能轻而易举的得到最终结果。
如果你做出来的结果不是日期而是数字的话,把单元格格式改成日期格式就没问题了。
示例2:按照工号或姓名得到对应的奖金
通常在进行数据匹配时,是用一个固定的条件进行查找。而在这个例子中,我们的条件是二者之一。
不管是工号还是姓名,都可以得到对应的奖金。
不知道VLOOKUP该如何解决这个问题呢?反正MAX还是一样的套路:
=MAX(($A$2:$B$13=E2)*$C$2:$C$13)
公式的录入方法和原理不再赘述,与示例1完全一样,再来看看示例3。
示例3:按照姓名找到对应的分组代码
每一组有四名组员,按照组员姓名找到所属分组的代码。
如果说前两个例子VLOOKUP还想挣扎着折腾一下的话,这个例子直接就能让VLOOKUP找不到北了。MAX还是沿用了老套路:
=MAX(($B$2:$E$4=A7)*$A$2:$A$4)
怎么样,MAX函数的这个套路是不是很强!
要使用这个套路需要注意以下两点:
1. 查找结果为数字;
2. 注意判断条件的区域与结果所在区域的选取一定要准确,并且要进行锁定。