ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2019函数公式学习大典 不用妈妈陪默写神器 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2016实战技巧学习锦囊 WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 156|回复: 7

[求助] 求助下大佬,不同公司不同品类不同期间不同比率计算返利,有没有更精简的写法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-12-8 20:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xinlan55 于 2023-12-10 08:47 编辑



这个是我自己弄的,公司、品类多了后反应很慢,麻烦大佬给看看
公司和品类、时间段各不同,附件只留了两个公司两个品类

  1. Function TAX(Cebate As String, Category As String, DateRange As String, salary) 'Cebate=公司名称,Category=品类,DateRange=期间,salary=金额。
  2.     Select Case Cebate
  3.         
  4.         '--------------------------公司1-------------------------------
  5.         
  6.     Case Is = "公司1"
  7.         Select Case Category
  8.         Case Is = "品类1"
  9.             If DateRange = "2021-12-06至2022-12-05" Then '22021-12-06至2022-12-05
  10.                 Select Case salary
  11.                 Case Is >= 10000000
  12.                     TAX = "4.0%"
  13.                 Case Is >= 5000000
  14.                     TAX = "3.0%"
  15.                 Case Is >= 1000000
  16.                     TAX = "2.5%"
  17.                 Case Is >= 500000
  18.                     TAX = "1.0%"
  19.                 Case Is < 500000
  20.                     TAX = "0%"
  21.                 End Select
  22.             ElseIf DateRange = "2022-12-05至2023-12-04" Then '2022-12-05至2023-12-04
  23.                 Select Case salary
  24.                 Case Is >= 12000000
  25.                     TAX = "4.5%"
  26.                 Case Is >= 5000000
  27.                     TAX = "3.0%"
  28.                 Case Is >= 1000000
  29.                     TAX = "2.%"
  30.                 Case Is >= 500000
  31.                     TAX = "1.5%"
  32.                 Case Is < 500000
  33.                     TAX = "0%"
  34.                 End Select
  35.             Else
  36.                 TAX = ""
  37.             End If
  38.         Case Is = "品类2"
  39.             If DateRange = "2021-12-06至2022-12-05" Then '2021-12-06至2022-12-05
  40.                 Select Case salary
  41.                 Case Is >= 100000000
  42.                     TAX = "4.0%"
  43.                 Case Is >= 25000000
  44.                     TAX = "3.0%"
  45.                 Case Is >= 20000000
  46.                     TAX = "2.0%"
  47.                 Case Is >= 15000000
  48.                     TAX = "1.0%"
  49.                 Case Is >= 15000000
  50.                     TAX = "0%"
  51.                 End Select
  52.             ElseIf DateRange = "2022-12-05至2023-12-04" Then '2022-12-05至2023-12-04
  53.                 Select Case salary
  54.                 Case Is >= 90000000
  55.                     TAX = "3.5%"
  56.                 Case Is >= 25000000
  57.                     TAX = "2.5%"
  58.                 Case Is >= 20000000
  59.                     TAX = "1.7%"
  60.                 Case Is >= 15000000
  61.                     TAX = "0.8%"
  62.                 Case Is >= 15000000
  63.                     TAX = "0%"
  64.                 End Select
  65.             Else
  66.                 TAX = ""
  67.             End If
  68.         End Select
  69.         
  70.         '--------------------------公司2-------------------------------
  71.         
  72.     Case Is = "公司2"
  73.         Select Case Category
  74.         Case Is = "品类3"
  75.             If DateRange = "2022-05-10至2023-05-09" Then '2022-05-10至2023-05-09
  76.                 Select Case salary
  77.                 Case Is >= 10000000
  78.                     TAX = "4.0%"
  79.                 Case Is >= 3000000
  80.                     TAX = "2.0%"
  81.                 Case Is >= 500000
  82.                     TAX = "1.5%"
  83.                 Case Is < 500000
  84.                     TAX = "0%"
  85.                 End Select
  86.             ElseIf DateRange = "2023-05-09至2024-05-08" Then '2023-05-09至2024-05-08
  87.                 Select Case salary
  88.                 Case Is >= 9000000
  89.                     TAX = "3.8%"
  90.                 Case Is >= 3000000
  91.                     TAX = "2.1%"
  92.                 Case Is >= 500000
  93.                     TAX = "1.3%"
  94.                 Case Is < 500000
  95.                     TAX = "0%"
  96.                 End Select
  97.             Else
  98.                 TAX = ""
  99.             End If
  100.         Case Is = "品类4"
  101.             If DateRange = "2022-05-10至2023-05-09" Then '2022-05-10至2023-05-09
  102.                 Select Case salary
  103.                 Case Is >= 100000000
  104.                     TAX = "4.0%"
  105.                 Case Is >= 25000000
  106.                     TAX = "3.5%"
  107.                 Case Is >= 20000000
  108.                     TAX = "2.0%"
  109.                 Case Is >= 15000000
  110.                     TAX = "1.5%"
  111.                 Case Is >= 15000000
  112.                     TAX = "0%"
  113.                 End Select
  114.             ElseIf DateRange = "2023-05-09至2024-05-08" Then '023-05-09至2024-05-08
  115.                 Select Case salary
  116.                 Case Is >= 80000000
  117.                     TAX = "3.7%"
  118.                 Case Is >= 25000000
  119.                     TAX = "3.1%"
  120.                 Case Is >= 20000000
  121.                     TAX = "2.2%"
  122.                 Case Is >= 15000000
  123.                     TAX = "1.3%"
  124.                 Case Is >= 15000000
  125.                     TAX = "0%"
  126.                 End Select
  127.             Else
  128.                 TAX = ""
  129.             End If
  130.         End Select
  131.     End Select
  132. End Function
复制代码


返利计算1.rar

164.99 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-12-8 21:28 | 显示全部楼层
能算出来就行了  速度无所谓的 总不至于一天还算不出吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-12-8 21:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dambcer 发表于 2023-12-8 21:28
能算出来就行了  速度无所谓的 总不至于一天还算不出吧

说的好有道理我竟无言以对

TA的精华主题

TA的得分主题

发表于 2023-12-9 09:08 | 显示全部楼层
应该有优化的,你把附件发来让老师们给你重写一个看看,

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-12-9 10:36 | 显示全部楼层
沈默00 发表于 2023-12-9 09:08
应该有优化的,你把附件发来让老师们给你重写一个看看,

已上传附件,麻烦老师看看,谢谢

TA的精华主题

TA的得分主题

发表于 2023-12-9 17:29 | 显示全部楼层
本帖最后由 leeson7502 于 2023-12-9 18:34 编辑

你这个思路有点奇特。要是我来做的话,应该做一个反利分级比例对照表,然后你用公式也好,VBA也可以,应该是很简单的事。
我看到你代码中的比例,是不是有很多是相同的,这些应该可以合并。
这么多条记录,用函数肯定会慢,造成慢的原因可能不是你的函数问题。
建议试试用一个sub,对每条记录计算比例,直接写结果,看这样速度会不会有改善。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-12-10 08:49 | 显示全部楼层
leeson7502 发表于 2023-12-9 17:29
你这个思路有点奇特。要是我来做的话,应该做一个反利分级比例对照表,然后你用公式也好,VBA也可以,应该 ...

感谢您的建议,比例根据合同是有可能不一样的

TA的精华主题

TA的得分主题

发表于 2023-12-12 18:11 | 显示全部楼层
  1. Select Case Company  
  2. Case Is = "公司1"  
  3.     Select Case Category  
  4.     Case Is = "品类1"  
  5.         If DateRange = "2022-05-10至2023-05-09" Then  
  6.             Select Case salary  
  7.             Case Is >= 50000000  
  8.                 TAX = "5.0%"  
  9.             Case Is >= 30000000  
  10.                 TAX = "4.0%"  
  11.             Case Is >= 20000000  
  12.                 TAX = "3.5%"  
  13.             Case Is >= 15000000  
  14.                 TAX = "3.0%"  
  15.             Case Else  
  16.                 TAX = "0%"  
  17.             End Select  
  18.         ElseIf DateRange = "2023-05-10至2024-05-09" Then  
  19.             ' Add corresponding tax rates for this date range  
  20.         Else  
  21.             TAX = ""  
  22.         End If  
  23.     Case Is = "品类2"  
  24.         ' Add tax rate logic for Category 2 of Company 1  
  25.     End Select  
  26. Case Is = "公司2"  
  27.     Select Case Category  
  28.     Case Is = "品类3"  
  29.         If DateRange = "2022-05-10至2023-05-09" Then  
  30.             Select Case salary  
  31.             Case Is >= 10000000  
  32.                 TAX = "4.0%"  
  33.             Case Is >= 3000000  
  34.                 TAX = "2.0%"  
  35.             Case Is >= 500000  
  36.                 TAX = "1.5%"  
  37.             Case Is < 500000  
  38.                 TAX = "0%"  
  39.             End Select  
  40.         ElseIf DateRange = "2023-05-10至2024-05-09" Then  
  41.             ' Add corresponding tax rates for this date range  
  42.         Else  
  43.             TAX = ""  
  44.         End If  
  45.     Case Is = "品类4"  
  46.         If DateRange = "2022-05-10至2023-05-09" Then  
  47.             Select Case salary  
  48.             Case Is >= 100000000  
  49.                 TAX = "4.5%"  
  50.             Case Is >= 75000000  
  51.                 TAX = "4.0%"  
  52.             Case Is >= 50000000  
  53.                 TAX = "3.5%"  
  54.             Case Is >= 25000000  
  55.                 TAX = "3.0%"  
  56.             Case Else  
  57.                 TAX = "2.5%"  
  58.             End Select  
  59.         ElseIf DateRange = "2023-05-10至2024-05-09" Then  
  60.             ' Add corresponding tax rates for this date range  
  61.         Else  
  62.             TAX = ""  
  63.         End If  
  64.     End Select  
  65. End Select  
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-2-27 18:46 , Processed in 0.053184 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

   

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

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

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