企业财经数据处理实用程序举例
2014-07-09周奠君
周奠君
摘要:以企业人力资源管理和财务部门面对的工资发放数据处理问题,引出Excel电子表编程处理数据问题,给出一个完整的程序编码,阐述编程思路及程序的使用方法和用途。本论文给出的完整程序代码对于从事人力资源管理、财务管理工作人员具有很高的实用价值。
关键词:命令按钮 设计模式 数值型变量 行列序数 数组变量 循环赋值
企业人力资源管理及财务管理人员共同碰到的一个问题:人力资源部送来的员工工资发放表与财务部门的员工账号名单顺序不同,财务部门发工资的过程中要重新理顺顺序,甚至在理顺顺序过程中还有可能出错,如果企业员工人数众多的话,这工作量还不小,要花费较长时间甚至要调动更多工作人员参与这项工作,才能按时发出工资。有没有办法让财务部门在极短的时间完成这一工作又不会出错?有,那就是采取在Excel工作表上编程序的办法给予解决。本文就有关解决这一问题的编程操作方面论述如下:
一、编程及运行操作
第一,建立一个Excel电子表文件(这文件可命名为“数据更新”)作为工具文件,先在在这一文件Sheet1表中打开控件工具箱,点击命令按钮图标然后在表中适当位置点击生成一个命令按钮(注意点击切换设计模式,在设计模式下进行编程),对着命令按钮点击鼠标右键,点击查看代码调出编程界面,在界面上方选取通用、声明,输入如下代码:
Dim m As Single
Dim n As Single
Dim p As Single
Dim q As Single
Dim r1 As Single
Dim i1 As Single
Dim r2 As Single
Dim i2 As Single
Dim j As Single
Dim l As Single
第二,在CommandButton1、Click()选项界面中输入程序如下:
Private Sub CommandButton1_Click()
m = InputBox("请输入一个整数指明须更新的数据名列的列序数", "请输入一个整数", 1)
n = InputBox("请输入一个整数指明数据源的数据名列的列序数", "请输入一个整数", 3)
p = InputBox("请输入一个整数指明第几列的数值须更新", "请输入一个整数", 2)
q = InputBox("请输入一个整数指明第几列的数值为数据源", "请输入一个整数", 4)
r1 = InputBox("请输入一个整数指明须更新数据操作数的起始行序数", "请输入一个整数", 2)
i1 = InputBox("请输入一个整数指明数据源数据操作数的起始行序数", "请输入一个整数", 2)
r2 = InputBox("请输入一个整数指明须更新数据操作数的结束行序数", "请输入一个整数", 300)
i2 = InputBox("请输入一个整数指明数据源数据操作数的结束行序数", "请输入一个整数", 300)
Dim kce(60000) As Double
Dim fc(60000) As String
Dim kc(60000) As Double
Dim fce(60000) As String
For j = i1 To i2
fc(j) = Cells(j, n).Value
kc(j) = Cells(j, q).Value
Next j
For l = r1 To r2
fce(l) = Cells(l, m).Value
kce(l) = Cells(l, p).Value
Next l
For l = r1 To r2
For j = i1 To i2
If fce(l) = fc(j) Then
Cells(l, p).Value = Cells(j, q).Value
End If
Next j
Next l
End Sub
输入程序完毕后,点击设计模式为运行模式,在Excel电子表中指定区域(粘贴)输入数据,为了熟悉程序的功能,先按上述程序默认对话框中表示的行列数,在A 、C列中(粘贴)输入企业所有员工的姓名,这两列的员工姓名顺序要有所不同,D列用来存放C 列姓名员工对应的工资数据,B列空着不输入数据,点击按钮就可以直观的看出运行结果:B列会填入数据,而这些数据与A列的员工姓名相对应,也就是说,程序从C、D列中找到各位员工的工资数据,然后对应A列的姓名在B列中填入数据,一瞬间解决了本文开头提出的问题。
二、有关编程方案的说明
在通用、声明中先定义m,n,p,q,r1,r2,i1,i2,j,l共10个数值型变量,用来表达数据存放在Excel工作表中所在单元格的行列序数或作为数组变量中的每一变量的序数。
在程序中设置八个对话框,有关存放在Excel工作表中数据所在单元格位置地址,由对话框输入数据表达,m,n,p,q表示列数,m=1,n=3,p=2,q=4分别表示A、C、B、D列;r1=2,i1=2,r2=300,i2=300表示数据存放在Excel工作表中的第2行至300行。实际操作中,整个Excel文件作为专用工具文件,确定A、B、C、D列为存放数据列,第一行为标题栏(用以备注数据名称,姓名,工资等文字标注),在对话框中需要输入数据的是最后出现的是r2,i2对话框(其它对话框点击确定就行),把默认的300改为实际数据存放的最大行数,特别是行数大于300时非改不可。endprint
在程序中定义了kc(60000)、kce(60000)、fc(60000)、fce(60000)四个一维数组变量,考虑到一个Excel工作表有六万多行,意思是这个程序能处理六万个数据,如果一个企业有六万个员工的工资数据要处理,用这个程序仍能处理。
编程的思路:先将Excel工作表中(以对话框框默认状态为例)的A、B、C、D列数据用循环赋值语句放入数组变量中,然后用双循环语句扫描寻找,如发现A、C列数据相同,则依据其行列号将其对应的D列某行数据放入B列某行中。
上面给出的程序仅限于解决员工工资等数值型格式数据的处理问题。如果要解决文本型、日期型数据问题,只需另建两个命令按钮,将上述程序复制粘贴到新的命令按钮程序编码界面上,改Dim kce(60000) As Double、Dim fc(60000) As String、Dim kc(60000) As Double、Dim fce(60000) As String中的Dim kce(60000) As Double、Dim kc(60000) As Double项为Dim kce(60000) As String、Dim kc(60000) As String,就可处理文本型数据;改Dim kce(60000) As Double、Dim kc(60000) As Double为Dim kce(60000) As Date、Dim kc(60000) As Date,就可处理日期型数据。一般在Excel电子表文件中的Sheet1、 Sheet2、 Sheet3三个工作表中右上角各建一个命令按钮,按本文描述方法输入程序代码,用来解决数值型、文本型、日期型数据处理问题,并在各个工作表对应行列设置相对应的单元格格式。能处理所有数值型、文本型、日期型数据,对人力资源管理碰到的数据处理问题特别有用。
三、结束语
本文从财务、人力资源管理工作人员常见的一个具体问题引出,给出了一个有针对性的程序编码解决方案,这一程序除了用于解决本文开头提出的问题,还可用以大批量数据的查错,甚至有熟悉其它编程语言的读者,可以将这一程序更改、移植到如visulfoxpro数据库编程中用。读者熟悉这一程序的编程思路及使用方法后,还可发现这一程序在实际工作中有很多妙用,因限于篇幅不作过多论述。愿本文能帮助企业财务、人力资源管理工作人员提高工作效率。endprint