实战 | Excel学的好,工具人当到老!算个账……
今天也是一个实战问题,关于卖水果的美女的,让帮忙统计一下一共赚了多少钱?
老工具人上线……
需求说明:最近水果店搞活动,一次性购买相同水果,不同重量下单价不同,比如购买芒果,5斤(包括)以下 6元/每斤,5到10斤,单价是5.6,购买越多,单价越低!
现在需要根据客户购买的重量来获取对应的价格,计算一下金额!
这个需求的难点,在于既需要水果名称查找,还需要根据区间匹配!很多同学,知道精确匹配,直接VLOOKUP+MATCH即可,但是这个是区间就不知道怎么处理了!
重点就是如何找到对应水果、对应重量下的单价,其实比较简单!我们先写根据原来的设定写一下公式,再来解读和优化!
▼ 请读懂我,我只是一条卑微的公式……
=VLOOKUP(B2,$F$2:$K$7,IFERROR(MATCH(C2,$G$1:$K$1)+2,2),0)
这里的核心主要还是在MATCH函数,MATCH函数根据第三参数的不同有三种匹配模式,使用最多的就是精确匹配,就是完全匹配,一般第三参数使用0或者只写一个逗号
虽然和本次公式关系不大,但是使用频率比较高,我们就顺带讲一下!
MATCH 精确匹配 - 第三参数0或者简写(只写逗号)
返回查找值,在查找区域中首次出现的位置!如果找出不到就会报错
这是最常见的用法! 本次的需求显然用不上这种精确匹配!
MATCH升序查找模式
这里我们看一下官方对于第三参数的说明:
本次我们案例中使用的就是1或者省略!我们解读一下其中
两大要点:
对于第二点,我们补充一下,比如我们查找为10,在{1,3,5,10,20} 区间中
先找到比小于等于10的 有{1,3,5,10} ,其中最大值也就是10,所以返回10对应的位置。
方便解读,我们把公式图片再贴一次:
为什么要+2,MATCH匹配是从G列开始的,也就是如果能匹配到最小是1
而我们VLOOKUP是从F列名称开始的,第一个5价格对应的就是2,那么我们应该加上1吗?
其实不对,这里还有一个坑,就是5元以下的问题,在表里没有体现,也就是没有列出来,列出来第一个应该是0,IFERROR的出现,也就是为了处理这个问题!正确的区间设置应该是!本身100斤以上不考虑!超过100斤就会有问题!
如果考虑容错,我们应该把上线100斤以上也考虑一下,比如100斤以上统一1元/斤
▼ 请读懂我,我只是一条卑微的公式……
=VLOOKUP(B2,$F$2:$K$7,MATCH(C2,$G$1:$L$1)+1,0)
这样我们就不用考虑容错了!
如果你稍微机灵一点,掌握了MATCH+1中的+1也可以不需要!
▼ 请读懂我,我只是一条卑微的公式……
=VLOOKUP(B2,$F$2:$K$7,MATCH(C2,$F$1:$L$1),0)
MATCH返回第二参数中首次满足条件的位置,我们只需要往前偏移一个,这样第一个满足条件的就是2,VLOOKUP查找本身是第1列,所以需要的单价是从第2列开始,完美契合!
至于MATCH的第三次-1,看说明应该就明白了!如果是乱序你知道怎么玩吗?
单价和数量都有,至于最后赚了多少钱,小姐姐说这个自己会……工具人下线……!
支持
点个“在看”表示朕
已阅