前言:Vlookup函数公式也许你见过很多,但本文涉及的用法汪站长是第一次见,耐心看完,你肯定会有收获的。
昨天汪站长打开一位网友的Excel表格,顿时被他写的Vlookup长公式惊呆了:
=IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,2,0),VLOOKUP(A2,数据!$A$2:$O$4,3,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,4,0),VLOOKUP(A2,数据!$A$2:$O$4,5,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,6,0),VLOOKUP(A2,数据!$A$2:$O$4,7,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,8,0),VLOOKUP(A2,数据!$A$2:$O$4,9,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,10,0),VLOOKUP(A2,数据!$A$2:$O$4,11,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,12,0),VLOOKUP(A2,数据!$A$2:$O$4,13,0),IF(E2>=VLOOKUP(A2,数据!$A$2:$O$4,14,0),VLOOKUP(A2,数据!$A$2:$O$4,15,0),1%)))))))
上面公式的作用,是根据上图中E列的单价从另一个表中查找对应的个人提成比例。查找要分两步:
看上去好象没什么好办法,7种价格和对应提成,需要分别用Vlookup查找并逐一对比,然后找到最接近的价格并获取提成比率。于是就有了开头那位同学的长长的Vlookup函数公式。
有没有什么简单公式?有:
=LOOKUP(E2,VLOOKUP(A2,数据!A:O,(8-ROW($1:$7))*2+{0,1},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,1},0)
注:{0,1} 中的0是指提取价格时列数+0,1是提取提成率时列数+1 ,而最终要得到两列的一组数,所以这里用了数组形式。上面公式最结结果如下图B7:C13区域所示。
用Vlookup函数把价格、提成率组成成了按升序排列的两列数组,余下的就是lookup的基本用法了:从后向前查找比单价小且最接近的值。即本文开头公式:
=LOOKUP(E2,VLOOKUP(A2,数据!A:O,(8-ROW($1:$7))*2+{0,1},0))
Ps:今天发现的这个用法,刷新了汪站长对Vlookup的认知,也是它最牛用法之一。
|
|
打开微信扫一扫,Office自学网
专注分享软件安装和视频教程,让你一号在手,办公无忧!