个人所得税筹划vab代码
表中,
1.月工资错误,应该取最小税合计时的月工资数据,
2.当不同年薪行数比较多的时候,计算量大,速度慢,一两小时出不来数据
请帮忙改一下代码,谢谢!
Option Explicit
Public Sub 最小税合计()
Dim 年薪(), 月工资#, 税合计#, arr(), 最小税合计#, k#, 奖金#, 税合计1#, 税合计2#, 最小工资#, arr1(), i#, j#
年薪() = Range("a2:a" & Cells(Rows.Count, 1).End(3).Row)
For j = 1 To UBound(年薪())
For 月工资 = 3501 To 年薪(j, 1) * 10000 / 12 - 1
奖金 = 年薪(j, 1) * 10000 - 月工资 * 12
税合计1 = Evaluate("(VLOOKUP(" & 奖金 & "/12,{0,0.03,0;1500,0.1,105;4500,0.2,555;9000,0.25,1005;35000,0.3,2755;55000,0.35,5505;80000,0.45,13505},2,1)*" & 奖金 & "-VLOOKUP(" & 奖金 & "/12,{0,0.03,0;1500,0.1,105;4500,0.2,555;9000,0.25,1005;35000,0.3,2755;55000,0.35,5505;80000,0.45,13505},3,1))")
税合计2 = Evaluate("(ROUND(MAX((" & 月工资 & "-3500)*0.05*{0.6;2;4;5;6;7;9}-5*{0;21;111;201;551;1101;2701},0),2))*12")
税合计 = 税合计1 + 税合计2
k = k + 1
ReDim Preserve arr(1 To 1, 1 To k)
arr(1, k) = 月工资
ReDim Preserve arr1(1 To 1, 1 To k)
arr1(1, k) = 税合计
Next 月工资
最小税合计 = WorksheetFunction.Min(arr1())
i = 1
Do While arr1(1, i) = 最小税合计
i = i + 1
Loop
最小工资 = arr(1, i)
Cells(j + 1, 7) = 最小税合计
Cells(j + 1, 2) = 月工资
Erase arr1
Erase arr
k = 0
Next j
MsgBox "已完成"
End Sub
[ 本帖最后由 yaoxuhuijsz 于 2011-7-3 09:16 编辑 ] |