如何使用Excel进行工资条的制作,也许有些网友使用已经很长时间了,但如何更快更好的做出漂亮的工资条,看看作者的方法吧。
“小问题难倒老财务”,也许你已经在财务口上工作多年,也许你天天都要面对Excel那张老脸,也许你已经习惯了用工资明细表做员工工资统计并向上级汇报,把表中的条目一条条复制粘贴后打印发给每个员工。可你是否想过,找一个更简单更有效率的方法?看起来这似乎有些困难:在工资明细表中,工资的项目(即表头)一般只出现在表格开头的某一行,而在工资条中,为了便于阅读则要求每个人的工资都有表头,那么如何巧妙地把工资明细表制作成便于打印的工资条呢?如图所示,这就是我们要完成的工作(原工资表见图1,转换成工资条后的效果见图2):
图1 原工资表
图2 转换后效果
“条条大路通罗马”,不过路有远近之分,方法也有难易之别,这里给大家提供三种最简单易用的方法。
方法一:宏命令控制法
对于Office家族的宏功能,大家或许早有耳闻,但由于需要使用VBA进行编程,所以宏一直让许多人望而却步,不过要使用一个现成的宏就简单多了。首先打开要处理的Excel表,选择“工具→宏→Visual Basic 编辑器”,在编辑器左边的窗口中用鼠标双击Sheet1,会出现代码编辑窗口,在代码编辑窗口输入如下代码(为了不破坏原有的工资表,所以这里采用了将 Sheet1的内容复制到Sheet2的方法,所以最后的生成结果是在Sheet2中显示):
Sub MakeSalaryList()
Dim i As Integer
Dim endrow As Integer
'测出数据的最后一行
endrow = Sheet1.Range("a65536").End(xlUp).Row - 1
'把标题贴过去
Worksheets(1).Range("1:1").Copy (Worksheets(2).Cells(1, 1))
For i = 3 To endrow
'把每条数据抬头贴过去
Worksheets(1).Range("2:2").Copy (Worksheets(2).Cells(3 * i - 7, 1))
'把数据贴过去
Worksheets(1).Range(Cells(i, 1), Cells(i, 256)).Copy (Worksheets(2).Cells(3 * i - 6, 1))
Next i
End Sub
关闭编辑器,将自动返回到刚才的Excel表,选择“工具→宏→宏”,将弹出如下对话框:(见图3)
图3 添加宏
点击“执行”,将在Sheet2生成如Gz-2所示的转换成工资条,怎样,不复杂吧。当然,如果你的表总Sheet2已经输入了别的内容,就可以将他复制到Sheet3来生成,代码修改也很简单,把其中的Sheet2修改成Sheet3就可以了,其它代码不变。
1.个人认为,工资条打印一般是都横向的A4纸,所以我把页面方向改成横向
2.在word里作工资条
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
(和工资表的格式是一模一样的。我直接在EXCEL里复制过来。)
3.打开工具->信
函
关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函
和邮件->邮件合并(这时跳出的是向导。)
4.下一步启动文档->下一步选取收件人->点"浏览"->打开数据源(目录)->下一步攒写信函->"其他先项"->插入哉(插入到相应的位置->下一步预览信函->完成合并->编辑个人信函
5.大家看到的工资条的生成是一页一条,我们把它设置一下:
先中所有页, 页面设置->版式->节的起始位置 "接续本页"->应用于 "整篇文章"
完成了
新插入一个工作表
在A1输入以下公式(可复制以下内容)
=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,INDEX(清单!$A:$GH,INT((ROW()+4)/3),COLUMN())))
如果有两行项目可以使用下面公式:
=IF(MOD(ROW(),4)=0,"",IF(MOD(ROW(),4)=1,清单!A$1,IF(MOD(ROW(),4)=2,清单!A$2,INDEX(清单!$A:$GF,INT((ROW()+9)/4),COLUMN()))))
然后向右向下拖拉复制公式。
其中"清单"为工资表的表名,可在公式里修改。
工资条间距离需要自己设置
本工资簿包含两张工资表。
第1张工资表就是工资清单,称为"清单"。它第一行为标题行包括职工姓名、各工资细目。
第2张工作表就是供打印的表,称为"工资条"。它应设置为每三行一组,每组第一行为标题,第二为姓名和各项工资数据,第三行为空白行。就是说整张表被3除余1的行为标题行,被3除余2的行为包括职工姓名、各项工资数据的行,能被3整除的行为为空行。
在某一单元格输入套用函数"=MOD(ROW(),3)",它的值就是该单元格所在行被3除的余数。因此用此函数能判别该行是标题行、数据行还是空行。
在A1单元格输入公式"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,"value-if-false"))"并往下填充,从A1单元格开始在A列各单元格的值分别为清单A1单元格的值即姓名、value-if-false、空白,姓名、value-if-false、空白,……。其中value-if-false表示MOD(ROW(),3)既不等于0又不等于1时,即它等于2时应取的值。它可用如下函数来赋值:"INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"。INDEX()为一查找函数它的格式为:INDEX(reference,row-num,col-num),其中reference为查找的区域,本例中为清单表中的A到G列,即函数中的"清单!$A:$G",row-num为被查找区域中的行序数即函数中的INT((ROW()+4)/3),col-num为被查找区域中的列序数即函数中的COLUMN()。第2、5、8…….行的行号代入INT((ROW()+4)/3)正好是2、3、4……,COLUMN()在A列为1。因此公式"=INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"输入A列后,A2、A5、A8……单元格的值正好是清单A2、A3、A4……,单元格的值。这样,表的完整的公式应为"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())))"。把此公式输入A1单元格,然后向下向右填充得到了完整的工资条表。
为了表格的美观还应对格式进行设置,一般习惯包括标题、姓名等文字在单元格中要取中,数字要右置,数字小数点位数也应一致,还有根据个人的爱好设置边框。本表格只需对一至三行的单元格进行设置,然后通过选择性格式设置完成全表的设置。
用Excel巧转工资条
[size=2][color=Red]Excel具有强大的数据处理和打印输出功能,并且易学易用,是广大用户喜欢使用的电子表格处理软件。现在一些单位的财会人员喜欢用Excel打印本单位的职工工资总表与工资条,但在Excel中要将工资总表(手工地转换为工资条则是一件比较烦琐的事,下面是我编写的一个Excel宏,运行这个宏就可将编辑好了的工资总表很方便地转换为工资条打印输出。
在Excel中新建一个文件,将其命名为“工资表与工资条”,在工作表“sheet1”中输入并编辑好本单位职工工资总表(后,点击“工具”菜单→“宏”→“宏…”→输入宏名“生成工资条”→创建,输入如下的宏的各行文本,输入完成后保存该宏。将工作表“sheet1”复制为另一个工作表“sheet2”中,使“sheet2”成为当前工作表,执行刚才创建的宏,即可很快将表1所示的工资表转换为表2所示的工资条。 [/color][/size]
[color=Blue][size=2]宏的内容如下:
Sub生成工资条()
Cells.Select
'选择整个表去掉表格线
Range("F1").Activate
Selection.Borders(xlDiagonalDown).Line
Style=xlNone
Selection.Borders(xlDiagonalUp).LineStyle=xlNone
Selection.Borders(xlEdgeLeft).LineStyle=xlNone
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
Rows("2:2").Select
'选择第2行
Selection.InsertShift:=xlDown
'在第2行前插入一行,保持第2行
为选中状态
num=150
'总人数×3,如工资表中有100人则
为100×3即num=300
col=14
'工资表的栏数,如工资表有17栏则
'col=17
num1=4
DoWhilenum1<=num
'循环插入空行
Range(Cells(num1,1),Cells(num1,col)).Select
'选中第num1行的第1列到第col列
Selection.InsertShift:=xlDown
Selection.InsertShift:=xlDown
num1=num1+3
Loop
Range(Cells(1,1),Cells(1,col)).Select
Application.CutCopyMode=False
'剪切复制模式无效
Selection.Copy
'复制选择区域
Range("A2").Select
'选择A2单元格
ActiveSheet.Paste
'从A2单元格起粘贴内容
num2=5
DoWhilenum2<=num
'循环插入标题行
Range(Cells(1,1),Cells(1,col)).Select
Application.CutCopyMode=False
Selection.Copy
Cells(num2,1).Select
ActiveSheet.Paste
num2=num2+3
Loop
Range(Cells(2,1),Cells(3,col)).Select
Application.CutCopyMode=False
Selection.Borders(xlDiagonalDown).LineStyle
=xlNone
'定义表格边框线、内线样式
Selection.Borders(xlDiagonalUp).LineStyle=xlNone
WithSelection.Borders(xlEdgeLeft)
.LineStyle=xlDouble
.Weight=xlThick
.ColorIndex=xlAutomatic
EndWith
WithSelection.Borders(xlEdgeTop)
.LineStyle=xlDouble
.Weight=xlThick
.ColorIndex=xlAutomatic
EndWith
WithSelection.Borders(xlEdgeBottom)
.LineStyle=xlDouble
.Weight=xlThick
.ColorIndex=xlAutomatic
EndWith
WithSelection.Borders(xlEdgeRight)
.LineStyle=xlDouble
.Weight=xlThick
.ColorIndex=xlAutomatic
EndWith
WithSelection.Borders(xlInsideVertical)
.LineStyle=xlDash
.Weight=xlThin
.ColorIndex=xlAutomatic
EndWith
WithSelection.Borders(xlInsideHorizontal)
.LineStyle=xlDash
.Weight=xlThin
.ColorIndex=xlAutomatic
EndWith
Selection.Copy
Range(Cells(5,1),Cells(6,col)).Select
Selection.PasteSpecialPaste:=xlFormats,Operation:=xlNone,SkipBlanks:=_
False,Transpose:=False
'接上行删除上行尾的连字符
_,复制表格线样式
num3=8
DoWhilenum3<=num
'循环复制表格线样式
Range(Cells(num3,1),Cells(num3+1,col))
.Select
Selection.PasteSpecialPaste:=xlFormats,Operation:=xlNone,SkipBlanks:=_
False,Transpose:=False
num3=num3+3
Loop
Rows("1:1").Select
'删除多余的一行
Selection.Delete
EndSub
以后每月要打印工资表与工资条时,只需将“工资表与工资条”文件打开,修改好工作表“sheet1”中的当月的工资总表数据后将其复制为工作表“sheet2”,并使“sheet2”成为当前工作表,执行宏“生成工资条”即可。[/size][/color]