用VBA计算个人所得税,请大神帮我看看哪儿有问题

shannon 2020-04-02 09:29:50
Sub 循环计算() For i = 2 To 41 If Range("k" & i) <= 5000 Then Range("i" & i) = "0" ElesIF Range("k" & i) >= 5001 And Range("k" & i) <= 8000 Range("i" & i) = ("k" - 5000) * 0.03 ElesIF Range("k" & i) >= 8001 And Range("k" & i) <= 17000 Range("i" & i) = ("k" - 5000) * 0.1 ElesIF Range("k" & i) >= 17001 And Range("k" & i) <= 30000 Range("i" & i) = ("k" - 5000) * 0.2 ElesIF Range("k" & i) >= 30001 And Range("k" & i) <= 40000 Range("i" & i) = ("k" - 5000) * 0.25 ElesIF Range("k" & i) >= 40001 And Range("k" & i) <= 60000 Range("i" & i) = ("k" - 5000) * 0.3 ElesIF Range("k" & i) >= 60001 And Range("k" & i) <= 85000 Range("i" & i) = ("k" - 5000) * 0.35 Eles Range("i" & i) = ("k" - 5000) * 0.45 End If Next i End Sub
...全文
278 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhxq001 2021-07-15
  • 打赏
  • 举报
回复

这个值得借鉴。。。

shannon 2020-04-11
  • 打赏
  • 举报
回复
引用 3 楼 shdzhjx的回复:
我弱弱的问一哈,为什么没有结贴呢?
哈哈哈抱歉,因为我是app上登录的,等我用电脑结贴
脆皮大雪糕 2020-04-09
  • 打赏
  • 举报
回复
怎么只乘以税率没减掉速算数?
舉杯邀明月 2020-04-09
  • 打赏
  • 举报
回复
引用 3 楼 shdzhjx 的回复:
我弱弱的问一哈,为什么没有结贴呢?

说不定楼主还不懂“结贴”是什么呢。
舉杯邀明月 2020-04-09
  • 打赏
  • 举报
回复 1
楼主的个人所得税“算法公式”恐怕不正确吧。


对于类似“个税”这种分段计算的,应“从高向低”取值判断,
 这样可以减少逻辑运算量。
If Range("K" & i).Value > 85000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.45
ElseIf Range("K" & i).Value > 60000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.35
ElseIf Range("K" & i).Value > 40000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.3
ElseIf Range("K" & i).Value > 30000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.25
ElseIf Range("K" & i).Value > 17000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.2
ElseIf Range("K" & i).Value > 8000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.1
ElseIf Range("K" & i).Value > 5000 Then
Range("I" & i).Value = (Range("K" & i).Value - 5000) * 0.03
Else
Range("I" & i).Value = 0
End If
hhxq001 2021-07-15
  • 举报
回复
@舉杯邀明月 值得学习
吉祥编程 2020-04-09
  • 打赏
  • 举报
回复
我弱弱的问一哈,为什么没有结贴呢?
shannon 2020-04-03
  • 打赏
  • 举报
回复
引用 1 楼 shdzhjx的回复:
改成如下样式哈, 可以关注 吉祥编程 公众号 获取更多VBA基础知识和教程

Sub tax_calculate()


For i = 2 To 41
If Range("k" & i).Value <= 5000 Then
Range("i" & i).Value = 0

ElseIf Range("k" & i).Value >= 5001 And Range("k" & i).Value <= 8000 Then

Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.03
ElseIf Range("k" & i).Value >= 8001 And Range("k" & i).Value <= 17000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.1
ElseIf Range("k" & i).Value >= 17001 And Range("k" & i).Value <= 30000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.2
ElseIf Range("k" & i).Value >= 30001 And Range("k" & i).Value <= 40000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.25
ElseIf Range("k" & i).Value >= 40001 And Range("k" & i).Value <= 60000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.3
ElseIf Range("k" & i).Value >= 60001 And Range("k" & i).Value <= 85000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.35
Else
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.45
End If
Next i



End Sub
谢谢谢谢谢谢
吉祥编程 2020-04-03
  • 打赏
  • 举报
回复 1
改成如下样式哈, 可以关注 吉祥编程 公众号 获取更多VBA基础知识和教程

Sub tax_calculate()


For i = 2 To 41
If Range("k" & i).Value <= 5000 Then
Range("i" & i).Value = 0

ElseIf Range("k" & i).Value >= 5001 And Range("k" & i).Value <= 8000 Then

Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.03
ElseIf Range("k" & i).Value >= 8001 And Range("k" & i).Value <= 17000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.1
ElseIf Range("k" & i).Value >= 17001 And Range("k" & i).Value <= 30000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.2
ElseIf Range("k" & i).Value >= 30001 And Range("k" & i).Value <= 40000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.25
ElseIf Range("k" & i).Value >= 40001 And Range("k" & i).Value <= 60000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.3
ElseIf Range("k" & i).Value >= 60001 And Range("k" & i).Value <= 85000 Then
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.35
Else
Range("i" & i).Value = (Range("k" & i).Value - 5000) * 0.45
End If
Next i



End Sub

2,463

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧