使用Excel按人頭製作工資條,網上有兩個解決方案,一個是利用Word的“合併列印”功能,另一個是利用VBA來實現。
用“合併列印” 功能操作雖說不難,但資料過多時也很麻煩;用VBA處理起來倒是很方便,但幾十行的程式也夠初學者忙活的。經過一番實驗,筆者找出了一個比較簡單的方法,只需一個公式就可以按人頭列印出工資條來。
建立一Excel檔案,在sheet1中存放工資表的未經處理資料,假設有N列。第一行是工資項目,從第二行開始是每個人的工資
在sheet2中我們來設定工資條。根據實際情況,工資條由三行構成,一行對應工資項目,一行對應一個人的工資資料,然後是一個空行用來方便切割。這樣三行構成一個工資條。工資項目處在行號除以3餘數為1的行上;空行處在行號能整除3的行上。以上兩行不難設定,關鍵是工資資料行,牽扯到sheet1與 sheet2中資料的對應,經分析不難看出“sheet1中的資料行=INT((sheet2中的資料行+4)/3)”。
這樣我們在sheet2的A1儲存格中輸入公式“=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$N,INT((ROW()+4)/3),COLUMN())))”。確認後選擇A1儲存格,把滑鼠放在A1儲存格的右下角,滑鼠變成“+”時,向右拖動滑鼠自動填滿至N列,這樣工資條中的第一行就出來了。選定A1:N1,把滑鼠放在N1儲存格的右下角,滑鼠再次變成“+”時,向下拖動滑鼠自動填滿到資料的最後一行,工資條就全部製作完成了。
該公式運用IF函數,對MOD函數所取的引用行號與3的餘數進行判斷。如果餘數為0,則產生一個空行;如果餘數為1,則固定取sheet1中第一行的內容;否則運用INDEX函數和INT函數來取Sheet1對應行上的數。
最後來設定一下格式,選定A1:N2設上表格線,空行不設。然後選定A1:N3,拖動N3的填滿控點向下自動填滿,這樣有資料的有表格線,沒有資料的沒有表格線。最後調整一下頁面邊界,千萬別把一個工資條打在兩頁上。怎麼樣,還滿意吧?