中人网

标题: 用 Excel 制作漂亮的工资条的方法 [打印本页]

作者: haoed    时间: 2011-4-26 17:40
标题: 用 Excel 制作漂亮的工资条的方法
  • 此文介绍了如何使用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 编辑


作者: 双人“鱼”    时间: 2011-4-26 17:46
重新又发了一次?谢谢分享!
作者: 双人“鱼”    时间: 2011-4-26 17:56
不怎么会用宏。。。
作者: 一锋化千羽    时间: 2011-4-26 17:56
经典,上次偶专门研究,都没弄会,谢谢分享。
作者: haoed    时间: 2011-4-26 18:13
其实用Excel打印工资条,归根结底就是让Excel制作的工资表格中,一行工资细目数据,一行员工的记录。如果在每一个员工数据的上面插入一行工资细目数据显然我们的要求也就完成了,当然纯手工的一行一行插入显然是个“不可能完成的任务”,这里需要有点小技巧。

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

[attach]279511[/attach]

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

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

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

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


作者: xuefairy    时间: 2011-4-26 18:20
我要认认真真研究一下,下个月争取用这种新方法做
作者: 姚宝贝    时间: 2011-4-26 18:22
很实用,谢谢分享~~
作者: lal_0426    时间: 2011-4-26 19:20
谢谢楼主分享,五楼的方法对于表头是多行且有合并单元格的好像不能用啊,有没有哪位大侠有更好的办法
作者: 上善若水2010    时间: 2011-4-26 21:47
直接实验了一下,的确很神奇啊,呵呵,太谢谢楼主了。
遇到一个问题,双击右下角的“填充柄”的时候,这种格式不能填充至工资表的结束行,而是在倒数第二行处,所以刚才试作的时候最后一行是用手工的方法实现空行和粘贴的。不过,这功能已经很强大了,非常感谢啊,呵呵!
作者: 舒雅    时间: 2011-4-27 13:08
很实用的资料
作者: mehongguo2002    时间: 2011-4-27 15:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: menglele2008    时间: 2011-4-28 09:48
我们公司是用短信发送工资条的。挺方便的。
作者: 温州小兵哥    时间: 2011-4-28 11:00
5楼的方法,的确好,做好之后要删除第一行或第二行的,重复了一个,但如果在每个员工之间加一行空行的话,效果是不是更好呢。

作者: 温州小兵哥    时间: 2011-4-28 11:04
[attach]279628[/attach]
作者: wh343766761    时间: 2011-4-28 12:36
我给我们做薪资的推荐
作者: yuyulingda    时间: 2011-4-29 14:06
太实用了,争取下个月用新方法做
作者: cjj204    时间: 2011-4-29 14:23
得仔细研究一下
作者: 看见你就头疼    时间: 2011-5-10 12:46
开始--所有程序--Microsoft office--Microsoft  office word 2003-- Ctrl+c,Ctrl+v,
作者: lin187    时间: 2011-5-10 15:52
高科技的东西,真不赖,好好研究一下,虽然有点难,呵呵。
作者: 09小叶子    时间: 2011-5-10 16:29
谢谢分享,晚上回去研究研究
作者: lisa5757    时间: 2011-5-11 17:59
感谢楼主的分享,太实用了,谢谢
作者: 风随我动543    时间: 2011-5-12 15:13
我做了下不行啊
作者: 大海鱼苗    时间: 2011-5-12 16:19
一直想要学习宏,正好,谢谢了
作者: xuefairy    时间: 2011-5-13 10:56
回复 5楼 haoed 的帖子


   非常感谢!5月份的工资条,我就用了这种新方法做,节约了好多时间!
作者: wwx307    时间: 2011-5-13 12:06
俺们已经用程序了。。。。
作者: 美之术    时间: 2011-5-15 09:55
有点难,还得多研究!
作者: 人力小小生    时间: 2011-5-16 15:26
我的EXCEL不精通啊,郁闷!
作者: lyzhangwei2008    时间: 2011-5-16 15:49
支持一下。
作者: 蓝色水猪    时间: 2011-5-17 09:09
5楼的不错,实用
作者: xuening1216    时间: 2011-5-18 13:48
用定位插入这个做工资条弄明白了 ,邮件合并那个方法没有弄明白  
作者: 威哥1号    时间: 2011-5-18 14:12
不怎么会用宏。。。

作者: 夜的传说    时间: 2011-5-19 22:56
好东西啊,谢谢分享!
作者: 温柔刀客    时间: 2011-5-21 11:51
谢谢了,支持楼主。
作者: mowl555    时间: 2011-5-21 13:15
呵呵 蛮好的 14楼的
作者: wwwmlqscomcn    时间: 2011-5-22 15:30
楼层5的方法真好,学会了。哈哈
作者: 小斯斯    时间: 2011-5-22 19:06
这个是不是很有用的啊?我们管理信息系统的课老师当做拓展给我讲过这些……
作者: xixiyq    时间: 2011-5-24 11:47
如果工资表最后一列是备注栏的话,备注栏空值很多,插入的行就不均匀了。
LZ来解决一下。
作者: 如千金    时间: 2011-5-26 10:24
我还真不会用宏,学习了,不过楼主很棒的哟
作者: 惠and惠    时间: 2011-5-26 10:30
哎!看来只能用用简单的啊
我一直都是用5楼的那个方法
作者: tt317206    时间: 2011-6-15 11:04
谢谢分享  学习了
作者: subway_jj    时间: 2011-6-15 15:24
操作了一遍,真的很神奇耶!
作者: 像风儿一样    时间: 2011-6-15 17:55
回复 5楼 haoed 的帖子


    不错,简单实用,好贴
作者: echovicky    时间: 2011-6-16 10:55
记号,慢慢学
作者: 慕云舒    时间: 2011-6-16 11:21
学习了。。
作者: 星月长空    时间: 2011-6-20 21:35
谢谢分享,很受用。
作者: lyh2321    时间: 2011-6-21 21:57
先收藏着,再慢慢看
作者: freja    时间: 2011-6-22 12:49
我用邮件合并的方式,EXCEL的不是打印出来还要裁成一条条的,也很麻烦的,邮件合并了直接发送员工邮箱,方便很多。邮件合并这个功能个人觉得对hr来说很实用,什么面试通知啊、日常的事务通知啊,最大的好处是别人收到邮件的时候,收件人里面只有那个人的名字,没有其他收件人,这样某种程度上实现了邮件密送的功能。
作者: baiyunwangjing    时间: 2011-6-22 12:59
学习了
作者: 飞来飞去的叶子    时间: 2011-7-1 14:42
真不错,学习一下
作者: 莎莎啊    时间: 2011-8-2 16:17
学习喽学习喽
作者: 桃子小灵光    时间: 2011-8-3 16:05
厉害,学习了,收藏了
作者: 幸福@鱼儿    时间: 2011-8-3 21:26
没做过这方面的工作,但我决定试试。多谢分享!
作者: 义果    时间: 2011-8-10 05:43
研究中,好玩!
作者: SZGGXY    时间: 2011-8-10 08:32
学习学习了  ,厉害!
作者: xiyufeiyin    时间: 2011-8-19 17:33
谢谢楼主分享!
作者: 梦慕汐    时间: 2011-8-19 17:53
谢谢楼主分享啊
作者: 偷心小白    时间: 2011-9-7 16:07
头晕了
作者: yanziwu    时间: 2011-9-7 16:35
有一个简单的方法:
1.复制整个工资表,加上一序号列,在序号的设置上:设置奇数如1,3,5,7......99.
2.复制工资表的表头,放在工资表下面,(有多少人就复制多少个),在序号设置上:设置偶数2,4,6,8....100.
3.点击排序就可以了。
序号 姓名
本帖最后由 yanziwu 于 2011-9-7 16:38 编辑


作者: juicon    时间: 2011-9-8 13:19
非常感谢!
作者: miki_xiong    时间: 2011-9-9 15:40
得瑟一下。。。学习
作者: 悠悠范    时间: 2011-9-12 11:27
很实用的资料
作者: oО呦園.    时间: 2011-9-13 11:31
斑竹的我弄不来。。。。谢谢五楼和十四楼的分享!!学会了!
作者: sagawell    时间: 2011-9-13 13:10


作者: z254240649    时间: 2011-9-13 13:58
谢谢,学会了
作者: 耗儿    时间: 2011-9-14 13:22
wh343766761 发表于 2011-4-28 12:36
我给我们做薪资的推荐

呵呵,王浩同学,谢谢
作者: LXZ123123    时间: 2011-9-15 21:03
不错,我也是那样操作的。
作者: 茶小娃    时间: 2011-11-24 12:31
多谢版主。~
作者: xuning182008    时间: 2011-11-24 15:43
这个方法太实用了
作者: 一粒沙~    时间: 2011-11-24 16:01
吼吼!终于找到这种实用的办法了!!!我要好好学习一番!
作者: 仔仔妈    时间: 2011-12-9 10:51
我用过五楼的方法
作者: lzg043    时间: 2011-12-15 11:18
除了宏不会,其他都会、
作者: selinagao    时间: 2011-12-23 14:28
真的很实用
作者: selinagao    时间: 2011-12-23 14:30
真的很实用
作者: wge602    时间: 2011-12-23 14:39
好东西,谢谢分享
作者: BBOY    时间: 2011-12-25 20:06
不错不错,不过有钱还是上个系统比较好,讨厌手工的活
作者: smart_jay    时间: 2011-12-25 22:55
介个好专业

现在SAP的系统,轻松些
作者: 手心的娜娜    时间: 2011-12-27 10:55
我都不会,笨蛋呐。。。啊啊啊。。。
作者: easytam    时间: 2011-12-27 14:02
精华呀~~~~~~~~~~~~
作者: 一家三口    时间: 2011-12-27 14:10
谢谢楼主……
作者: lal_0426    时间: 2011-12-27 14:40
我想请教一下:填充法中工资细目数据不止一行能不能行

作者: 亮亮3014    时间: 2011-12-27 20:20
的确很实用 不错
作者: minim_m    时间: 2011-12-30 18:52
绝对学习到了 保存下 ~~
作者: llc117    时间: 2011-12-31 11:09
5楼的方法可以扩展应用啊
作者: 蜜蜂or小花    时间: 2011-12-31 15:30
我之前也用过,不过方法是多种多样的,学习一下,呵呵
作者: sohan    时间: 2012-1-2 23:04
不错不错,学习了
作者: beiou1314    时间: 2012-1-7 16:33
好好学学
作者: Cindy燕儿    时间: 2012-1-7 19:26
不错
作者: 木梨    时间: 2012-1-30 10:03
我们木有工资条
作者: sicre    时间: 2012-1-31 13:34
很不赖,回去研究
作者: 玻璃天平    时间: 2012-2-7 13:30
好强大, 用5楼的成功了, 学了一招, 谢谢
作者: edward2632    时间: 2012-5-2 22:12
嗯,感觉蛮细的~
作者: 艾习    时间: 2012-5-3 08:01
谢谢分享
作者: 大内总管    时间: 2012-5-3 08:08
学习一下
作者: zlx710520    时间: 2012-5-3 09:12
有点混乱呀。
作者: 欲望的天空    时间: 2012-6-8 14:06
还有比这个更好的方法吗?
作者: guoziwei2009    时间: 2012-6-8 14:34
haoed 发表于 2011-4-26 18:13
其实用Excel打印工资条,归根结底就是让Excel制作的工资表格中,一行工资细目数据,一行员工的记录。如果在 ...

想了很久的东西,原来在这儿,哈哈哈
作者: 奋斗小鸟    时间: 2012-6-8 15:23
谢谢楼主
作者: meixiangxiang    时间: 2013-3-17 18:56
谢谢分享
作者: wge602    时间: 2013-3-17 21:35
学习了
作者: fuzingzing    时间: 2013-4-26 11:21
挺实用的




欢迎光临 中人网 (http://bbs.chinahrd.net/) Powered by Discuz! X2.5