設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

一個公式 讓Excel按人頭打出工資條

2007-10-8 15:00| 發(fā)布者: admin| 查看: 8041| 評論: 3

使用Excel按人頭制作工資條,網(wǎng)上有兩個解決方案,一個是利用Word的“郵件合并”功能(詳見),另一個是利用VBA來實現(xiàn)。

  用“郵件合并” 功能操作雖說不難,但數(shù)據(jù)過多時也很麻煩;用VBA處理起來倒是很方便,但幾十行的程序也夠初學者忙活的。經(jīng)過一番試驗,筆者找出了一個比較簡單的方法,只需一個公式就可以按人頭打印出工資條來。

  新建一Excel文件,在sheet1中存放工資表的原始數(shù)據(jù),假設(shè)有N列。第一行是工資項目,從第二行開始是每個人的工資。

點擊放大此圖片

  在sheet2中我們來設(shè)置工資條。根據(jù)實際情況,工資條由三行構(gòu)成,一行對應(yīng)工資項目,一行對應(yīng)一個人的工資數(shù)據(jù),然后是一個空行用來方便切割。這樣三行構(gòu)成一個工資條。工資項目處在行號除以3余數(shù)為1的行上;空行處在行號能整除3的行上。以上兩行不難設(shè)置,關(guān)鍵是工資數(shù)據(jù)行,牽扯到sheet1與 sheet2中數(shù)據(jù)的對應(yīng),經(jīng)分析不難看出“sheet1中的數(shù)據(jù)行=INT((sheet2中的數(shù)據(jù)行+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單元格的右下角,鼠標再次變成“+”時,向下拖動鼠標自動填充到數(shù)據(jù)的最后一行,工資條就全部制作完成了。

  該公式運用IF函數(shù),對MOD函數(shù)所取的引用行號與3的余數(shù)進行判斷。如果余數(shù)為0,則產(chǎn)生一個空行;如果余數(shù)為1,則固定取sheet1中第一行的內(nèi)容;否則運用INDEX函數(shù)和INT函數(shù)來取Sheet1對應(yīng)行上的數(shù)。

  最后來設(shè)置一下格式,選定A1:N2設(shè)上表格線,空行不設(shè)。然后選定A1:N3,拖動N3的填充柄向下自動填充,這樣有數(shù)據(jù)的有表格線,沒有數(shù)據(jù)的沒有表格線。最后調(diào)整一下頁邊距,千萬別把一個工資條打在兩頁上。怎么樣,還滿意吧?

點擊放大此圖片

發(fā)表評論

最新評論

引用 183271441 2009-1-19 00:28
好 的 很
引用 zjrgg 2008-10-4 20:42
好用
引用 crazymen 2008-7-4 10:22
應(yīng)該可以再優(yōu)化一下,如下: =IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!A:A,(ROW()+4)/3,1))) 使用時應(yīng)先拉兩行,設(shè)置好格式后,再選定前三行(第三行為空白)向下拉,可以減少三分之一的單元格有公式。這樣可縮短公式,減輕電腦負擔,并且對列數(shù)是沒有限制的

查看全部評論(3)

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 08:04 , Processed in 0.071514 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部