■原虹(廣州工商學院)
目前,利用Excel 制作工資條比較常用的有兩種方法——排序法以及在IF 函數的基礎上嵌套MOD 函數法。但是在教學過程中,筆者發現大多數學生對MOD 函數的理解還比較吃力,于是在此兩種比較常見的方法下,本文還介紹了第三種方法——VLOOKUP 函數法,這種方法相對IF 函數嵌套MOD 函數法來說更為簡單,更易被學生理解掌握。*
基于下面“工資表”工作表中的數據,我們來闡述以下三種運用Excel 制作工資條的方法。

圖1 工資表
排序法,其主要原理是利用Excel 工作表中的排序功能,先將現有的公司員工工資表數據進行分隔,從而在每個員工的工資明細信息行之間建立空白行,緊接著運用Excel 工作表中的定位功能,將工資表中的標題行插入至公司每個員工的工資明細行上方,具體操作如下:
第一,從M3 單元格開始依次對公司員工進行編號,即M3-M5分別是1、2、3。第二,將第一步中編好的序號進行復制,并從M6單元格開始粘貼,達到M3-M8 單元格的內容依次是1、2、3、1、2、3 的效果,若希望完成的每個員工工資條之間也有一段空白行的話,可繼續在M9 單元格重復粘貼一遍序號,即M3-M11 單元格的內容依次是1、2、3、1、2、3、1、2、3。第三,選中M2 單元格,然后點擊數據——升序,這樣剛剛編輯好序號的M3-M11 單元格就會變成1、1、1、2、2、2、3、3、3,從而成功將每一個員工的數據行分隔開(也可選擇降序,只要達到分隔每一個員工工資數據行的目的即可)。第四,選中B1:L2 區域(之所以要將第一行空白行也選中,是因為想要達到每個員工的工資條之間也有空白行的效果),對選中的內容進行復制。第五,這一步非常關鍵,不要急著找單元格粘貼內容,而是選中B3:L9 區域,按F5 或Ctrl+G,調出Excel 定位功能,點擊定位條件,勾選“空值”,這樣B3:L9 區域內的所有空白單元格就都被選中,然后在B4 單元格點擊粘貼,就可為每一個員工的工資條明細行上方添加標題行。最后,將制作好的每個員工工資條進行添加邊框,修改字號、字體等格式設置。在教學過程中筆者發現,排序法是最容易被學生理解并掌握的方法。
函數法1 中運用到5 種函數,首先介紹其中兩種主要的函數的語法格式,即:
IF(logical_test, value_if_true, value_if_false)
IF 函數可以對logical_test 中提出的數值或者公式進行條件檢測,若條件成立,則返回value_if_true 對應的值,相反,若logical_test 為false,則返回value_if_false 對應的值。
MOD(number, divisor)
MOD 函數作為一個求余函數,其語法格式中的number 為被除數,divisor 為除數,該函數嵌套在IF 函數內,可以起到方法一中定位目標單元格的作用。
此外,函數法1 里面還涉及到另外兩個簡單的取行號或列號的函數,即ROW(reference)和COLUMN(reference),reference 即需要取其行號或者列號的單元格或單元格區域。
最后該方法中還會運用到INDEX 函數,用于返回單元格中的具體數值,其語法格式為:
INDEX(reference,row_num,column_num,area_num)
在上述五種函數的結合下,函數法1 首先需要新建“工資條”工作表,并在“工資條”工作表A1 單元格錄入以下公式: =IF(MO D(ROW(),3)=0,””,IF(MOD(ROW(),3)=1,工資表!B$2,INDEX(工資表!$B:$L,INT((ROW()+8)/3),COLUMN())))
結合上述5 種函數的介紹,該公式的意思是如果行號可以被3整除,則該行為空白行,若被3 除余1,則該行為標題行,若被3除余2,則該行為具體的員工工資明細數據行,即具體的員工編號、姓名、實發工資等數據。
然后,拖動A1 單元格右下方的填充柄至K1 單元格。
最后,選中A1:K1 區域,然后向下填充,直至所有員工的工資數據顯示為止,同時將顯示出來的每個員工工資條進行添加邊框,修改字號、字體等格式設置。
函數法1 由于涉及到的函數較多,在教學過程中,對學生來說比較復雜難接受,于是筆者總結出了本文的第三種方法,依然是函數法,但是相對函數法1 中提到的函數,簡單很多,同時也利于學生接受理解,實際操作過程中也更為簡便,有利于提高工作效率。
函數法2 同樣也是要運用函數,但是與函數法1 相比,函數法2 只涉及到一個主要的函數——VLOOKUP 函數,同時嵌入一個簡單的返回列號的函數COLUMN 函數(前文介紹過)。
VLOOKUP 函數是一個垂直查找函數,且查找依據的數值必須位于查找區域的首列,其語法格式如下:
VLOOKUP(lookup_value, table_array, col_index_num,range_lookup)
其中,lookup_value 為要查找的值,該值在案例中可以設置為員工編號;table_array 為查找區域,在選擇該區域的時候需要注意的是一定以lookup_value 為準,向右選擇區域,因為VLOOKUP函數是用于在表格或數值組的首列查找指定的數值,所以lookup_value 所在列一定要作為table_array 的首列,在本案例中可以選中B3:L5 區域為table_array,該區域必須以B 列為起點,不能從整個工作表最左邊的A 列開始;col_index_num 為table_array 中對應的列號,而非整個工作表的列號,例如案例中的“姓名”所在列,對于整個工作表來說是第3 列,但是對于前述以員工編號所在的B 列為起點選中的table_array 來說,“姓名”是這個小區域中的第2 列;range_lookup 為邏輯值,若此處錄入0 或FALSE,即為精確匹配,若此處省略不錄,或者錄入1 或TRUE,即為近似匹配。
結合上述VLOOKUP 函數的介紹,在本案例工作表中,具體操作如下:首先,將工作表中的標題復制,選中B7單元格進行粘貼。其次,在B8 單元格錄入第一個員工對應的員工編號A0001。接著,在C8(即標題行“姓名”單元格下方)錄入公式:=VLOOKUP($B8,$B$3:$L$5,COLUMN(B3),0)即可查找到對應的姓名數據。然后,拖動C8 單元格右下方的填充柄至L8 單元格,這樣編號A0001 員工的所有信息就被查找出來。最后,選中B7:L9 區域,拖動該區域右下方的填充柄,向下查找顯示出所有員工的工資明細信息并加以格式設置。
這里需要提一下該公式中的col_index_num 沒有簡單的填入列號2,而是運用到了一個返回列號的COLUMN 函數,填入函數COLUMN(B3),雖然該函數運算結果依舊等于2,結果看似與直接填列號2 沒有區別,但是這樣做的目的是為了下個環節創造便利,若函數中的col_index_num 直接填入2 的話,那么后續D8:L8 區域就需要重新錄入VLOOKUP 函數,對應函數中的col_index_num 需要手工修改,依次填入3、4、5......這樣一定程度上加大了工作量,但是若在col_index_num 位置運用COLUMN 函數,則可以直接拖動C8 單元格右下方的填充柄L8 單元格,工作表會自動改變列號,而無需人工一個個修改列號。
函數法2 相比函數法1 更為簡便,同時因為函數本身也比較簡單,整個公式只涉及到兩個簡單函數,所以在教學過程中減輕了學生學習函數的負擔和難度,更容易被學生理解接受。
以上就是筆者在教學過程中,針對利用Excel 制作工資條探討的三種不同的方法,其中排序法和VLOOKUP 函數法更容易被學生接受運用。當然,Excel 功能的強大決定了還有其他很多方法來制作工資條,也相信科技的進步會推動這些軟件更好的為我們的工作提供更優更便利的服務。