Excel-个人所得税计算与原理推导
题目:
个人所得税的计算应为(工资-3500)*对应级别的税率-速扣数。
工资少于3500不扣税。
速扣数的意义是工资减去3500后直接乘以对应级别的税率所多扣除的税费。
画图来说明一下。
加入工资x=10000,那么x-3500=6500,属于第三档,20%税率。用税率乘以6500就是方块的体积。而实际应该缴纳的税款为3条水平bar的面积的和,即3%*1500+10%*3000+20%*(x-3500-4500)。那么速扣数就如图所示,等于:
长方形体积20%*(x-3500)减去应纳税额3%*1500+10%*3000+20%*(x-3500-4500)。
算法1:
使用vlookup函数。
fx=IF(F7<=3500,0,VLOOKUP(F7-3500,$A$6:$D$12,3,1)*(F7-3500)-VLOOKUP(F7-3500,$A$6:$D$12,4,1))
算法2:
使用max函数。
fx=MAX((F7-3500)*{0.03;0.1;0.2;0.25;0.3;0.35;0.45}-{0;105;555;1005;2755;5505;13505},0)
vlookup函数方法具有自解释性,也很好理解其运算逻辑。主要说一说max函数方法的原理。网上有很多max函数的解法,但大多都没有提供其数学原理的论证,这里我用图画来做简单的阐述。
这里我们先不管起征3500,收入设为x。max函数的解法是遍历x和各级税率的乘积减去对应速扣数,得到一个数组,再找出数组中的最大值。那么为什么数组中的最大值就是对应的正确的纳税额呢?
这里分两种情况讨论,一是税率等级小于正确等级的情况,一是大于的情况。
假设x=6000,此时正确的税率等级为20%。
当遍历的税率等级小于正确等级,比入10%,计算taxes_lower = x*10% - 速扣数,如图中黄色部分。
而真实值应该为taxes_real = x*20%-速扣数,如图中黄色部分加上红色部分。
那么此时得到的纳税额就损失了红色这部分,也就是变小了。
当遍历的税率等级大于正确等级,比如25%时。
设正确税率等级的速扣数为a(绿色),taxes_real = x*20%-a。
而25%的税率等级下,纳税额为taxes_higher = x*25%-a-b-c,
而b=(25%-20%)*x,代入可得taxes_higher = x*20%-a-c=taxes_real-c,taxes_higher<taxes_real。
如图所示,红色部分c就是较高等级税率下丢失的税费。
希望本文对你有所帮助。