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