魔方网表 让信息化更简单

 找回密码
 注册
查看: 7859|回复: 6

技巧:一个公式让Excel按人头打工资条

[复制链接]
lnxxnchzyl 发表于 2009-8-3 17:11:00 | 显示全部楼层 |阅读模式
技巧:一个公式让Excel按人头打工资条
2009-04-21 08:32
用“邮件合并” 功能操作虽说不难,但数据过多时也很麻烦;用VBA处理起来倒是很方便,但几十行的程序也够初学者忙活的。经过一番试验,笔者找出了一个比较简单的方法,只需一个公式就可以按人头打印出工资条来。
新建一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:$N,INT((ROW()+4)/3),COLUMN())))”。确认后选择A1单元格,把鼠标放在A1单元格的右下角,鼠标变成“+”时,向右拖动鼠标自动填充至N列,这样工资条中的第一行就出来了。选定A1:N1,把鼠标放在N1单元格的右下角,鼠标再次变成“+”时,向下拖动鼠标自动填充到数据的最后一行,工资条就全部制作完成了。
该公式运用IF函数,对MOD函数所取的引用行号与3的余数进行判断。如果余数为0,则产生一个空行;如果余数为1,则固定取sheet1中第一行的内容;否则运用INDEX函数和INT函数来取Sheet1对应行上的数。
最后来设置一下格式,选定A1:N2设上表格线,空行不设。然后选定A1:N3,拖动N3的填充柄向下自动填充,这样有数据的有表格线,没有数据的没有表格线。最后调整一下页边距,千万别把一个工资条打在两页上。怎么样,还满意吧?

刘青梅 发表于 2010-6-10 12:05:56 | 显示全部楼层
技巧:一个公式让Excel按人头打工资条


{:1_128:}
回复

使用道具 举报

wxg600308 发表于 2011-10-17 11:12:20 | 显示全部楼层
编程是麻烦,函数也不易,像这样复杂的函数必须要有一定的水平,除了用编程和函数,用手工操作也不难
比如100条记录,复制100个字段,字段编号1-4-7;记录编号2-5-8;空格编号3-6-9,然后排序。OK !
回复

使用道具 举报

admin 发表于 2012-7-28 09:50:09 | 显示全部楼层
ding                        
回复

使用道具 举报

刘青梅 发表于 2012-11-29 14:11:34 | 显示全部楼层
一个公式让Excel按人头打工资条
回复

使用道具 举报

飞安戟 发表于 2013-5-11 00:56:44 | 显示全部楼层
要顶的啊,楼主辛苦了,谢谢
回复

使用道具 举报

shl7184894 发表于 2013-5-28 13:12:05 | 显示全部楼层
类似的东西我弄过  直接通过access的标签功能就能实现  比这个函数的可操作性更强。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-3-29 00:47 , Processed in 0.054834 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表