You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Excel公式计算个人应缴个税(无需VBA,替代循环)

解决Excel个税计算的公式方案(无需VBA)

错误公式的问题所在

你之前用的=SUMPRODUCT((Q4:Q13<=D10) * (D10-Q4:Q13) * (Sheet1!R4:R13)/100)逻辑有误——它会把所有低于薪资的区间都用「总薪资-区间下限」计算税额,相当于重复累加了前面区间的金额。比如薪资10万时,会错误计算成(10万-0)*3% + (10万-3.6万)*10% + ...,但正确的超额累进规则是:3.6万内按3%计税,3.6万到10万的部分按10%计税,以此类推。

无需循环的正确公式(三种可选)

假设Sheet1中:

  • Q列是个税阶梯的区间上限(例:Q4=0, Q5=36000, Q6=144000...Q13=960000)
  • R列是对应税率(例:R4=3, R5=10...,单位为%)
  • S列是对应速算扣除数(例:S4=0, S5=2520...)
  • D10为税前薪资,需先减去个税起征点(默认5000)得到应纳税所得额

方案1:MAX+速算扣除数(最简单)

利用速算扣除数的特性,计算所有阶梯的税额后取最大值(只有对应区间的计算结果正确,其余会偏小):

=MAX((D10-5000)*Sheet1!R4:R13/100 - Sheet1!S4:S13, 0)

注:若应纳税所得额为负(薪资低于起征点),MAX会返回0,避免出现负数税额

方案2:SUMPRODUCT计算区间差额(无需速算扣除数)

先在Sheet1的Q14单元格输入一个极大值(比如10^10)代表最高区间上限,再用以下公式:

=SUMPRODUCT(TEXT((D10-5000)-Sheet1!Q4:Q13,"0;\0") - TEXT((D10-5000)-Sheet1!Q5:Q14,"0;\0"), Sheet1!R4:R13/100)

TEXT函数的作用是把负数转为0,确保每个区间只计算「薪资超出区间下限但不超过区间上限」的部分

方案3:数组公式(兼容旧版Excel)

如果是旧版Excel(无动态数组支持),输入公式后按Ctrl+Shift+Enter确认:

=SUM(IF((D10-5000)>Sheet1!Q4:Q13, MIN((D10-5000)-Sheet1!Q4:Q13, Sheet1!Q5:Q14-Sheet1!Q4:Q13)*Sheet1!R4:R13/100, 0))

逻辑:判断应纳税所得额是否超过区间下限,若是则取「薪资减下限」和「区间差额」的较小值,乘以对应税率,最后累加所有区间的税额

内容的提问来源于stack exchange,提问作者Asifa.K

火山引擎 最新活动