设为首页 登录 注册
首页 中人社区 中人博客
中人网 > 中人社区 > medeng的空间 > 博客
两种简洁高效的Excel个税计算方法介绍
2012-06-11 15:35:18 | 简洁 , 高效 , Excel , 个税 , 计算

两种简洁高效的Excel个税计算方法介绍

(作者:胡俊生)

        2011630,全国人大常委会表决通过了关于修改个人所得税法的决定,将个人所得税费起征点标准提高到3500元,将超额累进税率中第1级由5%降低到3%,修改后的个税法已于201191日起施行。在个税计算过程中,由于未能很好掌握各累进台阶税赋率,经常出现财务人员利用计算器一笔一笔地计算员工的当月应纳税额,效率特别地低。通过随机调查几位HR朋友,他们对此也感觉很苦恼。笔者在工作中总结出了高效、简洁的计算方法,并应用在Microsoft Excel 20032010版本上。本文介绍的计算方法,不仅会大大提高个税的计算效率,同时也大大简化了操作过程,相信HR朋友们一看便会。

第一种方法:输入公式法

        输入公式法是利用Excel计算个税普遍采用的方法,比如使用IF语句循环等,相较今天介绍的方法而言都比较麻烦,这里不再一一赘述。本文介绍的输入公式法是效率较高、且非常简易的方法。具体实现步骤如下:

步骤1、建立工资表框架。 

        首先在Excel里建立一个简化的工资表框架,这个框架可参考下图1-1所示进行设计。它仅仅是列出了姓名、基本工资、绩效工资、税前(应发合计)、个税和税后(实发)等项,不同的企业可根据需要自由地添加如津贴、车补等增加金额的项目,也可以添加社保费代扣、迟到扣款等减少金额的项目。本表中,税前 = 基本工资 + 绩效工资,个税栏数值即为纳税额度,税后 = 税前- 个税,即扣除个税后的纯收入。

 

1-1 公式法工资表框架

 

步骤2、输入计算公式。

        在个税栏位置(本例位置为F3)直接输入以下计算代码:=ROUND(VALUE(MAX((E3-3500)*{0.03,0.1,0.2,0.25,0.3,0.35,0.45}-{0,105,555,1005,2755,5505,13505},0)),2) 。这个计算公式包含了各累进税赋的比例、速算扣除数,以及四舍五入等综合运算。ROUND(VALVE,2)是指保留小数点后两位(即角和分)的四舍五入运算。输入公式过程详见图1-2所示。

1-2 公式法公式输入

步骤3、复制公式。

       输入公式后,即得到首行的个税结果,接下来就是通过下拉复制公式了,最后所有的个税计算结果便自动得出,见1-3所示。

1-3 公式法个税计算结果

 

第二种方法:VB代码方法

       VB代码方法是将计算代码通过创建Excel“宏”的形式初始化工资表框架(或模板),属于自创函数的过程。它是目前最简洁的个税计算方法,在使用过程中,用户看不到繁杂的循环嵌套或计税公式,仅仅引用计算函数便可,但工资表的初始化(第一次制作)相对比较麻烦。该方法的具体实现步骤如下:

步骤1、建立工资表框架。

        工资表框架可参照图1-1另行设计,也可直接使用方法一创建的表。框架表建好后,便可利用计算代码创建函数,依次点击“工具”→“宏”→“Visual Basic 编辑器”打开VBAProject工程,然后右键选择“Microsoft Excel对象”→“插入”→“模块”,最后将以下代码复制到弹出工程代码窗口:

Function mytax(x, y)

Dim basicnum As Integer

Dim downnum As Variant, upnum As Variant, ratenum As Variant, deductnum As Variant

If y = 0 Then

basicnum = 3500 '中国人起征点

ElseIf y = 1 Then

basicnum = 4800 '外国人起征点

Else: basicnum = Null

End If

downnum = Array(0, 1500, 4500, 9000, 35000, 55000, 80000) '定义累进区间下限

upnum = Array(1500, 4500, 9000, 35000, 55000, 80000, 100000000) '定义累进区间上限

ratenum = Array(0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45) '定义累进税率

deductnum = Array(0, 105, 555, 1005, 2755, 5055, 13505) '定义累进速算扣除数

If x < 0 Then

MsgBox ("计税工资为负,重新输入!")

End If

If x >= 0 And x < basicnum Then

mytax = 0

End If

For i = 0 To UBound(downnum)

If x - basicnum > downnum(i) And x - basicnum <= upnum(i) Then

mytax = Round((x - basicnum) * ratenum(i) - deductnum(i), 2)

End If

Next i

End Function

待计算代码复制到窗口后,进行保存、关闭VBAProject工程窗口等操作,完成自定义函数初始化,详见图2-1所示。

 

2-1 VB代码方法创建计算函数

 

步骤2、引用函数。

      在个税栏位置(本例位置为F3)直接输入以下非常简洁的代码(自建函数):=mytax(E3,0),见2-2所示。

 

2-2 引用函数

 

步骤3、复制引用函数。

      引用函数后,即得到首行的个税计税结果,接下来也是通过下拉拖拽的方式进行整表的个税计算了,详见2-3所示。

 

 2-3 复制函数引用

       以上两种高效、简洁的个税计算方法,用户可根据对Excel的操控熟练程度进行选择。第一种方法不需要任何编程经验即可熟练操控,第二种方法需要稍微懂一些编程知识。读者也可根据本文思路进行改进,或者实现更多的功能,如创建工龄自动计算等函数,等等。(读者如欲进一步了解可在本贴留言或向junser@qq.com免费索取有关资料、本文案例中已创建好的计税模板等)