excel中的个税计算方案Excel应用实例——工薪所得个调税计算解决方案一、个人工薪所得纳税相关背景知识1、个人取得的工资、薪金所得,是指个人因任职或者受雇而取得的工资、薪金、奖金、年终加薪、劳动分红、津贴、补贴以及与任职或受雇有关的其他所得。
个人所得税是对按税法规定具有纳税义务的中国公民和外籍人员的个人收入或所得征收的一种税。
2、工资、薪金所得项目税率表:级数全月应纳税所得额税率(%)速算扣除数(元)1 不超过500元的部分5 0 2 超过500元至2000元的部分10 25 3 超过2000元至5000元的部分15 125 4 超过5000元至20000元的部分20 3755 超过20000元至25 137540000元的部分30 33756 超过40000元至60000元的部分35 63757 超过60000元至80000元的部分8 超过80000元至40 10375100000元的部分45 153759 超过100000元的部分表1 3、工资、薪金所得按以下步骤计算缴纳个人所得税:每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级政府规定标准缴纳的住房公积金,再减去费用扣除额1600元/月(来源于境外的所得以及外籍人员、华侨和香港、澳门、台湾同胞在中国境内的所得每月还可附加减除费用3200元),为应纳税所得额,按5%至45%的九级超额累进税率计算缴纳个人所得税。
计算公式是:应纳个人所得税税额=应纳税所得额×适用税率—速算扣除数例:王某当月取得工资收入9000元,当月个人承担住房公积金、基本养老保险金、医疗保险金、失业保险金共计1000元,费用扣除额为1600元,则王某当月应纳税所得额=9000-1000-1600=6400元。
应纳个人所得税税额=6400×20%-375=905元。
4、个人取得工资、薪金所得应缴纳的个人所得税,统一由支付人负责代扣代缴,支付人是税法规定的扣缴义务人。
5、根据十届全国人大常委会第十八次全体会议《关于修改〈中华人民共和国个人所得税法〉的决定》,自2006年1月1日起,工薪所得个调税起征点执行中国公民1600元、外籍人士4800元的标准,计征方法仍执行原定九级累进方案(如表1所示)。
二、工薪所得个调税的Excel计算解决方案A B C D E F G H I1计税工资应纳税税后工级数累进区间下限税率扣除数额资21001001<50005%310000130586952500-2005001%254100000289857101532000-500020015%125545000-200005002%3756520000-400002000025%13757640000-60000400003%33758760000-800006000035%63759880000-100000800004%103751 09>10000010000045%15375表2C2=IF(A2<>"",A2-B2,"")【方案一】——IF嵌套版:B2=IF(AND(A2>0,A2<=1600),0,IF(AND(A2>16 00,A2<=2100),ROUND((A2-1600)*0.05,2),IF(A ND(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<=21 600),ROUND((A2-1600)*0.2-375,2),IF(AND(A2> 21600,A2<=41600),ROUND((A2-1600)*0.25-13 75,2),IF(AND(A2>41600,A2<=61600),ROUND(( A2-1600)*0.3-3375,2),D2)))))))D2=IF(AND(A2>61600,A2<=81600),ROUND((A 2-1600)*0.35-6375,2),IF(AND(A2>81600,A2<=1 01600),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<=21 00)*ROUND((A2-1600)*0.05,2)+(A2>2100)*(A2 <=3600)*ROUND((A2-1600)*0.1-25,2)+(A2>360 0)*(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((A 2-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()函数原理相当,但没有七层判断的限制,不需要借助辅助单元格。
缺点:公式结构显得较为复杂,维护相关数据时比较繁琐。
【方案三】——辅助数据版:在E、F、G、H、I五列如表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,2)-VLOOKUP(VL OOKUP(IF(A2>1600,A2-1600,0),$G$2:$G$10,1 ),$G$2:$I$10,3),2),"")优点:克服IF()嵌套只能七层的缺陷,涵盖整个累进区间。
累进算法资料独立,便于维护。
公式也比较简洁,可读性强。
缺点:需要借助于辅助列,可移植性不强。
【方案四】——数组公式版:B2:{=IF(A2<>"",ROUND(IF(AND(A2>0,A2<=16 00),0,SUM(IF((A2-1600>={0,500,2000,5000,200 00,40000,60000,80000,100000})+(A2-1600<{50 0,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,33 75,6375,10375,15375},0))),2),"")}优点:同样克服了IF嵌套版不能涵盖全部九级累进区间的缺陷,且公式内数据相对容易维护,整个公式维护起来也比较简单。
缺点:数组公式的操作方法比较独特,每次修改后都要用“Ctrl+Shift+Enter”组合键加以识别,且可扩展性不如在后台运行的VBA代码。
P.S.:“数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。
数组公式括于大括号({ }) 中。
按Ctrl+Shift+Enter 可以输入数组公式。
”【方案五】——VBA代码版:“工具”--》“宏”--》“Visual Basic编辑器”--》“插入”--》“模块”=============复制以下代码至编辑窗口================'计算个人收入调节税(Individual Income Adjustment Tax)Function iiatax(x,y)Dim basicnum As IntegerDim downnum As Variant, upnum As Variant, ratenum As Variant, deductnum As VariantIf y = 0 Thenbasicnum = 1600 '定义中国公民个税起征点ElseIf y = 1 Thenbasicnum = 4800 '定义外籍员工个税起征点Else: basicnum = NullEnd Ifdownnum = 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) '定义累进速算扣除数If IsNumeric(x) = False ThenMsgBox ("请检查计税工资是否为数值!") End IfIf x < 0 ThenMsgBox ("计税工资为负,重新输入!")End IfIf x >= 0 And x < basicnum Theniiatax = 0End IfFor i = 0 To UBound(downnum)If x - basicnum > downnum(i) And x - basicnum <= upnum(i) Theniiatax = Round( ( x - basicnum ) * ratenum(i) - deductnum(i), 2)End IfNext iEnd Function=============复制以上代码至编辑窗口================P.S.:1、iiatax(参数1,参数2),参数1引用计税工资,参数2用“0”表示中国公民的所得税起征点,用“1”表示外籍员工的起征点。