ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何避免年终奖个税盲区,使个税缴纳的最少?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-18 09:40 | 显示全部楼层 |阅读模式
由于新个税方案下年终奖准则个税盲区,即多一块钱可能多交1000多的个税。所以现将年终奖分两次发放,一笔按年终奖扣税形式,一笔按普通个税,如何让合计缴纳的个税最小。
谢谢各位高人出招了。


测算如何将年终奖分批发放.rar

7.45 KB, 下载次数: 622

TA的精华主题

TA的得分主题

发表于 2012-3-19 16:28 | 显示全部楼层
试试我写的自定义函数吧[C2公式“=bestab(B2,A2,1,1)”]:
  1. Option Explicit

  2. Function iiatax(x As Double, y As Integer, Optional z As Double) '独立所得税计算函数
  3. 'y=1 计算中国公民工薪所得税
  4. 'y=2 计算外国公民工薪所得税
  5. 'y=3 计算劳务所得税
  6. 'z 可选,年终一次性奖金发放当月的计税工资

  7. 'Application.Volatile False
  8. If IsNumeric(x) = False Then
  9.   iiatax = "#NUM" '计税工资非数值
  10.   Exit Function
  11. End If

  12. If x < 0 Then
  13.   iiatax = "-#VAL" '计税工资为负
  14.   Exit Function
  15. End If

  16. Dim basicnum As Integer, i As Integer
  17. Dim downnum As Variant, upnum As Variant, ratenum As Variant, deductnum As Variant, laowudeduct As Variant
  18. Dim gongxin As Double, laowu As Double, nianjiang As Double
  19. downnum = Array(0, 1500, 4500, 9000, 35000, 55000, 80000) '定义累进区间下限
  20. upnum = Array(1500, 4500, 9000, 35000, 55000, 80000, 100000000) '定义累进区间上限
  21. ratenum = Array(0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45) '定义累进税率
  22. deductnum = Array(0, 105, 555, 1005, 2755, 5505, 13505) '定义累进速算扣除数

  23. Select Case y
  24.   Case 1
  25.     basicnum = 3500 '中国公民个税起征点,2011年9月1日起执行
  26.   Case 2
  27.     basicnum = 4800 '外籍公民个税起征点
  28.   Case 3 '劳务所得税
  29.     downnum = Array(0, 4000, 20000, 50000)
  30.     upnum = Array(4000, 20000, 50000, 100000000)
  31.     ratenum = Array(0.2, 0.2, 0.3, 0.4)
  32.     deductnum = Array(0, 0, 2000, 7000)
  33.     laowudeduct = Array(800, x * 0.2, x * 0.2, x * 0.2)
  34.     For i = 0 To UBound(downnum)
  35.       If x > downnum(i) And x <= upnum(i) Then
  36.         laowu = (x - laowudeduct(i)) * ratenum(i) - deductnum(i)
  37.         Exit For
  38.       End If
  39.     Next i
  40.   Case Else
  41.     iiatax = "#N/A" '参数不能识别
  42.     Exit Function
  43. End Select

  44. If z > 0 Then '数月奖金计税
  45.   For i = 0 To UBound(downnum)
  46.     If x / 12 > downnum(i) And x / 12 <= upnum(i) Then
  47.       nianjiang = Application.Max((x - Application.Max(basicnum - z, 0)) * ratenum(i) - deductnum(i), 0)
  48.       Exit For
  49.     End If
  50.   Next i
  51. Else '计算工薪所得税
  52.   For i = 0 To UBound(downnum)
  53.     If x - basicnum > downnum(i) And x - basicnum <= upnum(i) Then
  54.       gongxin = (x - basicnum) * ratenum(i) - deductnum(i)
  55.       Exit For
  56.     End If
  57.   Next i
  58. End If

  59. If y = 3 Then gongxin = 0
  60. iiatax = Application.Round(gongxin + laowu + nianjiang, 2)
  61. End Function

  62. Function BestAB(dbl1 As Double, dbl2 As Double, isCN As Boolean, isTrap As Boolean)
  63. 'dbl1,数月奖金发放当月计税工资
  64. 'dbl2,数月奖金金额
  65. 'isCN,“0”为外籍员工,“1”为中籍员工
  66. 'isTrap,“0”为疯狂模式,“1”为陷阱模式

  67. Dim r1 As Double, r2 As Double, s As Double, i As Double, arr(9999, 4), j%
  68. '求优化前的应纳税额
  69. r2 = iiatax(dbl1, IIf(isCN, 1, 2)) + iiatax(dbl2, IIf(isCN, 1, 2), dbl1)
  70. For i = 0 To dbl1 + dbl2 Step 500
  71.   '奖金调节为i时,求纳税额
  72.   arr(j, 0) = iiatax(dbl1 + dbl2 - i, IIf(isCN, 1, 2)) + iiatax(i, IIf(isCN, 1, 2), dbl1 + dbl2 - i)
  73.   '工资调节为i时,求纳税额
  74.   arr(j, 1) = iiatax(i, IIf(isCN, 1, 2)) + iiatax(dbl1 + dbl2 - i, IIf(isCN, 1, 2), i)
  75.   arr(j, 2) = i '奖金额
  76.   arr(j, 3) = dbl1 + dbl2 - i '工资额
  77.   r1 = arr(j, 0)
  78.   If isTrap Then '如果是陷阱模式的话,只向下调节奖金
  79.     If r1 <= r2 And i < dbl2 Then
  80.       r2 = r1
  81.       s = i
  82.     End If
  83.   Else '如果是疯狂模式的话,工资奖金双向调节,直至最优
  84.     If r1 <= r2 Then
  85.       r2 = r1
  86.       s = i
  87.     End If
  88.   End If
  89.   j = j + 1
  90. Next
  91. If s = 0 Or Round(iiatax(dbl1 + dbl2 - s, IIf(isCN, 1, 2)) + iiatax(s, IIf(isCN, 1, 2), dbl1 + dbl2 - s), 2) = Round(iiatax(dbl1, IIf(isCN, 1, 2)) + iiatax(dbl2, IIf(isCN, 1, 2), dbl1), 2) Then
  92.   BestAB = dbl2
  93. Else
  94.   BestAB = s
  95. End If
  96. End Function
复制代码

测算如何将年终奖分批发放.rar

17.16 KB, 下载次数: 226

TA的精华主题

TA的得分主题

发表于 2012-3-20 08:54 | 显示全部楼层
sunya_0529 发表于 2012-3-19 16:28
试试我写的自定义函数吧[C2公式“=bestab(B2,A2,1,1)”]:

没看明白!

测算如何将年终奖分批发放.rar

34.58 KB, 下载次数: 70

TA的精华主题

TA的得分主题

发表于 2012-3-20 16:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 sunya_0529 于 2012-3-20 16:58 编辑
wangtx218 发表于 2012-3-20 08:54
没看明白!

因为楼主提供的个税计算公式不对,看附件——

测算如何将年终奖分批发放.rar

11.22 KB, 下载次数: 226

TA的精华主题

TA的得分主题

发表于 2012-3-20 18:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wangtx218 于 2012-3-20 18:02 编辑
sunya_0529 发表于 2012-3-20 16:58
因为楼主提供的个税计算公式不对,看附件——


如平时在写工资方案时,将岗位工资控制在扣四金后5000以下,可算得最少税!

测算如何将年终奖分批发放.rar

17.09 KB, 下载次数: 290

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-24 09:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-10-27 17:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-10-27 17:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 01:50 , Processed in 0.053767 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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