周奠君
摘要:以企業人力資源管理和財務部門面對的工資發放數據處理問題,引出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