用EXCEL制作工资条的五种方法

上传人:平*** 文档编号:18605305 上传时间:2017-11-15 格式:DOC 页数:6 大小:46.10KB
返回 下载 相关 举报
用EXCEL制作工资条的五种方法_第1页
第1页 / 共6页
用EXCEL制作工资条的五种方法_第2页
第2页 / 共6页
用EXCEL制作工资条的五种方法_第3页
第3页 / 共6页
用EXCEL制作工资条的五种方法_第4页
第4页 / 共6页
用EXCEL制作工资条的五种方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《用EXCEL制作工资条的五种方法》由会员分享,可在线阅读,更多相关《用EXCEL制作工资条的五种方法(6页珍藏版)》请在金锄头文库上搜索。

1、用 EXCEL 制作工资条的五种方法 (2007-07-14 17:44:58)转载一、重新排序法在 Excel2000 做成的工资表,只有第一个人有工资条的条头(如编号、姓名、岗位工资,年限工资) ,想输出成工资条的形式。怎么做?解决方法:(1) 、假设原工资表为“表 1”,先复制“表 1”到某新空白表中,命名为“表 2”,删去“表 2”中的多余行,使工资条头位于第一行,职工工资数据依次紧排在条头之后。:(2) 、在“表 2”工资数据的后一列 H 中,增加“标注”栏,依次向下填充入 1,2,3等步长为 1 的序列数。(3) 、选中“表 2”工资条头下(工资条头不选)第 2 至最后一行,右键:

2、插入,表 2 中将出现许多新增空行,将条头数据填入这些新增空行中(方法:选中 A1:G1,右键“复制” ,然后选中所有新增空行,右键 “粘贴”即可,也可用拖拽填充法) 。然后在其“标注”栏中依次填上 1.5,2.5,3.5。等步长为 1 的序列数。操作结果示意如下:(4) 、再次选中“表 2”第 2 行至最后一行,点击菜单:数据-排序- 按“标注”列(递增)排序,点击确定。再选中 H“标注”列,右键:“隐藏”或“删除” ,这样,工资条即基本制作完毕。(5) 、制作完成的工资条裁开后即可分发给同事了。您如果觉得此表格过于拥挤,还可用类似的方法在每个人之间插入空行二、宏命令法(1)Sub 生成工资

3、条()Cells.Select选择整个表去掉表格线Range(F1).ActivateSelection.Borders(xlDiagonalDown).LineStyle = xlNoneSelection.Borders(xlDiagonalUp).LineStyle = xlNoneSelection.Borders(xlEdgeLeft).LineStyle = xlNoneSelection.Borders(xlEdgeTop).LineStyle = xlNoneSelection.Borders(xlEdgeBottom).LineStyle = xlNoneSelection.

4、Borders(xlEdgeRight).LineStyle = xlNoneSelection.Borders(xlInsideVertical).LineStyle = xlNoneSelection.Borders(xlInsideHorizontal).LineStyle = xlNoneRows(2:2).Select选择第 2 行Selection.Insert Shift:=xlDown在第 2 行前插入一行,保持第 2 行为选中状态num = (ActiveSheet.UsedRange.Rows.Count) - 2) * 3这个数字是工资表中总人数乘以 3,例如工资表中有

5、20 人,就是 num=60col = ActiveSheet.UsedRange.Columns.Count这个数字是工资表中的列数,例如工资表中有 20 列,就是 col=20num1 = 4Do While num1 = num循环插入空行Range(Cells(num1, 1), Cells(num1, col).Select选中第 num1 行的第 1 列到第 col 列Selection.Insert Shift:=xlDownSelection.Insert Shift:=xlDownnum1 = num1 + 3LoopRange(Cells(1, 1), Cells(1, c

6、ol).SelectApplication.CutCopyMode = False剪切复制模式无效Selection.Copy复制选择区域Range(A2).Select选择 A2 单元格ActiveSheet.Paste从 A2 单元格起粘贴内容num2 = 5Do While num2 = num循环插入标题行Range(Cells(1, 1), Cells(1, col).SelectApplication.CutCopyMode = FalseSelection.CopyCells(num2, 1).SelectActiveSheet.Pastenum2 = num2 + 3LoopR

7、ange(Cells(2, 1), Cells(3, col).SelectApplication.CutCopyMode = FalseSelection.Borders(xlDiagonalDown).LineStyle = xlNone定义表格边框线、内线样式Selection.Borders(xlDiagonalUp).LineStyle = xlNoneWith Selection.Borders(xlEdgeLeft).LineStyle = xlDouble.Weight = xlThick.ColorIndex = xlAutomaticEnd WithWith Selecti

8、on.Borders(xlEdgeTop).LineStyle = xlDouble.Weight = xlThick.ColorIndex = xlAutomaticEnd WithWith Selection.Borders(xlEdgeBottom).LineStyle = xlDouble.Weight = xlThick.ColorIndex = xlAutomaticEnd WithWith Selection.Borders(xlEdgeRight).LineStyle = xlDouble.Weight = xlThick.ColorIndex = xlAutomaticEnd

9、 WithWith Selection.Borders(xlInsideVertical).LineStyle = xlDash.Weight = xlThin.ColorIndex = xlAutomaticEnd WithWith Selection.Borders(xlInsideHorizontal).LineStyle = xlDash.Weight = xlThin.ColorIndex = xlAutomaticEnd WithSelection.CopyRange(Cells(5, 1), Cells(6, col).SelectSelection.PasteSpecial P

10、aste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False接上行删除上行尾的连字符_,复制表格线样式num3 = 8Do While num3 = num循环复制表格线样式Range(Cells(num3, 1), Cells(num3 + 1, col).SelectSelection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=Falsenum3 = num3 + 3LoopRows(1:1)

11、.Select删除多余的一行Selection.DeleteEnd Sub三宏命令法(2)对于标题行表头是两行者适用Sub 宏 1() 宏 1 Macro lsf 记录的宏 2004-4-13i = Selection.Row - 1For j = 1 To i - 1Rows(1:2).SelectApplication.CutCopyMode = FalseSelection.Copy Rows(j * 4).SelectSelection.Insert Shift:=xlDownApplication.CutCopyMode = FalseSelection.Insert Shift:=

12、xlDownNextEnd Sub四还有一种方法打开初始的工资表,在工具栏上单击右键,打开控件工具箱选定“命令按钮”在适当的位置添加两个命令按钮,最好选择工资表以外的区域,这样不会影响工资表的打印效果在“控件工具箱”中选择“设计模式” ,然后右键单击第一个命令按钮,选择“属性” ,在弹出窗口中将该命令按钮的名称设为“btnInsert” ,Caption 选项设为“插入表头” ,如图所示按同样方法,将第二个命令按钮的名称设为“btnDelete ”,Caption 选项设为“删除表头”选定“插入表头”按钮,右键单击,选择“察看代码” ,会弹出以下的窗口单击“插入”菜单,选择“模块” ,会弹出一

13、个模块 1 的代码编辑窗口在代码编辑窗口中输入下列代码,并保存(可以直接从文件中复制后在编辑窗口中粘贴)Sub InsertHeader()Dim r As Long, LastRow As LongApplication.ScreenUpdating = FalseLastRow = Sheet1.Range(A65536).End(xlUp).Rowr = 5LastRow = LastRow - r + 1For i = 1 To LastRowSheet1.Rows(3).CopySheet1.Rows(r).Insert Shift:=xlDownr = r + 2Next iApp

14、lication.CutCopyMode = FalseApplication.ScreenUpdating = TrueEnd SubSub DeleteHeader()Dim r As Long, LastRow As LongApplication.ScreenUpdating = FalseLastRow = Sheet1.Range(A65536).End(xlUp).Rowr = 5 LastRow = (LastRow - r + 1) / 2For i = 1 To LastRowSheet1.Rows(r).Deleter = r + 1Next iApplication.S

15、creenUpdating = TrueEnd Sub将模块代码编辑窗口关闭,在“sheet1(工资表) ”的代码编辑窗口中输入以下代码并保存Private Sub btnInsert_Click()InsertHeaderbtnDelete.Enabled = TruebtnInsert.Enabled = FalseEnd SubPrivate Sub btnDelete_Click()DeleteHeaderbtnInsert.Enabled = TruebtnDelete.Enabled = FalseEnd SubPrivate Sub Worksheet_SelectionChan

16、ge(ByVal Target As Range)End Sub五.公式法新建一 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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号