设为首页 登录 注册
首页 中人社区 中人博客
查看: 54893|回复: 107
打印 上一主题 下一主题

[分享] 用 Excel 制作漂亮的工资条的方法

  [复制链接]
haoed 中人网电话实名  HR9万友 

103

主题

44

听众

9万

积分

版主

好的是啥来着

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 1517 天

[LV.Master]伴坛终老

注册时间
2007-1-19
最后登录
2020-12-1
积分
99399
精华
11
主题
103
帖子
3820

晒图达人勋章 最佳辩手 办公室点名活动小金人 2011纪念勋章 论坛群英谱

跳转到指定楼层
楼主
发表于 2011-4-26 17:40:03 |只看该作者 |倒序浏览
  • 此文介绍了如何使用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就可以了,其它代码不变。

    方法二:公式填充法
      相比宏命令,公式填充法更便于理解,不过需要手工操作的步骤稍微多一些,“鱼和熊掌不可得兼”,要用哪种方法就看你的爱好了。
      首先打开要操作的Excel工资表,为了不破坏原表(Sheet1)结构,我们仍然采用在Sheet2中进行操作的方法。由于这个工资表一共有L列,18行,要复制的表头项目在第二行,所以在第一个单元格中输入如下公式: 

    =IF(MOD(ROW(),2)=0,INDEX(sheet1!$A: $L,INT(((ROW()+1)/2))+2,COLUMN()),sheet1!A$2)

      接下来的工作就简单了,我们只要使用填充柄将此公式填充到其它单元格,列向填充到L列,行填充到18行就大功告成。  因为在不同的表格中这个公式需要修改的地方比较多,所以这里做一下解释:
      由于工资条中的奇数行都是表头,偶数行是数据,所以在这个公式中首先进行奇偶行判断,若是奇数行,直接取工资表的A2单元格数据(即公式中的 sheet1!A$2,如果表头数据在第4行第三列则修改为sheet1!C$4)。若是偶数行,则用INDEX()函数来取数。该函数的第一个参数是指定工资表中的一个取数区域(即sheet1!$A: $L,如果不是从A到L列,那么可以修改这个参数,如修改为sheet1!$B$P ,就表示在B到P列之间取数)。当然,如果你想把转换后的数据放在Sheet3而不是Sheet2中,那么,只要在Sheet3中执行以上操作就可以了,并不需要修改公式的内容(见图4)。
                                图4 公式填充法

      采用这种方法不能自动插入空行,给打印后的裁减带来了一定的麻烦,所以,建议在做完后在全选所有单元格,通过调整行高和列宽来解决这个问题。

    方法三:Word邮件合并法

      对于宏和公式运用不太熟练的朋友别着急,这里还有一招等着你。
      首先我们确定好主文档(工资条表格)和数据源(Excel或Access格式的记录表),然后通过“邮件合并”向导把数据源中的的字段信息合并进来。
      点击“工具→信函与邮件→邮件合并”,然后在屏幕右侧进入“邮件合并”向导。
      第一步:选择文档类型。选择“信函”。
      第二步:选择开始文档。选择默认的“使用当前文档”。
      第三步:选取收件人。单击“使用现有列表”区的“浏览”按钮,通过“选择数据源”对话框,定位格式数据源的存放位置,选中并打开。接着弹出“邮件合并收件人”对话框,在这里可以指定参与邮件合并的记录,选择默认的“全部”,确定返回Word编辑窗口。
      第四步:撰写信函。将插入点定位于表格的第二行第一格内,单击“邮件合并”工具栏上“插入Word域”左边的“插入域”按钮,打开“插入合并域”对话框,选中“域”下方列表框中的“序号”字段,并单击“插入”按钮,即可把“序号”字段合并到主文档中。然后用同样的方法把其余字段插入到主文档表格中对应的位置即可。
      第五步:预览信函。在这里我们可以浏览一下工资条的大致效果,还可以调整“姓名”表格的宽度,让姓名在一行内显示。然后选中“姓名”后的表格区域,单击鼠标右键在弹出的菜单中选择“平均分布各列”,让这些列具有相同的宽度,使工资条更美观。如果这样直接进入打印操作,一页纸只能打印一个工资条,所以选中整个工资条表格,复制,粘贴到原表格下方空一行后的地方,把插入点定位于主文档中第一和第二个表格之间的空行处,单击“邮件合并”工具栏上的“插入Word域”按钮,在弹出的菜单中选择“下一记录”命令,以此类推,就可以在一页纸上多排几个工资表,充分利用资源了。
      最后进入第六步:完成合并。然后把工资条打印出来,就制作完成了(见图5)。
    图5 完成

      OK,再也不用费力地重复劳动专门制作工资条数据表了,通过简单的转化一个数据表就实现了两项完全不同的功能,赶快操练一下吧。


后记:这三个方法看完,还是没完全搞懂。
5楼有发一个简单点的,希望对大家有帮助。

本帖最后由 haoed 于 2011-4-26 18:19 编辑

已有 2 人评分威望 金钱 收起 理由
lioyoo + 10 很给力啊~
一锋化千羽 + 8 + 15 呵呵,辛苦了,谢谢分享

总评分: 威望 + 8  金钱 + 25   查看全部评分

企业最应该防止的是人才的“逆淘汰”,优秀人才不断流失,平庸之辈赶也赶不走。所以主动离职的虽然有点“不忠”,但是很可能都是超出该岗位能力要求的优秀人才;长期呆下来的虽然“忠诚”,但是很可能是安于现状碌碌 ...

66

主题

16

听众

5万

积分

版主

版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 291 天

[LV.8]以坛为家I

注册时间
2010-12-3
最后登录
2023-8-25
积分
56505
精华
7
主题
66
帖子
2726

妙笔生花勋章

沙发
发表于 2011-4-26 17:46:27 |只看该作者
重新又发了一次?谢谢分享!

点评

haoed  偶自己也在研究,还没完全弄明白  发表于 2011-4-26 17:47  回复
真的快HOLD不住了!
回复

使用道具 举报

66

主题

16

听众

5万

积分

版主

版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 291 天

[LV.8]以坛为家I

注册时间
2010-12-3
最后登录
2023-8-25
积分
56505
精华
7
主题
66
帖子
2726

妙笔生花勋章

板凳
发表于 2011-4-26 17:56:07 |只看该作者
不怎么会用宏。。。
真的快HOLD不住了!
回复

使用道具 举报

14

主题

17

听众

1万

积分

版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 267 天

[LV.8]以坛为家I

注册时间
2010-9-22
最后登录
2023-4-18
积分
19767
精华
0
主题
14
帖子
1354
地板
发表于 2011-4-26 17:56:09 |只看该作者
经典,上次偶专门研究,都没弄会,谢谢分享。
一花一世界,一世一浮尘
回复

使用道具 举报

haoed 中人网电话实名  HR9万友 

103

主题

44

听众

9万

积分

版主

好的是啥来着

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 1517 天

[LV.Master]伴坛终老

注册时间
2007-1-19
最后登录
2020-12-1
积分
99399
精华
11
主题
103
帖子
3820

晒图达人勋章 最佳辩手 办公室点名活动小金人 2011纪念勋章 论坛群英谱

5
发表于 2011-4-26 18:13:24 |只看该作者 |楼主
其实用Excel打印工资条,归根结底就是让Excel制作的工资表格中,一行工资细目数据,一行员工的记录。如果在每一个员工数据的上面插入一行工资细目数据显然我们的要求也就完成了,当然纯手工的一行一行插入显然是个“不可能完成的任务”,这里需要有点小技巧。

  第一步:在工资细目的右侧两列中,交叉输入任意数字(主要是为了后面的“空位”空值,所以数字可任意输),然后选中交叉的四个单元格,双击右下角的“填充柄”,使这种格式一直填充至工资表的结束行(如图 5)。
  



图5 填充数据
  第二步:执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮(如图 6)。
  


图6 定位空行
  第三步:执行“插入”→“行”命令,这时便会从第三行开始,每一行的前面插入了一个空行。

  第四步:复制表头的工资细目数据,选中工资表A列的数据区域,执行“编辑”→“定位”命令,在打开的“定位”对话框中单击“定位条件”按钮,在打开的“定位条件”对话框中,选择“空值”,然后单击“确定”按钮,这时会选中刚插入的空行,执行“编辑”→“粘贴”命令,这时工资条就算制作完成了(如图 7)。
  


图7 最终效果
本帖最后由 haoed 于 2011-4-26 18:15 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

点评

工具星级: 5.0
xixiyq  这个不错,简单。  发表于 2011-5-24 11:42  回复
梦慕汐  这个偶会,哈~  发表于 2011-8-19 17:41  回复
double2011  很快就学会了、、、不错!  发表于 2012-2-7 21:06  回复
猫二  工具星级: 5
这一层好评!!  发表于 2013-8-21 10:46  回复
已有 1 人评分金钱 收起 理由
xuefairy + 20 好东西,值得加分!

总评分: 金钱 + 20   查看全部评分

企业最应该防止的是人才的“逆淘汰”,优秀人才不断流失,平庸之辈赶也赶不走。所以主动离职的虽然有点“不忠”,但是很可能都是超出该岗位能力要求的优秀人才;长期呆下来的虽然“忠诚”,但是很可能是安于现状碌碌 ...
回复

使用道具 举报

61

主题

52

听众

72万

积分

荣誉版主

雪菲

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

签到天数: 531 天

[LV.9]以坛为家II

注册时间
2010-12-23
最后登录
2020-10-17
积分
724405
精华
10
主题
61
帖子
4233

晒图达人勋章 2012中人社区群英谱勋章 2011年全勤会员勋章 春节活动勋章 妙笔生花勋章 风采达人勋章 我考证 乐分享勋章 阳光普照勋章

6
发表于 2011-4-26 18:20:31 |只看该作者
我要认认真真研究一下,下个月争取用这种新方法做
回复

使用道具 举报

12

主题

11

听众

2万

积分

探花

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27

签到天数: 448 天

[LV.9]以坛为家II

注册时间
2010-3-16
最后登录
2020-9-18
积分
27746
精华
0
主题
12
帖子
1059
7
发表于 2011-4-26 18:22:17 |只看该作者
很实用,谢谢分享~~

点评

买酱油也  www.bjszwl.com www.fangnian.net  发表于 2013-4-27 20:12  回复
回复

使用道具 举报

3

主题

4

听众

1万

积分

会元

Rank: 19Rank: 19Rank: 19Rank: 19

签到天数: 326 天

[LV.8]以坛为家I

注册时间
2010-12-10
最后登录
2013-9-11
积分
12469
精华
0
主题
3
帖子
632
8
发表于 2011-4-26 19:20:07 |只看该作者
谢谢楼主分享,五楼的方法对于表头是多行且有合并单元格的好像不能用啊,有没有哪位大侠有更好的办法
回复

使用道具 举报

45

主题

34

听众

4万

积分

榜眼

Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29

签到天数: 528 天

[LV.9]以坛为家II

注册时间
2010-1-17
最后登录
2020-7-5
积分
48232
精华
4
主题
45
帖子
2090

2011年人气会员勋章 最佳辩手 办公室点名活动小金人

9
发表于 2011-4-26 21:47:31 |只看该作者
直接实验了一下,的确很神奇啊,呵呵,太谢谢楼主了。
遇到一个问题,双击右下角的“填充柄”的时候,这种格式不能填充至工资表的结束行,而是在倒数第二行处,所以刚才试作的时候最后一行是用手工的方法实现空行和粘贴的。不过,这功能已经很强大了,非常感谢啊,呵呵!

点评

haoed  恩,我也发现不能。在倒数第二行处?  发表于 2011-4-27 09:12  回复
已有 1 人评分金钱 收起 理由
haoed + 5 认真学习的好筒子

总评分: 金钱 + 5   查看全部评分

本色做人,角色做事。
回复

使用道具 举报

9

主题

4

听众

711

积分

秀才

Rank: 5Rank: 5

签到天数: 6 天

[LV.2]偶尔看看I

注册时间
2010-5-7
最后登录
2012-10-10
积分
711
精华
0
主题
9
帖子
95
10
发表于 2011-4-27 13:08:19 |只看该作者
很实用的资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册