首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哪位高人发现Vlookup函数这个用法,太变态了……

前言: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))

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OtwlFF0YwlIZNbi6s0QSUi9w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券