我们知道,最新的个人所得税起征点是 3500元,税率从3%到45%,分有7个等级,为提高计算速度,与不同税率相对应有7个速算扣除数,如下表所示:
级数 含税级距 不含税级距 税率 速算
(%) 扣除数
1 不超过1500元的 不超过1455元的 3 0
2 超过1500元至4500元的部分 超过1455元至4155元的部分 10 105
3 超过4500元至9000元的部分 超过4155元至7755元的部分 20 555
4 超过9000元至35000元的部分 超过7755元至27255元的部分 25 1005
5 超过35000元至55000元的部分 超过27255元至41255元的部分 30 2755
6 超过55000元至80000元的部分 超过41255元至57505元的部分 35 5505
7 超过80000元的部分 超过57505元的部分 45 13505
计算方法:个人所得税 = 扣除起征点的纳税金额 * 对应区间税率 - 速算扣除数
1、为了计算个人所得税,首先想到的就是用IF公式,分7个区间进行判断计算,公式老长了,如下所示:
=IF(J50<=0, 0, IF(J50<=1500, J50*3%, IF(J50<=4500, J50*10%-105, IF(J50<=9000, J50*20%-555, IF(J50<=35000,J50*25%-1005, IF(J50<=55000,J50*30%-2755, IF(J50<=80000, J50*35%-5505, J50*45%-13505)))))))
其中J50存放的是纳税金额,即扣除起征点3500后剩下的金额。
2、有人巧用MAX函数,发明了里一个简洁公式,公式如下:
=MAX(J50*{3,10,202,25,30,35,45}% - {0,105,555 ,1005,2755,5505,13505}, 0)
{0.03,0.1,0.2,0.25,0.3,0.35,0.45}% 是个税7个区间的税率,是一个数组;
{0,105,555 ,1005,2755,5505,13505}是7个区间的速算扣除数,也是一个数组;
数组计算后得到7个数,因为存在了纳税额<0的情况,即工资不满3500的,就在MAX函数中添了一个“0”的值,保证计算税额的公式中J50为负数时,用MAX求最大不会出现负数。
J50*{3,10,202,25,30,35,45}% - {0,105,555 ,1005,2755,5505,13505}是纳税额*各级个税税率 - 应扣额后的数字。
如果税率对应的级别<=纳税额时,税率越大税额越大,符合所缴税款和所得相匹配的原理。
如果税率对应的级别>纳税额时,税率越大税额越小,因为扣减了超额的扣除数。
这样保证了,缴税数组里最大的那个一定是最符合相应税率的。
将公式中的公因子5提出来,可以简化一下公式(其实就是将数组中的数变小一点):
=5*MAX(J50*{0.6,2,4,5,6,7,9}% - {0,21,111,201,551,1101,2701}, 0)
3、上面的J50是扣除3500之后的纳税金额,如果加上这3500,计算公式是什么样呢?
假定J50=K50-3500,则K50是含起征点的纳税金额,即应发工资扣除三险一金(养老保险、医疗保险、失业保险、住房公积金)之后的余额,公式做如下变换:
=5*MAX(J50*{0.6,2,4,5,6,7,9}% - {0,21,111,201,551,1101,2701}, 0)
=5*MAX((K50-3500)*{0.6,2,4,5,6,7,9}% - {0,21,111,201,551,1101,2701}, 0)
=5*MAX(K50*{0.6,2,4,5,6,7,9}% - 3500*{0.6,2,4,5,6,7,9}% - {0,21,111,201,551,1101,2701}, 0)
=5*MAX(K50*{0.6,2,4,5,6,7,9}% - {21,70,140,175,210,245,315} - {0,21,111,201,551,1101,2701}, 0)
=5*MAX(K50*{0.6,2,4,5,6,7,9}% - {21,91,251,376,761,1346,3016} , 0)
4、可以在外面套一个ROUND函数,四舍五入到2位小数,即:
=ROUND(5*MAX(J50*{0.6,2,4,5,6,7,9}% - {0,21,111,201,551,1101,2701}, 0), 2)
或
=ROUND(5*MAX(K50*{0.6,2,4,5,6,7,9}% - {21,91,251,376,761,1346,3016} , 0), 2)
其中J50和K50的关系为J50=K50-3500