❶ 怎么样把工资表转变成工资条 ,主要是公司的员工很多,不可能一个一个去复制,谢谢了
Excel具有强大的数据处理和打印输出功能,并且易学易用,是广大用户喜欢使用的电子表格处理软件。现在一些单位的财会人员喜欢用Excel打印本单位的职工工资总表与工资条,但在Excel中要将工资总表手工地转换为工资条则是一件比较烦琐的事。本人从网上收集N种方法,供有这个需要的朋友们参考。其中有的本人经过了实际试验,有的还没有。
一、重新排序法
在Excel2000做成的工资表,只有第一个人有工资条的条头(如编号、姓名、岗位工资,年限工资……),想输出成工资条的形式。怎么做?
解决方法:
(1)、假设原工资表为“表1”,先复制“表1”到某新空白表中,命名为“表2”,删去“表2”中的多余行,使工资条头位于第一行,职工工资数据依次紧排在条头之后。:
(2)、在“表2”工资数据的后一列H中,增加“标注”栏,依次向下填充入1,2,3…等步长为1的序列数。
(3)、选中“表2”工资条头下(工资条头不选)第2至最后一行,右键:插入,表2中将出现许多新增空行,将条头数据填入这些新增空行中(方法:选中A1:G1,右键“复制”,然后选中所有新增空行,右键“粘贴”即可,也可用拖拽填充法)。然后在其“标注”栏中依次填上1.5,2.5,3.5…。等步长为1的序列数。操作结果示意如下:
(4)、再次选中“表2”第2行至最后一行,点击菜单:数据-排序-按“标注”列(递增)排序,点击确定。再选中H“标注”列,右键:“隐藏”或“删除”,这样,工资条即基本制作完毕。
(5)、制作完成的工资条裁开后即可分发给同事了。您如果觉得此表格过于拥挤,还可用类似的方法在每个人之间插入空行。
二、宏命令法
在Excel中新建一个文件,将其命名为“工资表与工资条”,在工作表“sheet1”中输入并编辑好本单位职工工资总表(如表1所示)后,点击“工具”菜单→“宏”→“宏…”→输入宏名“生成工资条”→创建,输入如下的宏的各行文本,输入完成后保存该宏。将工作表“sheet1”复制为另一个工作表“sheet2”中,使“sheet2”成为当前工作表,执行刚才创建的宏,即可很快将表1所示的工资表转换为表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.Insert Shift:=xlDown
'在第2行前插入一行,保持第2行
为选中状态
num=150
'总人数×3,如工资表中有100人则
为100×3即num=300
col=14
'工资表的栏数,如工资表有17栏则
'col=17
num1 = 4
Do While num1 <= num
'循环插入空行
Range(Cells(num1, 1), Cells(num1, col)).Select
'选中第num1行的第1列到第col列
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=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
Do While num2 <= 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
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDash
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlDash
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Copy
Range(Cells(5, 1), Cells(6, col)).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'接上行删除上行尾的连字符
_,复制表格线样式
num3 = 8
Do While num3 <= num
'循环复制表格线样式
Range(Cells(num3, 1), Cells(num3 + 1, col))
.Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
num3 = num3 + 3
Loop
Rows("1:1").Select
'删除多余的一行
Selection.Delete
End Sub
以后每月要打印工资表与工资条时,只需将“工资表与工资条”文件打开,修改好工作表“sheet1”中的当月的工资总表数据后将其复制为工作表“sheet2”,并使“sheet2”成为当前工作表,执行宏“生成工资条”即可。
三、宏命令法(2)
在日常应用中,我们经常遇到这样的操作,每隔相等的几行,要重复做相同的事情。比如做工资条要打印时,每条记录前插入一个标题列;每隔N行的行高,统一调整为X高等。用常规的操作,如果数据少的话还可以承受,但数据量一大,就变成一件苦差事了。
下面这个宏,能够按指定的选择来选择等差行,选选择N至N+M行,然后再运行此宏,就可以选择从N行开始,每隔M行至到数据结束的行了,代码如下:
Sub SelectRange()
'按选择区域给定参数选择等差行
Dim i As Integer, XRan As Range
If Selection.Areas.Count > 1 Then
MsgBox "选择区域应为连续区域!", vbExclamation, "错误"
ElseIf Selection.Row > ActiveSheet.UsedRange.Rows.Count Then
MsgBox "选择区域应在使用区域内!", vbExclamation, "错误"
Else
Set XRan = Rows(Selection.Row)
For i = Selection.Row + Selection.Rows.Count To _
ActiveSheet.UsedRange.Rows.Count Step Selection.Rows.Count
Set XRan = Union(XRan, Rows(i))
Next
XRan.Select
End If
四、宏命令法(3)
Attribute VB_Name = "模块1"
Sub 生成工资条()
Cells.Select
'选择整个表去掉表格线
Range("F1").Activate
Selection.Borders(xlDiagonalDown).LineStyle = 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.Insert Shift:=xlDown
'在第2行前插入一行,保持第2行为选中状态
num = ((ActiveSheet.UsedRange.Rows.Count) - 2) * 3
'这个数字是工资表中总人数乘以3,例如工资表中有20人,就是num=60
col = ActiveSheet.UsedRange.Columns.Count
'这个数字是工资表中的列数,例如工资表中有20列,就是col=20
num1 = 4
Do While num1 <= num
'循环插入空行
Range(Cells(num1, 1), Cells(num1, col)).Select
'选中第num1行的第1列到第col列
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=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
Do While num2 <= 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
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDash
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlDash
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Copy
Range(Cells(5, 1), Cells(6, col)).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'接上行删除上行尾的连字符_,复制表格线样式
num3 = 8
Do While num3 <= num
'循环复制表格线样式
Range(Cells(num3, 1), Cells(num3 + 1, col)).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
num3 = num3 + 3
Loop
Rows("1:1").Select
'删除多余的一行
Selection.Delete
End Sub
❷ 怎样把工资表变成工资条最简单
此处假定学生成绩保存在Sheet1工作表的A1至M64单元格区域中,其中第1行为标题,第2行为学科名称。 (+1 第三行起)1.切换到Sheet2工作表中,选中A1单元格,输入公式:=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,sheet1!A$1,INDEX(sheet1!$A:$M,INT(((ROW()+4)/3)+1),COLUMN())))。
=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$M,INT(((ROW()+4)/3)),COLUMN())))
完善版
=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,IF(ISBLANK(INDEX(Sheet1!$A:$M,INT(((ROW()+4)/3)),COLUMN())),"",INDEX(Sheet1!$A:$M,INT(((ROW()+4)/3)),COLUMN()))))(m列为右端的边界)2.再次选中A1单元格,用“填充柄”将上述公式复制到B1至M1单元格中;然后,再同时选中A1至M1单元格区域,用“填充柄”将上述公式复制到A2至M185单元格中。 至此,成绩条基本成型,下面简单修饰一下。 3.调整好行高和列宽后,同时选中A1至M2单元格区域(第1位学生的成绩条区域),按“格式”工具栏“边框”右侧的下拉按钮,在随后出现的边框列表中,选中“所有框线”选项,为选中的区域添加边框(如果不需要边框,可以不进行此步及下面的操作)。 4.同时选中A1至M3单元格区域,点击“常用”工具栏上的“格式刷”按钮,然后按住鼠标左键,自A4拖拉至M186单元格区域,为所有的成绩条添加边框。 按“打印”按钮,即可将成绩条打印出来。
自己写的成绩条 工资条和它差不多吧 希望对你有用
❸ 如何将工资条转为工资表
用Excel打印工资条,归根结底就是让Excel制造的工资表格中,一行工资详目数据,一行员工的记载。假如在每一个员工数据的上面插进一行工资详目数据显然我们的请求也就完成了,当然纯手工的一行一行插入显然是个“不可能完成的义务”,这里须要有点小技能。
这上面有详细讲解步骤,你可以看一下http://www.360doc.com/content/10/1129/15/1189724_73442473.shtml
❹ 用EXCEL表做的工资表,有没有巧妙的方法转成工资条
1
用EXECL的函数
我们知道工资条有两行,第一行表示项目(也就图1中的标题行),第二行表示各项明细,但是实际上,
为了裁剪方便,两个工资条之间有一空行,所以工资条中就有第一行为标题,第二行为明细,第三行为空白,也就是说这一行的行号除3余数来决定每一行的内容。
我们新建一个工作表,这里要用到几个函数:IF、MOD、INT、INDEX,前几个函数比较好理解,也许你用过,介绍一个INDEX,它返回表格或区域中的数值或对数值的引用。它有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。我们这里用到引用,所以介绍人一下其函数参数INDEX(reference,row_num,column_num,area_num),Reference为对一个或多个单元格区域的引用。我们这里为工资汇总表
,Row_num为引用中某行的行序号,函数从该行返回一个引用,Column_num为引用中某列的列序号,函数从该列返回一个引用,需注意的是Row_num、column_num
和
area_num
必须指向
reference
中的单元格;否则,函数
INDEX
返回错误值
#REF!。
由于工资条的第一、三行(这里是指行号被3除后的余数)引用是不变的,而第二行的值要发生变化,这样才能打出每一个人的工资条,仔细观察,你会发现工资条第2行对应于工资汇总第2行,工资条第5行对应于工资汇总第3行,工资条第8行对应于工资汇总第4行,可以通过现在行号来得到引用行号int((row()+4)/3)
根据以上分析,可以在工资条工作表的A1中输入下列公式=IF(MOD(ROW(),3)=0,"
",IF(MOD(ROW(),3)=1,工资汇总!$A$1,INDEX(工资汇总!$A:$L,INT((ROW()+4)/3),COLUMN()))),注意这里对表格单元格的引用是绝对引用,选中A1向下拉出第一列,向右拉出第一行,在向右拉出的第一行上,必须更改“工资汇总!$A$1”的引用,分别改成与所在行对应的列数,比如C列改成工资汇总!$C$1;这里如果你想不让某一栏数据显示,只要设置不出现这一列的列标,然后再分别向下拉出每一列的数据。再设置边框格式,就得到如图2所示的工资条。
在EXECL中我们还可以建立宏来做这样的事情,也可以使用lookup这个函数来实现这个功能。
❺ excel表格如何将工资表变成工资条
其实用Excel打印工资条,归根结底就是让Excel制作的工资表格中,一行工资细目数据,一行员工的记录。如果在每一个员工数据的上面插入一行工资细目数据显然我们的要求也就完成了,当然纯手工的一行一行插入显然是个“不可能完成的任务”,这里需要有点小技巧。
第一步:在工资细目的右侧两列中,交叉输入任意数字(主要是为了后面的“空位”空值,所以数字可任意输),然后选中交叉的四个单元格,双击右下角的“填充柄”,使这种格式一直填充至工资表的结束行。第二步填充数据:执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮。
广州越秀会计培训学校小编提醒你:第三步需要定位空行:执行“插入”→“行”命令,这时便会从第三行开始,每一行的前面插入了一个空行。
第四步:复制表头的工资细目数据,选中工资表A列的数据区域,执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮,这时会选中刚插入的空行,执行“编辑”→“粘贴”命令,这时工资条就算制作完成了。
❻ 如何将excel的工资表转换为工资条
软件版本:Office2007
可以利用公式,将Excel中的工资表转换为工资条,方法如下:
1.将下面的工资表转换成工资条: