ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1846|回复: 13

[求助] 求各位大神,给个计算方式,根据不同地区,不同运费和斤数来结算快递费用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-11 15:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
利用客户运单给出数据,能总金额那一列能直接显示出快递费用。

QQ截图20190711153425.png
QQ截图20190711153451.png

客户运费计算.zip

18.24 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2019-7-12 12:43 | 显示全部楼层
看了一下,按照现在这样有点难度,如做一下改进就好办一些。
1、建议客户编一个代码每一个客户是唯一的
2、增加一栏计费省份,与客户单价表中的计费省份一致
3、你给出的正确金额是如何算出来的,比如:
806696063818608527        广东省梅州市大埔县百侯镇肖凯        广东省惠州市惠阳区陈江        5.39                2.4
是否  5.39*0.8=4.31 ,还是……

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-15 08:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liangmutou01 发表于 2019-7-12 12:43
看了一下,按照现在这样有点难度,如做一下改进就好办一些。
1、建议客户编一个代码每一个客户是唯一的
2 ...

1,2,有函数可以提取客户,省份前两个字做为客户,计费省份,去匹配运费表。
3,你给出的正确金额是如何算出来的,比如:
806696063818608527        广东省梅州市大埔县百侯镇肖凯        广东省惠州市惠阳区陈江        5.39                2.4
是否  5.39*0.8=4.31 ,  计算公式:5.39-3=2.39KG    2.39KG算3KG   按价格表,3KG首重不收费  其它2.39KG收费    3X0.8=2.4元   正确金额为2.4元

4,以下公式可参考:H2内公式如下:

=SUMPRODUCT(INDEX($B$2:$C$8,MATCH('*'&LEFT(F2,2)&'*',$A$2:$A$8,),)*IF({1,0},1,INT(G2-0.01)))

向下填充,即得所有费用。

公式解释
LEFT(F2,2)

取F2左边两个字符,返回值“北京”;

MATCH('*'&LEFT(F2,2)&'*',$A$2:$A$8,)

在A2:A8单元格区域,匹配“*北京*”所在行,返回值为3;

INDEX($B$2:$C$8,MATCH('*'&LEFT(F2,2)&'*',$A$2:$A$8,),)

在B2:C8区域,查找第3行的数据,返回值是数组{7,4};

INT(G2-0.01)

对G2单元格的重量-0.01后向下取整,返回值是2;

-0.01的原因是避免正数,如果重量是2,则对2-0.01,即1.99取整,返回1,这样就去除了首重1;

如果重量保留两位小数,可以减掉更小的0.001再取整。

IF({1,0},1,INT(G2-0.01)))

构造一个数组{1,2},1即是首重,2即是超重部分;

SUMPRODUCT(INDEX($B$2:$C$8,MATCH('*'&LEFT(F2,2)&'*',$A$2:$A$8,),)*IF({1,0},1,INT(G2-0.01)))

将两个数组{7,4}、{1,2}对应位置数值相乘再相加,即7*1+4*2,得费用为15元。

TA的精华主题

TA的得分主题

发表于 2019-7-15 10:27 | 显示全部楼层
省份取前两字也不妥啊,比如:黑龙江、内蒙古
"黄志达,"
        广东        0~3         4.50         3~9999         1.00                
        浙江,江苏,上海,安徽,湖南,湖北,广西,江西,福建,北京,天津,重庆,海南,四川,山东,云南,河南,河北,贵州,山西,陕西,辽宁,吉林,甘肃,
        0~1         3.80                                
        1~1.5         7.00                                
        1.5~2.5         9.00                                
        0~1         7.00         1~9999         4.00                
红色两个标准是怎么的?                        

TA的精华主题

TA的得分主题

发表于 2019-7-15 20:33 | 显示全部楼层
现写了一个程序,现有数据均对,超重无验证数据,不知对否?客户单价表的客户列有变动。
Sub yunfei()
  Dim ar, zl As Double, sz As Double, xz As Double
  ar = Sheet2.Range("a3:h" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row).Value
  zh = Cells(Rows.Count, 1).End(xlUp).Row
  For h = 2 To zh
    s = Left(Cells(h, 3).Value, 2)
    s = IIf(s = "黑龙" Or s = "内蒙", IIf(s = "黑龙", "黑龙江", "内蒙古"), s)
    For hh = 1 To UBound(ar)
      If InStr(ar(hh, 1), Cells(h, 2).Value) > 0 And InStr(ar(hh, 2), s) > 0 Then
        zl = Cells(h, 4).Value
        zl = Application.WorksheetFunction.RoundUp(zl, 0)
        sz = Split(ar(hh, 3), "~")(1)
        xz = Split(ar(hh, 5), "~")(1)
        If zl <= sz Then
          Cells(h, 5) = ar(hh, 4)
          Exit For
        Else
          If zl > sz And zl <= 25 Then
            Cells(h, 5) = ar(hh, 4) + (zl - sz) * ar(hh, 6)
            Exit For
          Else
            Cells(h, 5) = ar(hh, 4) + (zl - sz) * ar(hh, 8)
            Exit For
          End If
        End If
      End If
    Next hh
  Next h
End Sub

TA的精华主题

TA的得分主题

发表于 2019-7-15 20:37 | 显示全部楼层
把原程序文件发给你。 客户运费计算.zip (30.38 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 08:19 | 显示全部楼层
liangmutou01 发表于 2019-7-15 20:37
把原程序文件发给你。

谢谢!我试试!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 08:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liangmutou01 发表于 2019-7-15 20:37
把原程序文件发给你。

liangmutou01,你好!程序不能运行!宏损坏了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 09:00 | 显示全部楼层
liangmutou01 发表于 2019-7-15 10:27
省份取前两字也不妥啊,比如:黑龙江、内蒙古
"黄志达,"
        广东        0~3         4.50         3~9999         1.00                

黄志达客户                 首重                              续重
省份
广东                  0~3公斤     4.5元       3~999公斤      1元(0~3公斤内4.5元,超出3公斤部分每公斤1元)
浙江 江苏           0~1公斤     3.8元                                 (当货物0~1公斤时运费3.8元)
                        1~1.5公斤     7元                                  (当货物大于1小于1.5公斤时运费7元)
                        1.5~2.5公斤  9元                                   (当货物大于1.5小于2.5公斤运费时9元)
                        0~1公斤       7元       1~9999公斤      4元(当货物大于2.5公斤时,首重1公斤7元超出部分1公斤4元)

TA的精华主题

TA的得分主题

发表于 2019-7-20 09:15 | 显示全部楼层
在我机子上运行正常,win10+office2016
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-6 07:20 , Processed in 0.038281 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表