拿到快递运价表,别再傻傻地手动计算啦!
点击上方
蓝色
文字 关注我们吧!
送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
前两天有一个群友问我,如何能自动计算快递的运价。原来,她有一份某快递的运价表,有不同的始发地和目的地,每次计算运价时,她都要手动来计算,费时费力,还容易出错。她希望能够一键计算运价。可以做到吗?
计算规则是:
如果重量小于30KG,则直接从表中查询基础运价
如果重量大于30KG,对于始发地在上海的快递,则直接用对应的超重后的单价乘以重量,得到基础运价
如果重量大于30KG,对于始发地在北京的快递,则首先查询30公斤的基础运价,再加上对应的超重后的价格乘以超重重量,得到总的基础运价
始发地是上海的基础信息如下图。
始发地是北京的基础信息如下图。
最终的计算界面是下面这个样子的:
两份地区的基础价格表结构上略有不同。首先我们将它们的文件结构调整一致。基础价格信息都是在单元格区域A1:J61,国家和地区信息都从地68行开始。
在单元格E2中输入“=ROUND(IF(AND(A2="北京",C2>30),VLOOKUP(C2,INDIRECT(A2&"!$A$2:$J$61"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE)+(C2-30)*VLOOKUP(C2,INDIRECT(A2&"!$A$63:$J$65"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE),IF(C2>30,VLOOKUP(C2,INDIRECT(A2&"!$A$63:$J$65"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE)*C2,INDEX(INDIRECT(A2&"!$B$2:$J$61"),MATCH(C2,INDIRECT(A2&"!$A$2:$A$61"),1),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),))))*D2,2)”并向下拖曳即可。
看到这个大家一定要头晕了,失去信心了。不过没关系,这个公式不求理解,只要会按照实际情况套用即可。
下面简单分析一下思路。
当重量小于30KG时,无论是北京还是上海,都可以直接从基础运价表中查得基础运费
当重量大于30KG时,无论是北京还是上海,直接用重量乘以单价即可。这时可以利用IF函数对上述两个条件进行判断
当重量大于30KG时,从北京发出的货物,需要首先查的30KG的基础运价,再计算超重部分的基础运价,两者和才是总的基础运价。这时可以再利用IF函数对上述三个条件进行判断,同时屏蔽了上面第二个条件中“从北京出发大于30KG的货物直接用重量乘以单价”这样错误的计算
利用INDIRECT函数来选择不同的发货地区
第一个条件的公式是:
INDEX(INDIRECT(A2&"!$B$2:$J$61"),MATCH(C2,INDIRECT(A2&"!$A$2:$A$61"),1),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),))))*D2
第二个条件的公式是:
IF(C2>30,VLOOKUP(C2,INDIRECT(A2&"!$A$63:$J$65"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE)*C2,INDEX(INDIRECT(A2&"!$B$2:$J$61"),MATCH(C2,INDIRECT(A2&"!$A$2:$A$61"),1),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),))))*D2
第三个条件的公式是:
IF(AND(A2="北京",C2>30),VLOOKUP(C2,INDIRECT(A2&"!$A$2:$J$61"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE)+(C2-30)*VLOOKUP(C2,INDIRECT(A2&"!$A$63:$J$65"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE),IF(C2>30,VLOOKUP(C2,INDIRECT(A2&"!$A$63:$J$65"),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),)+1,TRUE)*C2,INDEX(INDIRECT(A2&"!$B$2:$J$61"),MATCH(C2,INDIRECT(A2&"!$A$2:$A$61"),1),MATCH(INDEX(INDIRECT(A2&"!$A$69:$A$81"),MATCH(B2,INDIRECT(A2&"!$B$69:$B$81"),0)),INDIRECT(A2&"!$B$1:$J$1"),))))*D2
下面我们就一起来看看完成后效果吧!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
戳原文,更有料!免费模板文档!