当前位置:首页 > 新闻资讯 > 科技生活 > 新闻
办公达人堂
  • 2017/6/9 14:34:33
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:电脑报
  • 作者:
【电脑报在线】当前批量打印工资条主要有3种方法,你知道它们各自的优缺点吗?

财会

按人头批量打印工资条

@重庆唐子涵

       当前批量打印工资条主要有3种方法,你知道它们各自的优缺点吗?

方法1:借助邮件合并功能

       在Excel中创建一个工作表,在第一行中依次输入标题名称,例如序号、姓名、岗位工资、工龄工资等,在第二行依次输入每人的工资数据,数据输入并完成计算之后,以“工资表”为名保存。在Word中新建一个文件,页面设置为A4纸,按照应打印工资项目的名称,制作出一个表格,在一页纸中设计能打印3~4个工资条,将其另存为模板备用。

      用工资条模板再新建一个Word文档,右键单击工具栏,选择“邮件合并”命令,打开“邮件合并”工具栏,点击“打开数据源”按钮,在打开对话框中双击存放的数据表,打开“选择表格”对话框,选中包含有数据的工作表,点击“确定”按钮,将光标插入表格第一个项目的位置,例如序号下的单元格,点击“邮件合并”工具栏中的“插入域”按钮,再选择“数据库域”→ “序号”,点击“插入”按钮就可以将序号合并域插入到表格中。

      以上操作完成后,将光标放入表格第二个项目的位置,例如“姓名”下的单元格,再次打开“插入合并域”对话框,再选中“姓名”选项,点击“插入”按钮。重复上面的操作将所有合并域插入工资条中的对应位置。最后,点击“邮件合并”工具栏中的“合并到新文档”按钮,在打开的对话框中选择合并范围。如果需要生成所有员工的工资条,可以选中“全部”选项;打印当前记录时可选中“当前记录”选项即可。

      这个方法操作简单没有上手门槛,但数据多了比较繁琐。

 

方法2:借助VBA

在工作表中按组合键“Alt+F11”调出VBA对话框,输入如下代码:

Sub 工资条()

'yianxss

Dim i&, Mxrow&

Sheets(1).[a1].CurrentRegion.Copy Sheets(2).[a1] '备份数据

With Sheets(2)

    Mxrow = .Cells(.Rows.Count, 1).End(3).Row

    For i = Mxrow To 3 Step -1 '插入空行

        .Rows(i & ":" & i).Insert Shift:=xlDown

    Next

    .Rows("1:1").Copy '复制表头

    .Range("a2:a" & .Cells(.Rows.Count, 1).End(3).Row). _

    SpecialCells(xlCellTypeBlanks).Select '定位空行

    .Paste '粘贴表头

    .[a1].Select

End With

End Sub

需要注意的是,借助VBA虽然非常方便,但难度较高,许多初级财会根本不会代码且看到看到代码就头疼。

 

方法3:借助公式

      新建一个Excel文件,在Sheet1中存放工资表的原始数据,假设第一行是标题,从第二行开始是每个人的工资,且有X列。在文件底部切换到Sheet2中,在A1单元格中输入公“=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$N,INT((ROW()+4)/3),COLUMN())))”,之后将鼠标放在A1单元格的右下角,当鼠标变成十字星时,向右拖动鼠标自动填充至X列,这样工资条中的第一行就出来了。选定A1:X1,把鼠标放在X1单元格的右下角,鼠标再次变成十字星时,向下拖动鼠标自动填充到数据的最后一行,工资条就全部制作完成了。

    该公式运用IF函数,对MOD函数所取的引用行号与3的余数进行判断。如果余数为0,则产生一个空行;如果余数为1,则固定取Sheet1中第一行的内容;否则运用INDEX函数和INT函数来取Sheet1对应行上的数。

    这个方法比方法2简单,比方法1难。

 

本文出自2017-06-05出版的《电脑报》2017年第22期 A.新闻周刊
(网站编辑:pcw2013)


我来说两句(0人参与讨论)
发表给力评论!看新闻,说两句。
匿名 ctrl+enter快捷提交
读者活动
48小时点击排行
论坛热帖