前言:Vlookup函数公式也许你见过很多,但本文涉及的用法兰色是第一次见,耐心看完,你肯定会有收获的。
昨天兰色打开一位网友的Excel表格,顿时被他写的Vlookup长公式惊呆了:
上面公式的作用,是根据上图中E列的单价从另一个表中查找对应的个人提成比例。查找要分两步:
1、根据A列的产品产代码从【数据】表找到对应行数,如下图所示第4行。
2、然后根据单价查找所在的区间(如下图所示H4单元格209比216小而且最接近),然后再找到对应的提成比例2.50%。
看上去好象没什么好办法,7种价格和对应提成,需要分别用Vlookup查找并逐一对比,然后找到最接近的价格并获取提成比率。于是就有了开头那位同学的长长的Vlookup函数公式。
有没有什么简单公式?有:
=LOOKUP(E2,VLOOKUP(A2,数据!A:O,(8-ROW($1:$7))*2+,0))
公式很短,但估计很多人看到这个公式很懵,因为这里要用到Vlookup函数鲜为人知的重组数据技巧。下面兰色就拆分开,一步步分析这个公式的原理:
兰色以前介绍过利用VLOOKUP函数隔列求和的技巧,本例就可以用这个思路把所有7个价格全提取出来。
=VLOOKUP(A7,A:O,ROW(1:7)*2,0)
注:ROW(1:7)*2结果是一组数字,所以它作为Vlookup函数第3个参数后,结果也会返回同样数量的值,即所有的价格。如下图B7单元格公式结果所示
本例中需要区间查找对应的最接近价格,所以要用到lookup函数,只是lookup的第二个参数需要按升序列,而上面图中结果是降序,所以Vlookup公式还需要改一下。
=VLOOKUP(A7,A:O,(8-ROW(1:7))*2,0)
注:原来是1234567,用8减后就变成了7654321了。隔取数后也升序排列了。
因为本例最终要返回单价对应的提成比例,所以还需要把提成比例也提取出来。
=VLOOKUP(A7,A:O,(8-ROW(1:7))*2+,0)
注: 中的0是指提取价格时列数+0,1是提取提成率时列数+1 ,而最终要得到两列的一组数,所以这里用了数组形式。上面公式最结结果如下图B7:C13区域所示。
用Vlookup函数把价格、提成率组成成了按升序排列的两列数组,余下的就是lookup的基本用法了:从后向前查找比单价小且最接近的值。即本文开头公式:
=LOOKUP(E2,VLOOKUP(A2,数据!A:O,(8-ROW($1:$7))*2+,0))
领取专属 10元无门槛券
私享最新 技术干货