excel自動生成工資條_第1頁
excel自動生成工資條_第2頁
excel自動生成工資條_第3頁
excel自動生成工資條_第4頁
excel自動生成工資條_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、方法一:宏命令控制法對于Office家族的宏功能,大家或許早有耳聞,但由于需要使用VBA進行編程,所以宏一直讓許多人望而卻步,不過要使用一個現(xiàn)成的宏就簡單多了。首先打開要處理的Excel表,選擇“工具宏Visual Basic 編輯器”,在編輯器左邊的窗口中用鼠標雙擊Sheet1,會出現(xiàn)代碼編輯窗口,在代碼編輯窗口輸入如下代碼(為了不破壞原有的工資表,所以這里采用了將 Sheet1的內(nèi)容復制到Sheet2的方法,所以最后的生成結(jié)果是在Sheet2中顯示):Sub MakeSalaryList()Dim i As IntegerDim endrow As Integer'測出數(shù)據(jù)的最后一

2、行endrow = Sheet1.Range("a65536").End(xlUp).Row - 1'把標題貼過去Worksheets(1).Range("1:1").Copy (Worksheets(2).Cells(1, 1)For i = 3 To endrow'把每條數(shù)據(jù)抬頭貼過去Worksheets(1).Range("2:2").Copy (Worksheets(2).Cells(3 * i - 7, 1)'把數(shù)據(jù)貼過去Worksheets(1).Range(Cells(i, 1), Cells(i

3、, 256).Copy (Worksheets(2).Cells(3 * i - 6, 1)Next iEnd Sub關(guān)閉編輯器,將自動返回到剛才的Excel表,選擇“工具宏宏”,將彈出如下對話框:點擊“執(zhí)行”,將在Sheet2生成如Gz-2所示的轉(zhuǎn)換成工資條,怎樣,不復雜吧。當然,如果你的表總Sheet2已經(jīng)輸入了別的內(nèi)容,就可以將他復制到Sheet3來生成,代碼修改也很簡單,把其中的Sheet2修改成Sheet3就可以了,其它代碼不變。方法二:公式填充法相比宏命令,公式填充法更便于理解,不過需要手工操作的步驟稍微多一些,“魚和熊掌不可得兼”,要用哪種方法就看你的愛好了。首先打開要操作的Ex

4、cel工資表,為了不破壞原表(Sheet1)結(jié)構(gòu),我們?nèi)匀徊捎迷赟heet2中進行操作的方法。由于這個工資表一共有L列,18行,要復制的表頭項目在第二行,所以在第一個單元格中輸入如下公式:=IF(MOD(ROW(),2)=0,INDEX(sheet1!$A:$L,INT(ROW() 1)/2) 2,COLUMN(),sheet1!A$2)接下來的工作就簡單了,我們只要使用填充柄將此公式填充到其它單元格,列向填充到L列,行填充到18行就大功告成。因為在不同的表格中這個公式需要修改的地方比較多,所以這里做一下解釋:由于工資條中的奇數(shù)行都是表頭,偶數(shù)行是數(shù)據(jù),所以在這個公式中首先進行奇偶行判斷,若是

5、奇數(shù)行,直接取工資表的A2單元格數(shù)據(jù)(即公式中的 sheet1!A$2,如果表頭數(shù)據(jù)在第4行第三列則修改為sheet1!C$4)。若是偶數(shù)行,則用INDEX()函數(shù)來取數(shù)。該函數(shù)的第一個參數(shù)是指定工資表中的一個取數(shù)區(qū)域(即sheet1!$A:$L,如果不是從A到L列,那么可以修改這個參數(shù),如修改為sheet1!$B$P ,就表示在B到P列之間取數(shù))。當然,如果你想把轉(zhuǎn)換后的數(shù)據(jù)放在Sheet3而不是Sheet2中,那么,只要在Sheet3中執(zhí)行以上操作就可以了,并不需要修改公式的內(nèi)容。采用這種方法不能自動插入空行,給打印后的裁減帶來了一定的麻煩,所以,建議在做完后在全選所有單元格,通過調(diào)整行高

6、和列寬來解決這個問題。方法三:Word郵件合并法對于宏和公式運用不太熟練的朋友別著急,這里還有一招等著你。首先我們確定好主文檔(工資條表格)和數(shù)據(jù)源(Excel或Access格式的記錄表),然后通過“郵件合并”向?qū)О褦?shù)據(jù)源中的的字段信息合并進來。點擊“工具信函與郵件郵件合并”,然后在屏幕右側(cè)進入“郵件合并”向?qū)А5谝徊剑哼x擇文檔類型。選擇“信函”。第二步:選擇開始文檔。選擇默認的“使用當前文檔”。第三步:選取收件人。單擊“使用現(xiàn)有列表”區(qū)的“瀏覽”按鈕,通過“選擇數(shù)據(jù)源”對話框,定位格式數(shù)據(jù)源的存放位置,選中并打開。接著彈出“郵件合并收件人”對話框,在這里可以指定參與郵件合并的記錄,選擇默認的

7、“全部”,確定返回Word編輯窗口。第四步:撰寫信函。將插入點定位于表格的第二行第一格內(nèi),單擊“郵件合并”工具欄上“插入Word域”左邊的“插入域”按鈕,打開“插入合并域”對話框,選中“域”下方列表框中的“序號”字段,并單擊“插入”按鈕,即可把“序號”字段合并到主文檔中。然后用同樣的方法把其余字段插入到主文檔表格中對應(yīng)的位置即可。第五步:預(yù)覽信函。在這里我們可以瀏覽一下工資條的大致效果,還可以調(diào)整“姓名”表格的寬度,讓姓名在一行內(nèi)顯示。然后選中“姓名”后的表格區(qū)域,單擊鼠標右鍵在彈出的菜單中選擇“平均分布各列”,讓這些列具有相同的寬度,使工資條更美觀。如果這樣直接進入打印操作,一頁紙只能打印一

8、個工資條,所以選中整個工資條表格,復制,粘貼到原表格下方空一行后的地方,把插入點定位于主文檔中第一和第二個表格之間的空行處,單擊“郵件合并”工具欄上的“插入Word域”按鈕,在彈出的菜單中選擇“下一記錄”命令,以此類推,就可以在一頁紙上多排幾個工資表,充分利用資源了。最后進入第六步:完成合并。然后把工資條打印出來,就制作完成了。OK,再也不用費力地重復勞動專門制作工資條數(shù)據(jù)表了,通過簡單的轉(zhuǎn)化一個數(shù)據(jù)表就實現(xiàn)了兩項完全不同的功能,趕快操練一下吧。方法一:排序法第一步:打開工資表在工資表最后一空白列輸入1,2,3(注:輸入的數(shù)字與工資表的行數(shù)相同)(圖1)。第二步:在剛輸入的數(shù)字下面向下輸入1.

9、1,2.1,比上面的數(shù)據(jù)少一行,本列在K9中輸入1.1(圖2)。第三步:在K列任何一個單元格中單擊左鍵單擊工具欄上的升序排列按鈕選擇工資表編輯定位定位條件選擇“空值”確定。第四步:在編輯欄中輸入=A$1按住Ctrl鍵不放敲回車鍵。第五步:在單元格K15下方輸入1.01,2.01一直輸入到6.01單擊工具欄上的升序排列按鈕刪除K列的數(shù)據(jù)。加一下邊框便大功告成了(圖3)。方法二:函數(shù)法第一步:打開工資表單擊Sheet2標簽在Sheet2工作表的A1單元格中輸入=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(She

10、et1!$A:$N,INT(ROW()+4)/3),COLUMN()向后拖到J1單元格(注:拖的長度應(yīng)與原表長度相同)(圖4)。第二步:選擇A1:J1區(qū)域向下拖拖到第20行即可(注:拖的時候可能拖多或拖少,這時要看一下原表)加一下邊框便成功了(圖5)。如下是“生成工資條格式”、“打印預(yù)覽”、“清空內(nèi)容”的三個功能實現(xiàn):Sub CtoPrt()'生成工資條格式 Dim mycount As Integer Dim prows As Integer Dim srows As Integer mycount = 0 prows = Sheets("打印 .如下是“生成工資條格式”、

11、“打印預(yù)覽”、“清空內(nèi)容”的三個功能實現(xiàn):Sub CtoPrt()'生成工資條格式 Dim mycount As Integer Dim prows As Integer Dim srows As Integer mycount = 0 prows = Sheets("打印").Cells(Rows.Count, 1).End(xlUp).Row srows = Sheets("源數(shù)據(jù)").Cells(Rows.Count, 1).End(xlUp).Row'清空打印表數(shù)據(jù) If prows > 1 Then Application

12、.EnableEvents = False Range(Rows(2), Rows(prows).ClearContents Application.EnableEvents = True End If'清空打印表格式 Sheets("打印").Cells.Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNo

13、ne Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone With Selection.Interior .ColorIndex

14、= 0 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Application.ScreenUpdating = False'第一人的工資條直接復制 Sheets("源數(shù)據(jù)").Select Rows("1:2").Select Selection.Copy Sheets("打印").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Opera

15、tion:=xlNone, SkipBlanks _ :=False, Transpose:=False mycount = 1'從第二人開始 For i = 3 To srows prows = Sheets("打印").Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets("打印").Select Rows(2).Select Selection.Copy Rows(prows).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=

16、xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("源數(shù)據(jù)").Select Rows(i).Select Selection.Copy Sheets("打印").Select Rows(prows + 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False mycount = mycount + 1 Next i Applica

17、tion.ScreenUpdating = False Dim rnum As Integer Dim cnum As Integer rnum = Sheets("打印").Cells(Rows.Count, 1).End(xlUp).Row cnum = Sheets("打印").Cells(2, Columns.Count).End(xlToLeft).Column If rnum > 2 And cnum > 1 Then Application.EnableEvents = False Range(Cells(2, 1), Cell

18、s(rnum, cnum).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .W

19、eight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Border

20、s(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Application.EnableEvents = True End If MsgBox "源數(shù)據(jù)共計" & srows - 1 &

21、amp; "人工資記錄,已成功處理" & mycount & "人的工資條格式。", vbOKOnly + 64, "提示"End SubSub prtpre()'打印預(yù)覽 Dim rnum As Integer Dim cnum As Integer rnum = Sheets("打印").Cells(Rows.Count, 1).End(xlUp).Row cnum = Sheets("打印").Cells(2, Columns.Count).End(xlToLeft

22、).Column If rnum > 2 And cnum > 1 Then Application.EnableEvents = False Sheets("打印").Range(Cells(2, 1), Cells(rnum, cnum).PrintPreview Application.EnableEvents = True Else MsgBox "該表格沒有可用記錄,不能預(yù)覽。", vbOKOnly + 64, "提示" End IfEnd SubSub clcontents()'清空內(nèi)容 Sheets("打印").Cells.ClearContents Sheets("打印").Cells.Select Selection.Borders(xlDiagonalDown).LineStyl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論