周奠君
摘要:以企業(yè)人力資源管理和財務(wù)部門面對的工資發(fā)放數(shù)據(jù)處理問題,引出Excel電子表編程處理數(shù)據(jù)問題,給出一個完整的程序編碼,闡述編程思路及程序的使用方法和用途。本論文給出的完整程序代碼對于從事人力資源管理、財務(wù)管理工作人員具有很高的實用價值。
關(guān)鍵詞:命令按鈕 設(shè)計模式 數(shù)值型變量 行列序數(shù) 數(shù)組變量 循環(huán)賦值
企業(yè)人力資源管理及財務(wù)管理人員共同碰到的一個問題:人力資源部送來的員工工資發(fā)放表與財務(wù)部門的員工賬號名單順序不同,財務(wù)部門發(fā)工資的過程中要重新理順順序,甚至在理順順序過程中還有可能出錯,如果企業(yè)員工人數(shù)眾多的話,這工作量還不小,要花費較長時間甚至要調(diào)動更多工作人員參與這項工作,才能按時發(fā)出工資。有沒有辦法讓財務(wù)部門在極短的時間完成這一工作又不會出錯?有,那就是采取在Excel工作表上編程序的辦法給予解決。本文就有關(guān)解決這一問題的編程操作方面論述如下:
一、編程及運行操作
第一,建立一個Excel電子表文件(這文件可命名為“數(shù)據(jù)更新”)作為工具文件,先在在這一文件Sheet1表中打開控件工具箱,點擊命令按鈕圖標然后在表中適當(dāng)位置點擊生成一個命令按鈕(注意點擊切換設(shè)計模式,在設(shè)計模式下進行編程),對著命令按鈕點擊鼠標右鍵,點擊查看代碼調(diào)出編程界面,在界面上方選取通用、聲明,輸入如下代碼:
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("請輸入一個整數(shù)指明須更新的數(shù)據(jù)名列的列序數(shù)", "請輸入一個整數(shù)", 1)
n = InputBox("請輸入一個整數(shù)指明數(shù)據(jù)源的數(shù)據(jù)名列的列序數(shù)", "請輸入一個整數(shù)", 3)
p = InputBox("請輸入一個整數(shù)指明第幾列的數(shù)值須更新", "請輸入一個整數(shù)", 2)
q = InputBox("請輸入一個整數(shù)指明第幾列的數(shù)值為數(shù)據(jù)源", "請輸入一個整數(shù)", 4)
r1 = InputBox("請輸入一個整數(shù)指明須更新數(shù)據(jù)操作數(shù)的起始行序數(shù)", "請輸入一個整數(shù)", 2)
i1 = InputBox("請輸入一個整數(shù)指明數(shù)據(jù)源數(shù)據(jù)操作數(shù)的起始行序數(shù)", "請輸入一個整數(shù)", 2)
r2 = InputBox("請輸入一個整數(shù)指明須更新數(shù)據(jù)操作數(shù)的結(jié)束行序數(shù)", "請輸入一個整數(shù)", 300)
i2 = InputBox("請輸入一個整數(shù)指明數(shù)據(jù)源數(shù)據(jù)操作數(shù)的結(jié)束行序數(shù)", "請輸入一個整數(shù)", 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
輸入程序完畢后,點擊設(shè)計模式為運行模式,在Excel電子表中指定區(qū)域(粘貼)輸入數(shù)據(jù),為了熟悉程序的功能,先按上述程序默認對話框中表示的行列數(shù),在A 、C列中(粘貼)輸入企業(yè)所有員工的姓名,這兩列的員工姓名順序要有所不同,D列用來存放C 列姓名員工對應(yīng)的工資數(shù)據(jù),B列空著不輸入數(shù)據(jù),點擊按鈕就可以直觀的看出運行結(jié)果:B列會填入數(shù)據(jù),而這些數(shù)據(jù)與A列的員工姓名相對應(yīng),也就是說,程序從C、D列中找到各位員工的工資數(shù)據(jù),然后對應(yīng)A列的姓名在B列中填入數(shù)據(jù),一瞬間解決了本文開頭提出的問題。
二、有關(guān)編程方案的說明
在通用、聲明中先定義m,n,p,q,r1,r2,i1,i2,j,l共10個數(shù)值型變量,用來表達數(shù)據(jù)存放在Excel工作表中所在單元格的行列序數(shù)或作為數(shù)組變量中的每一變量的序數(shù)。
在程序中設(shè)置八個對話框,有關(guān)存放在Excel工作表中數(shù)據(jù)所在單元格位置地址,由對話框輸入數(shù)據(jù)表達,m,n,p,q表示列數(shù),m=1,n=3,p=2,q=4分別表示A、C、B、D列;r1=2,i1=2,r2=300,i2=300表示數(shù)據(jù)存放在Excel工作表中的第2行至300行。實際操作中,整個Excel文件作為專用工具文件,確定A、B、C、D列為存放數(shù)據(jù)列,第一行為標題欄(用以備注數(shù)據(jù)名稱,姓名,工資等文字標注),在對話框中需要輸入數(shù)據(jù)的是最后出現(xiàn)的是r2,i2對話框(其它對話框點擊確定就行),把默認的300改為實際數(shù)據(jù)存放的最大行數(shù),特別是行數(shù)大于300時非改不可。endprint
在程序中定義了kc(60000)、kce(60000)、fc(60000)、fce(60000)四個一維數(shù)組變量,考慮到一個Excel工作表有六萬多行,意思是這個程序能處理六萬個數(shù)據(jù),如果一個企業(yè)有六萬個員工的工資數(shù)據(jù)要處理,用這個程序仍能處理。
編程的思路:先將Excel工作表中(以對話框框默認狀態(tài)為例)的A、B、C、D列數(shù)據(jù)用循環(huán)賦值語句放入數(shù)組變量中,然后用雙循環(huán)語句掃描尋找,如發(fā)現(xiàn)A、C列數(shù)據(jù)相同,則依據(jù)其行列號將其對應(yīng)的D列某行數(shù)據(jù)放入B列某行中。
上面給出的程序僅限于解決員工工資等數(shù)值型格式數(shù)據(jù)的處理問題。如果要解決文本型、日期型數(shù)據(jù)問題,只需另建兩個命令按鈕,將上述程序復(fù)制粘貼到新的命令按鈕程序編碼界面上,改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,就可處理文本型數(shù)據(jù);改Dim kce(60000) As Double、Dim kc(60000) As Double為Dim kce(60000) As Date、Dim kc(60000) As Date,就可處理日期型數(shù)據(jù)。一般在Excel電子表文件中的Sheet1、 Sheet2、 Sheet3三個工作表中右上角各建一個命令按鈕,按本文描述方法輸入程序代碼,用來解決數(shù)值型、文本型、日期型數(shù)據(jù)處理問題,并在各個工作表對應(yīng)行列設(shè)置相對應(yīng)的單元格格式。能處理所有數(shù)值型、文本型、日期型數(shù)據(jù),對人力資源管理碰到的數(shù)據(jù)處理問題特別有用。
三、結(jié)束語
本文從財務(wù)、人力資源管理工作人員常見的一個具體問題引出,給出了一個有針對性的程序編碼解決方案,這一程序除了用于解決本文開頭提出的問題,還可用以大批量數(shù)據(jù)的查錯,甚至有熟悉其它編程語言的讀者,可以將這一程序更改、移植到如visulfoxpro數(shù)據(jù)庫編程中用。讀者熟悉這一程序的編程思路及使用方法后,還可發(fā)現(xiàn)這一程序在實際工作中有很多妙用,因限于篇幅不作過多論述。愿本文能幫助企業(yè)財務(wù)、人力資源管理工作人員提高工作效率。endprint