怎么用Excel计算快递费的函数公式

怎么用Excel计算快递费的函数公式,第1张

通过VLOOKUP函数由Sheet2价格表得到目的省份对应的首重价、首重量、续重价,并通过IF函数建立首重量与A2条件重量的判断。在C2单元格输入=IF(A2>VLOOKUP(B2,Sheet2!A:D,3,0),VLOOKUP(B2,Sheet2!A:D,2,0)+(A2-VLOOKUP(B2,Sheet2!A:D,3,0))VLOOKUP(B2,Sheet2!A:D,4,0),VLOOKUP(B2,Sheet2!A:D,2,0)) 表示:如果A2大于对应省份的首重量,则在价格表的B列返回B2单元格对应的首重价+(A2单元格-对应B2单元格的首重量)对应B2单元格的续重价;否则返回对应的首重价。 注意:为了方便查找引用数据及进行数据比较,Sheet2的价格表中的数据必须以数值型存在,以文本形式存在会引起计算错误,或增加公式的书写难度。比如说C列的2kg,这种表达,需要在原公式基础上增加一个LEFT函数,变为=IF(A2>LEFT(VLOOKUP(B2,Sheet2!A:D,3,0)),VLOOKUP(B2,Sheet2!A:D,2,0)+(A2-LEFT(VLOOKUP(B2,Sheet2!A:D,3,0)))VLOOKUP(B2,Sheet2!A:D,4,0),VLOOKUP(B2,Sheet2!A:D,2,0)) 首重价与续重价如果加上货币符号,也会增加公式输入的难度,需要截取货币符号右侧的数字。

 

如果假设到达地、重量分别在I、J单元格,运费在K列生成,K列的函数公式

=IF(J:J<=1,INDEX(C:C,MATCH(I:I,B:B,0)),IF(J:J<=9,INDEX(C:C,MATCH(I:I,B:B,0))+INDEX(D:D,MATCH(I:I,B:B,0))IF(J:J-INT(J:J)<=02,INT(J:J)-1,ROUNDUP(J:J,0)-1),INDEX(C:C,MATCH(I:I,B:B,0))+INDEX(E:E,MATCH(I:I,B:B,0))IF(J:J-INT(J:J)<=02,INT(J:J)-1,ROUNDUP(J:J,0)-1)))

 

本公式已验证,楼主依据实际单元格调整公式。

 

望采纳!

你这样的没有完整的行列标注号没有办法设置公式的呀!!!

如上图,可在B4单元格输入公式:

=VLOOKUP(B2,$J:$K,2,0)+MAX(0,ROUNDUP(B3-15,0))INDEX($L:$Q,MATCH(B2,$J:$J,0),MATCH(B3,{-1,30,70,300,500,1000}))

其中,重量15及以下是按K列计费的,超出15以上部分KG数值按L:O列对应的单价数相乘而得的。   公式已经对超出15KG以上部分不足1KG的按1KG进位 *** 作了。

1、在I2单元格输入公式:=VLOOKUP(H2,A:E,IF(I2<=1,2,IF(I2<=2,3,IF(I2<=3,4,5))),FALSE)+IF(IF(I2<=1,2,IF(I2<=2,3,IF(I2<=3,4,5)))=5,D2+(I2-3)E2,0)

2、往下填充即可。需要注意的是A列和H列的名称须一致。

如图:

通过VLOOKUP函数由Sheet2价格表得到目的省份对应的首重价、首重量、续重价,并通过IF函数建立首重量与A2条件重量的判断。

在C2单元格输入=IF(A2>VLOOKUP(B2,Sheet2!A:D,3,0),VLOOKUP(B2,Sheet2!A:D,2,0)+(A2-VLOOKUP(B2,Sheet2!A:D,3,0))VLOOKUP(B2,Sheet2!A:D,4,0),VLOOKUP(B2,Sheet2!A:D,2,0))

表示:如果A2大于对应省份的首重量,则在价格表的B列返回B2单元格对应的首重价+(A2单元格-对应B2单元格的首重量)对应B2单元格的续重价;否则返回对应的首重价。

注意:为了方便查找引用数据及进行数据比较,Sheet2的价格表中的数据必须以数值型存在,以文本形式存在会引起计算错误,或增加公式的书写难度。

比如说C列的2kg,这种表达,需要在原公式基础上增加一个LEFT函数,变为=IF(A2>LEFT(VLOOKUP(B2,Sheet2!A:D,3,0)),VLOOKUP(B2,Sheet2!A:D,2,0)+(A2-LEFT(VLOOKUP(B2,Sheet2!A:D,3,0)))VLOOKUP(B2,Sheet2!A:D,4,0),VLOOKUP(B2,Sheet2!A:D,2,0))

首重价与续重价如果加上货币符号,也会增加公式输入的难度,需要截取货币符号右侧的数字。

这个是表间引用的概念,我接触较多,多说几句。

你那个需求,用excel实现不难,先弄2个表:一个运费单价表,一个快递单表。前者记录运费单价,即每个地区每公斤的运费;后者记录每笔快递单,包括地区、重量、收件人等。再依据快递单中的地区,用vlookup函数从单价表找出运费单价,引用到快递单,再用重量单价,即可得到运费。

但这里面有一个问题,不知你想到没有。如果以后运费单价调整了,快递单中的单价都会跟着调整,会把新值引用过来,这是不对的。因为以前快递单早已完结,当时的单价就是当时的单价,现在跟着修改,实际就是篡改历史。数据被篡改了,就不真实了。

因此,对于表间引用,除了始终引用外,应该加一个方式:断开式引用。即:对于快递单来说,每录入一笔新单子,会把单价引用过来,但此后就与单价表断开,单价表以后修改,不应把新值引用过来,而是保留旧值。这个断开式引用的概念,是华创网表引入的新概念,与常规excel不同点在于,它还允许多用户同时登录使用。

结论:如果你的需求仅仅是算运费,过往数据是否正确无所谓,就用excel的vlookup实现。如果你还想把过往数据管好,以后还要用于查询、统计分析等,就用华创网表。

*** 作上不难,只是你的数据结构格式不规范,导致公式难度加大了很多很多!

特别是图2的数据结构,居然没有行列标号的!也没有工作表名称!不知道这个数据是不是在一个文件中的!

下面就按你的数据结构举例说明:

数据结构真的 很重要!!!

   在上面的数据结构表格中,只要在H3单元格输入公式:

=IF(E3=0,"",MAX(INDEX($Q:$Q,LOOKUP(1,0/FIND(D3,$K:$K),ROW($K:$K)-2)),G3+SUMPRODUCT(TEXT(E3-{0,100,300,500,800},"0;!0")OFFSET($L:$P,9+LOOKUP(1,0/FIND(D3,$K:$K),ROW($K:$K)-2),0))))

就可以得到你想要的核算结果了!

    若是你现有的结构表格,给你的公式都会复杂很多,而且真没有办法直接使用的!!!

这个问题的核心在于如何根据目的地和重量提取出对应的价格,可以使用Excel中的Macth和Index函数嵌套来解决,下面用“目的地:浙江,货重:238kg”的订单来说明。

第一步:先将你的价格图转化成标准的Excel表,重量区间部分取起始重量,目的地列中的合并类需要拆分开。比如浙江/江苏/上海需要拆分成3行。做好像这样(图中价格仅作为举例)

转化好的价格图

第二步:使用Match函数算出“测试订单”中浙江在目的地列所在的位置

目的地位置

        函数=MATCH(A14,$A$3:$A$10,0)

        其中$A$3:$A$10目的地区域,需要绝对引用,0代表精确查找,结果会返回3

第三步:使用Match函数算出“测试订单”中货重238kg在价格区间区域所在的位置

货重位置

        函数=MATCH(B14,$C$2:$J$2,1)

        其中$C$2:$J$2为价格区间区域需要绝对引用,1代表小于。结果会返回4

第四步:使用Index函数提取对应的价格

        函数=INDEX($C$3:$J$10,C14,D14)

        其中$C$3:$J$10为价格区域需要绝对引用,C14,D14分别代表算上面两个步骤算出的价格区域中的行和列,结果返回38

        可以将第二步和第三步融合到一起

        函数=INDEX($C$3:$J$10,MATCH(A14,$A$3:$A$10,0),MATCH(B14,$C$2:$J$2,1))

第五步:用价格计算公式算出价格

        函数=E14INDEX($C$3:$J$10,MATCH(A14,$A$3:$A$10,0),MATCH(B14,$C$2:$J$2,1))+10

结果返回9144

结尾:这个我已经尽量很详细的描述了,本着“授人以鱼不如授人以渔”的原则还希望你能好好学习一下里面的函数用法。然后还可以使用Vlookup+Match来提取价格,原理基本相似。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12177784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存