发新话题
打印

Excel中有多少方法计算个人所得税?

本主题由 littlefu 于 2008-1-25 11:59 移动

Excel中有多少方法计算个人所得税?

相信有很多HR同行还需要用Excel计算个人所得税,以下是本人结合实际操作经验,总结出来的解决方案大全,其中部分内容参考了他人的思路,谢谢他们的分享。

[ 本帖最后由 èdìshényǎ 于 2007-12-1 19:55 编辑 ]
附件: 您所在的用户组无法下载或查看附件
滴自己的汗,吃自己的饭,自己的事情自己干;
靠天靠地靠父母,不算是好汉!
看看啊
谢谢分享
....................

回复 1# 的帖子

学习一下,非常感谢楼主提供好的思路。

《Excel中的个税计算方案》系列之一

总是有人没耐性看附件,我索性贴上来吧,希望大家学习愉快~~



Excel应用实例


——工薪所得个调税计算解决方案



一、个人工薪所得纳税相关背景知识

1、个人取得的工资、薪金所得,是指个人因任职或者受雇而取得的工资、薪金、奖金、年终加薪、劳动分红、津贴、补贴以及与任职或受雇有关的其他所得。
个人所得税是对按税法规定具有纳税义务的中国公民和外籍人员的个人收入或所得征收的一种税。

2、工资、薪金所得项目税率表:

级数


全月应纳税所得额


税率(%)


速算扣除数()


1


不超过500元的部分

5


0


2


超过500元至2000元的部分

10


25


3


超过2000元至5000元的部分

15


125


4


超过5000元至20000元的部分

20


375


5


超过20000元至40000元的部分

25


1375


6


超过40000元至60000元的部分

30


3375


7


超过60000元至80000元的部分

35


6375


8


超过80000元至100000元的部分

40


10375


9


超过100000元的部分

45


15375


1



3、工资、薪金所得按以下步骤计算缴纳个人所得税:
  每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级政府规定标准缴纳的住房公积金,再减去费用扣除额1600/月(来源于境外的所得以及外籍人员、华侨和香港、澳门、台湾同胞在中国境内的所得每月还可附加减除费用3200元),为应纳税所得额,按5%45%的九级超额累进税率计算缴纳个人所得税。
  计算公式是:应纳个人所得税税额=应纳税所得额×适用税率—速算扣除数
  例:王某当月取得工资收入9000元,当月个人承担住房公积金、基本养老保险金、医疗保险金、失业保险金共计1000元,费用扣除额为1600元,则王某当月应纳税所得额=9000-1000-1600=6400元。应纳个人所得税税额=6400×20%-375=905元。

  4、个人取得工资、薪金所得应缴纳的个人所得税,统一由支付人负责代扣代缴,支付人是税法规定的扣缴义务人。

  5、根据十届全国人大常委会第十八次全体会议《关于修改〈中华人民共和国个人所得税法〉的决定》,自200611日起,工薪所得个调税起征点执行中国公民1600元、外籍人士4800元的标准,计征方法仍执行原定九级累进方案(如表1所示)。
滴自己的汗,吃自己的饭,自己的事情自己干;
靠天靠地靠父母,不算是好汉!

二、工薪所得个调税的Excel计算解决方案


A


B


C


D


E


F


G


H


I


J


1


计税


工资


应纳


税额


税后


工资



级数


累进区间


下限


上限


税率


扣除数


2


1000


0


1000



1


<500

0


500


5%


0


3


10000


1305


8695



2


500-2000

500


2000


10%


25


4


100000


28985


71015



3


2000-5000

2000


5000


15%


125


5






4


5000-20000

5000


20000


20%


375


6






5


20000-40000

20000


40000


25%


1375


7






6


40000-60000

40000


60000


30%


3375


8






7


60000-80000

60000


80000


35%


6375


9






8


80000-100000

80000


100000


40%


10375


10






9


>100000

100000


=10^100


45%


15375


2


滴自己的汗,吃自己的饭,自己的事情自己干;
靠天靠地靠父母,不算是好汉!
【方案一】——IF嵌套版:

B2=IF(AND(A2>0,A2<=1600),0,IF(AND(A2>1600,A2<=2100),ROUND((A2-1600)*0.05,2),IF(AND(A2>2100,A2<=3600),ROUND((A2-1600)*0.1-25,2),IF(AND(A2>3600,A2<=6600),ROUND((A2-1600)*0.15-125,2),IF(AND(A2>6600,A2<=21600),ROUND((A2-1600)*0.2-375,2),IF(AND(A2>21600,A2<=41600),ROUND((A2-1600)*0.25-1375,2),IF(AND(A2>41600,A2<=61600),ROUND((A2-1600)*0.3-3375,2),D2)))))))
D2=IF(AND(A2>61600,A2<=81600),ROUND((A2-1600)*0.35-6375,2),IF(AND(A2>81600,A2<=101600),ROUND((A2-1600)*0.4-10375,2),IF(A2>101600,ROUND((A2-1600)*0.45-15375,2),"")))

优点:简单明了,上手容易
缺点:由于if()函数嵌套在一个公式内最多只能七层,而个调税计征采用的是九级累进,要完成个调税的计算,共需要10层判断,所以需要借助D2这个辅助单元格来完成剩下的三层判断。


【方案二】——逻辑表达版:

B2=(A2>0)*(A2<=1600)*0+(A2>1600)*(A2<=2100)*ROUND((A2-1600)*0.05,2)+(A2>2100)*(A2<=3600)*ROUND((A2-1600)*0.1-25,2)+(A2>3600)*(A2<=6600)*ROUND((A2-1600)*0.15-125,2)+(A2>6600)*(A2<=21600)*ROUND((A2-1600)*0.2-375,2)+(A2>21600)*(A2<=41600)*ROUND((A2-1600)*0.25-1375,2)+(A2>41600)*(A2<=61600)*ROUND((A2-1600)*0.3-3375,2)+(A2>61600)*(A2<=81600)*ROUND((A2-1600)*0.35-6375,2)+(A2>81600)*(A2<=101600)*ROUND((A2-1600)*0.4-10375,2)+(A2>101600)*ROUND((A2-1600)*0.45-15375,2)

优点:if()函数原理相当,但没有七层判断的限制,不需要借助辅助单元格。
缺点:公式结构显得较为复杂,维护相关数据时比较繁琐。


【方案三】——辅助数据版:

EFGHI五列如表2所示插入辅助列。

B2=IF(A2<>"",ROUND(IF(A2>1600,A2-1600,0)*VLOOKUP(VLOOKUP(IF(A2>1600,A2-1600,0),$G$2:$G$10,1),$G$2:$I$10,3)-VLOOKUP(VLOOKUP(IF(A2>1600,A2-1600,0),$G$2:$G$10,1),$G$2:$J$10,4),2),"")
或者
B2=IF(A2<>"",SUMPRODUCT((A2-1600>=$G$2:$G$10)*(A2-1600<$H$2:$H$10)*((A2-1600)*$I$2:$I$10-$J$2:$J$10)),"")

优点:克服IF()嵌套只能七层的缺陷,涵盖整个累进区间。累进算法资料独立,便于维护。公式也比较简洁,可读性强。
缺点:需要借助于辅助列,可移植性不强。


【方案四】——数组公式版:

B2:{=IF(A2<>"",ROUND(IF(AND(A2>0,A2<=1600),0,SUM(IF((A2-1600>={0,500,2000,5000,20000,40000,60000,80000,100000})+(A2-1600<{500,2000,5000,20000,40000,60000,80000,100000,100000000000})=2,(A2-1600)*{0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45}-{0,25,125,375,1375,3375,6375,10375,15375},0))),2),"")}
或者
B2:=MAX((A1-1600)*5%*{1,2,3,4,5,6,7,8,9}-25*{0,1,5,15,55,135,255,415,615},0)

优点:同样克服了IF嵌套版不能涵盖全部九级累进区间的缺陷,且公式内数据相对容易维护,整个公式维护起来也比较简单。
缺点:可扩展性不如在后台运行的VBA代码。

P.S.
“数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。数组公式括于大括号 ({ }) 中。按 Ctrl+Shift+Enter 可以输入数组公式。”


【方案五】——VBA代码版:

“工具”--》“宏”--》“Visual Basic编辑器”--》“插入”--》“模块”



=============复制以下代码至编辑窗口================
'计算个人收入调节税(Individual Income Adjustment Tax)
Function iiatax(x, y, Optional z = 0)
'y=1 计算中国公民工薪所得税
'y=2 计算外国公民工薪所得税
'y=3 计算劳务所得税
'z   可选,年终奖,用以计算年终奖所得税

If IsNumeric(x) = False Then
MsgBox ("
请检查计税工资是否为数值!")
iiatax = 0
Exit Function
End If

If x < 0 Then
MsgBox ("
计税工资为负,重新输入!")
iiatax = 0
Exit Function
End If


Dim basicnum As Integer, annualbonus As Single
Dim downnum As Variant, upnum As Variant, ratenum As Variant, deductnum As Variant, laowudeduct As Variant
downnum = Array(0, 500, 2000, 5000, 20000, 40000, 60000, 80000, 100000)
'定义累进区间下限
upnum = Array(500, 2000, 5000, 20000, 40000, 60000, 80000, 100000, 100000000) '定义累进区间上限
ratenum = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45)
'定义累进税率
deductnum = Array(0, 25, 125, 375, 1375, 3375, 6375, 10375, 15375)
'定义累进速算扣除数
Select Case y
Case 1
  basicnum = 1600
Case 2
  basicnum = 4800
Case 3
  downnum = Array(0, 4000, 20000, 50000)
  upnum = Array(4000, 20000, 50000, 100000000)
  ratenum = Array(0.2, 0.2, 0.3, 0.4)
  deductnum = Array(0, 0, 2000, 7000)
  laowudeduct = Array(800, x * 0.2, x * 0.2, x * 0.2)
  For i = 0 To UBound(downnum)
  If x > downnum(i) And x <= upnum(i) Then
   iiatax = Round((x - laowudeduct(i)) * ratenum(i) - deductnum(i), 2)
  End If
  Next i
  Exit Function
Case Else
  MsgBox ("
请输入合法参数!")
  Exit Function
End Select

If z <> 0 Then
If x < basicnum Then
  annualbonus = z - basicnum + x
Else
  annualbonus = z
End If
For i = 0 To UBound(downnum)
  If annualbonus / 12 > downnum(i) And annualbonus / 12 <= upnum(i) Then
   iiatax = Round(annualbonus * ratenum(i) - deductnum(i), 2)
  End If
Next i
Exit Function
End If

If x >= 0 And x < basicnum Then
iiatax = 0
End If
For i = 0 To UBound(downnum)
If x - basicnum > downnum(i) And x - basicnum <= upnum(i) Then
  iiatax = Round((x - basicnum) * ratenum(i) - deductnum(i), 2)
End If
Next i
End Function

=============复制以上代码至编辑窗口================
滴自己的汗,吃自己的饭,自己的事情自己干;
靠天靠地靠父母,不算是好汉!
谢谢分享.......................................
发新话题
严格遵守中华人民共和国版权法,任何转载或转贴都应注明真实作者和真实出处。
本网站对于用户发布的内容所引发的版权、署名权的异议、纠纷不承担任何责任。
传统媒体转载须事先与原作者和本网站联系。提交者发言纯属个人行为,与本网站立场无关。