首頁ExcelVBA

VBA如何计算健保应负担金额




在会计师事务所待过、查过内控,应该都知道证期局有个《公开发行公司建立内部控制制度处理准则》,所有股票上市上柜的公司,必须依照规定建立八大循环的控制作业。所以无论是会计人员配合外部查核、或者是公司稽核单位例行性内部稽查,都会针对八大循环开展工作。其中有个薪工循环,重点之一为「计算薪资税及各项代扣款」,主要是代扣劳健保及所得税。实务的标准作业,是到网站下载最新的级距金额表,核算代扣款是否合乎规定。这篇文章以健保为例,介绍如何以函数公式及VBA程序,自动依照级距计算金额,以下分享:

一、《全民健康保险保险费负担金额表》,下载自「中央健康保险署」网站,依照不同月投保金额(薪资所得),分别列明员工及公司应负担金额(实务使用时,请自行下载更新级距)。

全民健康保险保险费负担金额表

二、有读过《会计人的Excel小教室》的读者,应该都可以利用IF函数设计公式:「=IF(E2<20100,284,IF(E2<21000,296,IF(E2<21900,309,IF(E2<22800,323,336))))」为方便说明,这里假设公司员工薪资只用到五个级距,而且员工皆无眷属。

假设公司员工薪资只用到五个级距

三、光标移到下方工作表名称,鼠标右键,点选「检视程序代码」,以最快、最直接的方式进入VBA。

检视程序代码

四、「插入」、程序」,准备开始写程序。

准备开始写程序

五、在跳出来的「新增程序」窗口,名称输入「健保级距计算」,「型态」维持默认的「Sub(S)」,「有效范围」维持预设的「Public(B)」。

新增程序

六、输入如下程序代码:

Public Sub 健保级距计算()

For i = 2 To 6 If Cells(i, “D”) < 20100 Then Cells(i, “G”) = 284

If Cells(i, “D”) >= 20100 And Cells(i, “D”) < 21000 Then Cells(i, “G”) = 296

If Cells(i, “D”) >= 21000 And Cells(i, “D”) < 21900 Then Cells(i, “G”) = 309

If Cells(i, “D”) >= 21900 And Cells(i, “D”) < 22800 Then Cells(i, “G”) = 323

If Cells(i, “D”) >= 22800 And Cells(i, “D”) < 24000 Then Cells(i, “G”) = 336

Next

End Sub

Public Sub 健保级距计算

七、在上方功能区操作:「执行(R)」、「执行Sub或UserForm F5」意思执行VBA程序。Excel函数公式只要输入完毕,便会开始计算,VBA程序输入完毕会储存,必须操作执行,程序才会运作,这是两者不同的地方。

八、关闭Visual Basic编辑器,回到工作簿,可以看到G栏呈现和F栏相同的结果,正是依照级距个人应负担的健保金额。

关闭Visual Basic编辑器

Visual Basic for Applications,听起来艰涩,似乎专属于资工系资管系的工程师领域,然而以这篇文章的VBA程序来看,即便不多作说明,应该也能看得懂这几段程序在「讲」什么,这是BASIC语言自1960s年代延续下来的特色,接近自然语言,因此容易理解、也便于学习。套句周爷老电影台词:「只要有心,人人都可以是食神,」在Excel世界里,只要有心,人人都可以让VBA飞!


有系統、全面性的學習Excel職場應用,:會計人的Excel小教室PressPlay頻道


當前文章分類:
VBA