作者:绿色风
分类:
时间:2022-08-17
浏览:93
楼主 天南地北 |
Q:如何合理筹划年终一次性奖和月工资额度使得个税最低?
A:使用如下自定义函数
- Option Explicit
- Public 工资应纳税所得额&, 应纳税所得总额&, 月奖分配&, 年终一次性分配&, 月奖分配min&, 年终一次性分配max&
- Public 月奖分配max&, 年终一次性分配min&, 月工资个税&, 年终一次性奖个税&, 个税1&, 个税2&
- Function TAX(rng1 As Range, rng2 As Range, function_num As Byte)
- Application.Volatile
- 工资应纳税所得额 = rng1 * 100 + 10 ^ -10
- 应纳税所得总额 = rng2 * 100 + 10 ^ -10
- If 工资应纳税所得额 > 应纳税所得总额 Then
- TAX = "数据错误"
- Exit Function
- End If
- Call 计税主程序
- Select Case function_num
- Case 1
- TAX = 年终一次性分配min / 100
- Case 2
- TAX = 月奖分配max / 100
- Case 3
- TAX = 年终一次性分配max / 100
- Case 4
- TAX = 月奖分配min / 100
- Case 5
- TAX = 个税1 / 100
- Case Else
- TAX = "参数错误"
- End Select
- End Function
- Sub 计税主程序()
- Dim i&, j&, arr(1 To 4)
- If 应纳税所得总额 > 350000 Then
- 个税1 = 2 ^ 31 - 1: 个税2 = 个税1 '设定一个大的值参与比较
- arr(2) = 应纳税所得总额 Mod 50000
- arr(3) = 工资应纳税所得额 Mod 50000: arr(4) = arr(3)
- If arr(2) > arr(3) Then arr(3) = arr(2): arr(2) = arr(4)
- For i = (工资应纳税所得额 \ 50000) * 50000 To 应纳税所得总额 Step 50000
- For j = 1 To UBound(arr) - 1
- 月奖分配 = i + arr(j)
- 年终一次性分配 = 应纳税所得总额 - 月奖分配
- If 月奖分配 <= 应纳税所得总额 And 月奖分配 >= 工资应纳税所得额 Then
- Call 工资个税
- Call 年终奖个税
- If 月工资个税 + 年终一次性奖个税 < 个税1 Then
- 月奖分配min = 月奖分配 + 350000
- 年终一次性分配max = 年终一次性分配
- 个税1 = 月工资个税 + 年终一次性奖个税
- End If
- If 月工资个税 + 年终一次性奖个税 <= 个税2 Then
- 月奖分配max = 月奖分配 + 350000
- 年终一次性分配min = 年终一次性分配
- 个税2 = 月工资个税 + 年终一次性奖个税
- End If
- End If
- Next j
- Next i
- Else
- 月奖分配max = 应纳税所得总额
- 年终一次性分配min = 0
- 月奖分配min = 应纳税所得总额
- 年终一次性分配max = 0
- 个税1 = 0
- End If
- End Sub
- Sub 工资个税()
- 月奖分配 = 月奖分配 - 350000
- Select Case 月奖分配
- Case Is <= 0
- 月工资个税 = 0
- Case Is <= 150000
- 月工资个税 = 月奖分配 * 0.03 + 10 ^ -10
- Case Is <= 450000
- 月工资个税 = 月奖分配 * 0.1 - 10500 + 10 ^ -10
- Case Is <= 900000
- 月工资个税 = 月奖分配 * 0.2 - 55500 + 10 ^ -10
- Case Is <= 3500000
- 月工资个税 = 月奖分配 * 0.25 - 100500 + 10 ^ -10
- Case Is <= 5500000
- 月工资个税 = 月奖分配 * 0.3 - 275500 + 10 ^ -10
- Case Is <= 8000000
- 月工资个税 = 月奖分配 * 0.35 - 550500 + 10 ^ -10
- Case Else
- 月工资个税 = 月奖分配 * 0.45 - 1350500 + 10 ^ -10
- End Select
- End Sub
- Sub 年终奖个税()
-
- Select Case 年终一次性分配
- Case Is <= 1800000
- 年终一次性奖个税 = 年终一次性分配 * 0.03 + 10 ^ -10
- Case Is <= 5400000
- 年终一次性奖个税 = 年终一次性分配 * 0.1 - 10500 + 10 ^ -10
- Case Is <= 10800000
- 年终一次性奖个税 = 年终一次性分配 * 0.2 - 55500 + 10 ^ -10
- Case Is <= 42000000
- 年终一次性奖个税 = 年终一次性分配 * 0.25 - 100500 + 10 ^ -10
- Case Is <= 66000000
- 年终一次性奖个税 = 年终一次性分配 * 0.3 - 275500 + 10 ^ -10
- Case Is <= 96000000
- 年终一次性奖个税 = 年终一次性分配 * 0.35 - 550500 + 10 ^ -10
- Case Else
- 年终一次性奖个税 = 年终一次性分配 * 0.45 - 1350500 + 10 ^ -10
- End Select
- End Sub
PS:说明由于数据计算浮点干扰,所以将数据扩大100倍,然后定义为长整型,因为个税计算存在严格的数据范围,定义为单精度可能会因为浮点计算参数错误,附件使用了工作表函数进行验证,此个税筹划不同于全年个税筹划,为月度筹划!
补充内容 (2014-6-12 14:29): 上面说的应纳税所得额含起征点3500元 年终奖筹划自定义函数版_20140330_天南地北.rar |
2楼 老糊涂 |
首先学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一