急!请问怎样用excel中的函数自动生成工资条?
发布网友
发布时间:2022-04-23 09:06
我来回答
共4个回答
热心网友
时间:2023-10-09 01:20
其实用Excel打印工资条,归根结底就是让Excel制作的工资表格中,一行工资细目数据,一行员工的记录。如果在每一个员工数据的上面插入一行工资细目数据显然我们的要求也就完成了,当然纯手工的一行一行插入显然是个“不可能完成的任务”,这里需要有点小技巧。
第一步:在工资细目的右侧两列中,交叉输入任意数字(主要是为了后面的“空位”空值,所以数字可任意输),然后选中交叉的四个单元格,双击右下角的“填充柄”,使这种格式一直填充至工资表的结束行
填充数据
第二步:执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮
定位空行
第三步:执行“插入”→“行”命令,这时便会从第三行开始,每一行的前面插入了一个空行。
第四步:复制表头的工资细目数据,选中工资表A列的数据区域,执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮,这时会选中刚插入的空行,执行“编辑”→“粘贴”命令,这时工资条就算制作完成了
热心网友
时间:2023-10-09 01:20
很简单:1、新建一工作表,第一行复制表头,从第二行A2开始,输入公式:=工资明细表!A2(假设你的工资表名称是工资明细表,第一个人的工资数据从第二行A2开始到101行,X列,即100个员工),拖动A2填充柄,向右向下到101行X列(行可多)。2、从第三行开始,每两行数据之间插入三行空白行(或两行,自己看情况,另外,只需将鼠标单击数据行第一个单元格,按F4即可重复上一次的操作,空行数应该是3*99),然后将标题行复制到三行空白行中间行,然后调整好行间距,选中这三行,往下复制98次即可。这样即可生成所需工资表。需要注意的是,这种情况下,工资明细表中的数据如果删人即删行,不要删除,可将所删人员以下所有人员数据选中,复制到所删人员位置覆盖,再删除最后一个人,而且不要用剪切。另外,如果你对数据库比较了解,可简单做一报表,将EXCEL中数据连到数据库中更省事。
热心网友
时间:2023-10-09 01:21
在另一工作表中输入函数:
=IF(MOD(ROW(),3)=1,工资表!A$1,IF(MOD(ROW(),3)=2,OFFSET(工资表!A$1,ROW()/3+1,0),""))
然后将公式向右填充到工作表最右端,再将整行的公式向下填充至第3行,将1至2行加边框,最后将1至3行选中,向下填充至最下面一行。
热心网友
时间:2023-10-09 01:21
以下的宏可以帮助你,不过是表头是从第二行开始
Sub MakeSalaryList()
Dim i As Integer
Dim endrow As Integer
'测出数据的最后一行
endrow = Sheet1.Range("a65536").End(xlUp).Row
'把标题贴过去
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
Sub MakeSalaryList()
Dim a, i As Integer
a = Application.WorksheetFunction.CountA(Worksheets("表格名称").Columns(1)) - 1
Range("A1:G1").Select
Application.CutCopyMode = False
For i = 1 To a * 2 - 1
Selection.Copy
If i = 1 Then
i = i + 2
Else
i = i + 1
End If
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
Next i
End Sub