2014年 第 13 期
总第 689 期
财会月刊(上)
会计电算化
运用Excel加载宏输入复杂财务公式

作  者
陈国栋

作者单位
(北京理工大学管理与经济学院 北京 100081)

摘  要

      【摘要】财会人员经常需要使用Excel构造复杂嵌套公式解决工作中的各种问题,但是下次解决此类问题时又要重新构造。为此,笔者用Excel VBA设计了一个加载宏,该加载宏可以根据需要进行扩展,从而使财务人员能够快速准确地输入各种常用复杂财务公式。
【关键词】Excel VBA   财务公式   简化

财务人员在工作中经常需要使用Excel构造复杂嵌套公式,而当下次遇到类似问题时,又需要重新构造复杂嵌套函数,这个过程不仅烦琐,而且容易出错。笔者认为,复杂函数在Excel中的输入应该简化,简化成只需输入几个参数就可以了。因为Excel VBA可以编写代码来增强Excel功能,所以可以使用Excel VBA来简化常用复杂财务公式的输入。下面以个人所得税及年终奖的纳税额计算问题为例来说明。需要强调的是,其他的复杂财务公式的输入都可以通过下面介绍的方法加以简化,只需要对文中的VBA代码简单调整即可。
一、工资薪金及年终奖的个人所得税计算原理及常规Excel输入方式
现行《个人所得税法》规定,从2011年9月1日起,月收入低于3 500元(扣除“三险一金”后)的工薪族不再缴纳个人所得税。月工资超过起征点后的月应纳税所得额部分按照表1中的七级累进税率实行累进纳税。
全年一次性奖金是指单位根据其全年经济效益和对雇员全年工作业绩的综合考核情况,向雇员发放的一次性奖金,也包括年终加薪、兑现的年薪和绩效工资。全年一次性奖金俗称年终奖,其单独作为一个月工资薪金所得来计算缴纳个人所得税。年终奖的计算公式与平日每月的奖金计算公式是完全不同的,但两者税率确定依据的是同一张工资薪金所得项目税率表。
年终奖个人所得税具体计算办法是:如果雇员当月内工资超过3 500元,纳税的年终奖不变。不足3 500元的,从年终奖中扣除月工资不足3 500元的部分,得到纳税的年终奖。将纳税的年终奖除以12个月,按其商数确定适用哪一级税率和速算扣除数,再以纳税的年终奖总额乘以适用的税率,然后减去速算扣除数的数值即为应纳税额。

 

 

 

 


假设员工甲扣除“三险一金”后的薪金所得为6 500元,并且该月他获得的年终奖为80 000元,试计算甲该月薪金个人所得税和年终奖的个人所得税。设计Excel表格如下,并使用Excel嵌套函数来计算月薪金和年终奖的个人所得税。

 

 

 

 

 

 

 

二、常用复杂财务公式快速输入的Excel VBA解决方案
从表2可以看出用Excel公式解决复杂财务问题是相当复杂和烦琐的,当下次解决类似问题时,财务人员又需要重新构造公式。为了广大财务人员能够快速方便地输入复杂财务公式,笔者用Excel VBA设计了一个加载宏,该加载宏可以使广大财务人员在Excel中准确、快捷地输入复杂财务公式。步骤如下:
步骤一:在Excel VBA中插入一个名为userform1的用户窗体(见图1)。

 

 

 

 

 

用户窗体中复合框的名称为ComboBox1,参数1旁引用单元格地址控件名称为RefEdit1,参数2旁引用单元格地址控件名称为RefEdit2,确定按钮的名称为OKButton。
步骤二:在用户窗体userform1的代码窗口输入以下VBA代码。
Dim para1 As Range
Private Sub ComboBox1_Change()
    Select Case ComboBox1.ListIndex
        Case 0 " Change Case
            Labelhelp02.Visible = False
            labelhelp2.Visible = False
            RefEdit2.Visible = False
            With labelhelp1
                .Caption = "扣除三险一金的后月工资"
            End With
        Case 1
            Labelhelp02.Visible = True
            labelhelp2.Visible = True
            RefEdit2.Visible = True
            labelhelp1.Caption = "年终奖(税前)"
            labelhelp2.Caption = "当月工资(税前)"
    End Select
End Sub
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub OKButton_Click()
    Dim RefEdit1Text As String
    Err.Number = 0
    Set para1 = Range(RefEdit1.Text)
    If Err.Number <> 0 Then
        MsgBox "参数1单元格地址选择错误!",vbCritical,常用财务公式
        With RefEdit1
            .SelStart = 0
            .SelLength = Len(.Text)
            .SetFocus
        End With
        On Error GoTo 0
        Exit Sub
    End If
    On Error GoTo 0
    On Error Resume Next
        RefEdit1Text = Replace(RefEdit1.Text,ActiveCell.Parent.Name & "!", "")
    RefEdit2Text = Replace(RefEdit2.Text,ActiveCell.Parent.Name & "!", "")
    Select Case ComboBox1.ListIndex
        Case 0 "
            ActiveCell.Formula = "=ROUND(MAX((" & RefEdit1Text & "-3 500)*{0.03,0.1,0.2,0.25,0.3,0.35,0.45}-{0,105,555,1 005,2 755,5 505,13 505},0),2)"
        Case 1 "
        ActiveCell.Formula = "=(" & RefEdit1Text & "+MIN(3 500," & RefEdit2Text & ")-3 500)∗LOOKUP((" & RefEdit1Text & "+MIN(3 500," & RefEdit2Text & ")-3 500)/12,{0,1 500.01,4 500.01,9 000.01,35 000.01,55 000.01,80 000.01},{0.03,0.1,0.2,0.25,0.3,0.35,0.45})-LOOKUP((" & RefEdit1Text & "+MIN(3 500," & RefEdit2Text & ")-3 500)/12,{0,1 500.01,4 500.01,9 000.01,35 000.01,55 000.01,80 000.01},{0,105,555,1 005,2 755,5 505,13 505})"
    End Select
    Unload userform1
End Sub
Private Sub UserForm_Initialize()
    With ComboBox1
        .List = Array("个人所得税","个人年终奖所得税")
        .ListIndex = 0
    End With
End Sub
步骤三:为了在Excel界面中出现“常用财务公式”按钮,在VBA 编辑器中添加以下代码。
%位于ThisWorkbook代码窗口
Private Sub Workbook_Open()
    Call CreateMenuItem
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call DeleteMenuItem
End Sub
%以下代码位于插入的模块代码窗口中
Option Explicit
Sub Myformula()
    userform1.Show
End Sub
Sub CreateMenuItem()
    Dim ToolsMenu As CommandBarPopup
    Dim NewMenuItem As CommandBarButton
        Call DeleteMenuItem
    Set ToolsMenu = CommandBars(1).FindControl(ID:=30007)
    If ToolsMenu Is Nothing Then
        MsgBox "不能添加常用财务公式按钮!"
        Exit Sub
    Else
        Set NewMenuItem=ToolsMenu.Controls.Add _
            (Type:=msoControlButton)
        With NewMenuItem
            .Caption = "常用财务公式"
            .OnAction = "Myformula"
        End With
    End If
    End Sub
Sub DeleteMenuItem()
    On Error Resume Next
    CommandBars(1).FindControl(ID:=30007). _
        Controls("常用财务公式").Delete
End Sub
当财务人员需要在表2中输入年终奖个人所得税计算公式时,财务人员只需要从加载项选项卡中点击“常用财务公式”按钮,即出现图2的对话框,选择参数区域然后点击确定就可以了。

 

 

 

 

 

 

 


用Excel加载宏改进后的输入方法与传统的嵌套公式输入方法对比,显然改进后的方法简单准确。
三、小结
笔者设计的加载宏可以帮助广大财务人员快速准确地输入复杂财务公式,同时该加载宏可以根据财务人员的需要,添加几十个甚至更多的常用复杂公式,从而极大地提高广大财务人员输入复杂财务公式的准确性和效率,具有很强的实用性。
主要参考文献
1. John Walkenbanch. Excel 2003高级VBA编程宝典.北京:电子工业出版社,2006
2. 王宇航.在Excel中利用宏技术进行工资数据统计和纠错.财会月刊,2011;11
3. 谷增军.Excel模拟运算表在财务分析中的应用.财会月刊,2010;1
4. 张道珍.利用Excel计算个人所得税的五种方法.财会月刊,2010;13
5. 刘宜.用EXCEL函数求工资薪金个人所得税最优解.财会月刊,2013;17