EXCEL VBA 在财务核算中的应用
2015-09-19黄岩区长潭水库管理局浙江台州318024
(黄岩区长潭水库管理局 浙江台州318024)
一、引言
笔者所在单位实行会计电算化已经有二十年,期间进行过多次升级,逐步增加模块。到目前为止运行的模块有总账、存货核算、工资管理、报表等。电算化系统在单位会计核算、财务报表、查账、档案输出、工资核算等方面发挥了积极的作用,提高了工作效率。电算化软件虽然具有高效、完整的特点,但在某些情况下,由于各方面的原因也存在不能充分发挥快速、准确的功能。如我单位电算化系统的存货核算模块,在审核和报表方面不能发挥应有的作用。此时若结合电子表格EXCEL,再在VBA编程环境中加入少量的代码,就能使存货核算在审核和报表方面发挥高效、快速、准确的作用。本文结合实际工作,谈谈EXCEL VBA在财务核算中的运用及作用。
二、EXCEL VBA在存货核算审核方面的应用
(一)存货核算的特殊情况
我单位的存货核算电算化有10余年,目前存货目录有近4 000行。在仓库设有一个存货核算终端,负责录入每月发生的出入库数据;在财务室也设有一个存货核算终端,负责审核每月发生的出入库数据以及记账、报表输出。在每一个月,仓库管理人员将全部入库单和出库单按时间顺序录入电算化系统,至月底当月单据录入完毕后,再将单据全部交财务人员。财务人员将交来的单据与录入模块的出入库数据逐一核对,进行审核操作、记账和报表。但是,由于本单位存在着特殊情况,仓库还保留着手工账簿。具体地说,每月仓库管理人员按时间顺序将出入库单据录入电脑后(这时当月单据的顺序与存货核算模块中出入库数据的顺序是一致的),他们还需要在手工账簿上按材料目录顺序记一遍手工账。这时当月单据的排列顺序与手工账簿中的材料目录顺序一致,而与存货核算模块中出入库数据的顺序不一致。仓库管理人员每月经过这两次操作后,再将好几百张的出入库单据交给财务人员审核。此时,财务人员进入存货模块审核出入库数据时,就很难找到对应的出入库单据。
(二)往年财务人员对出入库单据审核方法
财务人员在接到仓库管理人员传递的入库单和出库单后,在进行审核时,发现这几百张出入库单据与电脑中存货核算模块中入库单和出库单的顺序不一致。每月的出入库单据张数少则200张,多则500张,因为顺序不一致,存在着审核时找不到对应的出入库单据。为此,财会人员需先逐一将对应的出入库单据一张一张地找出来,等顺序一致后,再按顺序逐张进行单据项目的审核,将纸质的出入库单据与存货核算模块中的出入库数据核对相符后,再进行记账操作。这样处理,由于单据数量大,需要花费大量的查找时间,工作也存在着单调、强度大的缺点。
(三)审核方法的改进
1.分析出入库单据和库存管理流水账的关系。在分析出入库单据后,发现库存管理模块中有一项功能是流水账。单击运行后,输入当月时间,窗口立即显示当月的流水账清单。进一步分析后,发现模块当月的流水账与出入库单据存在着一一对应关系。而且流水账中有一列是存货代码,该存货代码与仓库手工账簿中的材料目录是相同的,而顺序却不一致。而且流水账中也没有提供按存货代码排序的功能,不能对流水账进行排序操作,也不能排列成与出入库单据相一致的顺序。因此不能直接在库存管理模块中找到解决的办法。
流水账中提供了输出功能,输出格式里有EXCEL一项。于是就计划先将流水账转换成EXCEL格式数据,再在EXCEL里对流水账按存货代码进行排序,排序后的流水账顺序就能与仓库管理人员传递的纸质出入库单据顺序一致。最后将出入库单据与EXCEL中排序后的流水账逐一进行审核,审核工作就会变得快速、准确,而且这样审核与直接审核出入库单据的效果是等同的。
2.EXCEL VBA在流水账排序中的作用。流水账中的存货代码是由2-4组数字和分隔符号“-”组成的。由于分隔符号在存货代码中的位置不定,如果在EXCEL工作表中直接按存货代码排序后,不能得到与仓库手工账簿相一致的顺序。因此,直接利用EXCEL工作表的排序功能还不能达到理想的效果。
EXCEL中的VBA环境能彻底解决排序问题。首先,在流水账工作表中存货代码后面插入4空白列,准备存放存货代码拆开后,并且去掉分隔符号“-”后的各段的代码数字。然后在VBA中编写代码(限于篇幅只列出主要代码):
将以上代码插入VBA模块,运行以后,存货代码立即被分解成各段数字,并存放在存货代码所在列的后四列中。然后调用EXCEL工作表中的排序功能,将排序关键字按主次顺序设置成这四列数字。重新排序后,理想的顺序终于实现了。经过核对后与出入库单据的顺序一致,也与仓库手工账簿中材料目录顺序一致。这样就可以逐行审核排序后的流水账,并与出入库单据张张对应,避免了查找出入库单据的工作,并且保证了审核出入库单据应有的作用和效果。EXCEL VBA解决了审核出入库单据顺序的问题。
三、EXCEL VBA在生成收发存报表中的应用
(一)电算化系统存货核算模块中的收发存报表
目前,电算化系统中存货核算模块分别提供了入库汇总表、出库汇总表和收发存汇总表等三张材料汇总表。虽然从三个方面反映了材料的入库、出库和结存的总体情况,但是与本单位的会计核算方法不一致。在本单位的会计核算中,仓库发出业务分为材料和固定资产两部分,其中材料发出计入各成本、费用科目,固定资产发出计入固定资产科目,两者需要分开进行收入、发出和结存的核算。而电算化系统未能根据实际情况,只能设置一个仓库,并且只能提供汇总的入库、出库和结存报表,不能单独反映其中固定资产的收发存情况,其中的材料收发存情况也不能单独反映。因此,以往在发生有固定资产收发业务的月份里,只能生成和打印出材料和固定资产汇总后的收发存报表。而其中固定资产的收发数量和金额只能通过手工计算和书写的方式,填到收发存汇总表中,并且需要重新计算材料部分的收发数量和金额。
存货核算模块中收发存报表是按照存货编码排序的,而仓库管理人员制作的报表是按存货代码顺序排列的,两者存在着许多不一致的情况。在审核较对收发存报表时也存在着顺序的不一致性。
(二)收发存报表的改进
1.实现原材料和固定资产分开报告发出数量。为了使原材料和固定资产分开填制报表,首先分析固定资产存货代码的规律性。即其中发出的固定资产存货代码第一段是以数字“18”开头的,其余数字开头的存货代码都是原材料。那么,只要将以数字“18”开头的存货代码提取出来,生成新的报表,也就是固定资产收发存报表。余下的材料经过重新汇总计算后,就是原材料报表。
存货核算模块中的收发存报表也提供了导出功能,先将其导出至电子表格EXCEL工作表中。接下来是进行排序,与前面审核时对流水账的排序相同,也是对收发存报表中存货代码一列进行代码拆分,然后以拆分后的四段代码数字作为关键字进行从小至大排序。经过此番操作之后,收发存报表整体顺序与仓库管理人员上报的收发存报顺序就一致了。然后编写以下代码(限于篇幅只列出主要代码):
并将以上代码插入VBA模块,运行以后,固定资产报表数据就保存在工作表“GDZC”中。这样就实现了原材料和固定资产收发存分开报告,避免了手工重新计算的弊端。然后编写报表格式的代码,并将其打印出来,进行总账模块核算处理。
2.实现出库报表和收发存报表的统一处理。存货核算模块中收发存报表与按部门出库分开两张报表,造成审核报表时需要核对两次,同时也存在着顺序不一致的情况。通过导出功能将出库汇总表导出至EXCEL工作表中,编写相应的代码,将每个材料目录的各部门发出数复制到收发存汇总表中,实现每种材料和固定资产的期初结存、本月收入、本月发出、期末结存以及发出至各部门的数量和金额的联合报出。这样处理之后,审核收发存报表时,材料目录顺序和报表内容、格式就可以一次性完成审核过程。
四、报表处理过程中VBA代码的整合
为了进一步提高工作效率,系统地将审核出入库单据、收发存汇总表排序、导入出库部门数据、生成收发存报表和生成打印表格等,将EXCEL VBA代码整合成连续的小模块,并分配相应的控件按钮。实际操作时,只需从存货核算模块导出流水账、入库汇总表、出库汇总表和收发存汇总表,然后依次点击右图从“第一步:”至“第九步:”的按钮,而不需输入任何账务数据,即可完成出入库单据的审核、原材料和固定资产收发存报表的生成和打印输出。
五、结束语
会计电算化系统虽然有高效、完整的特点,但也存在着某些不灵活、不能满足实际需要的弊端。为了处理好这一矛盾,应该运用电算化系统的数据导出功能,并且充分利用电子表格EXCEL及其VBA编程环境的功能,弥补电算化系统的不足。只编写少量的代码和导出数据,不需手工输入任何财务数据,就能达到快速、准确、高效地完成财务核算工作的目的。