冒险岛幻影攻略2017:用EXCEL表做的工资表,有没有巧妙的方法转成工资条

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 06:24:22
我在网上看到一个用EXCEL表巧转工资条的方法,实际操作了一下不可用,(用宏的方法),不知道各位前辈有没有好方法。

1 用EXECL的函数
  我们知道工资条有两行,第一行表示项目(也就图1中的标题行),第二行表示各项明细,但是实际上, 为了裁剪方便,两个工资条之间有一空行,所以工资条中就有第一行为标题,第二行为明细,第三行为空白,也就是说这一行的行号除3余数来决定每一行的内容。
  我们新建一个工作表,这里要用到几个函数:IF、MOD、INT、INDEX,前几个函数比较好理解,也许你用过,介绍一个INDEX,它返回表格或区域中的数值或对数值的引用。它有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。我们这里用到引用,所以介绍人一下其函数参数INDEX(reference,row_num,column_num,area_num),Reference为对一个或多个单元格区域的引用。我们这里为工资汇总表 ,Row_num为引用中某行的行序号,函数从该行返回一个引用,Column_num为引用中某列的列序号,函数从该列返回一个引用,需注意的是Row_num、column_num 和 area_num 必须指向 reference 中的单元格;否则,函数 INDEX 返回错误值 #REF!。
  由于工资条的第一、三行(这里是指行号被3除后的余数)引用是不变的,而第二行的值要发生变化,这样才能打出每一个人的工资条,仔细观察,你会发现工资条第2行对应于工资汇总第2行,工资条第5行对应于工资汇总第3行,工资条第8行对应于工资汇总第4行,可以通过现在行号来得到引用行号int((row()+4)/3)
  根据以上分析,可以在工资条工作表的A1中输入下列公式=IF(MOD(ROW(),3)=0," ",IF(MOD(ROW(),3)=1,工资汇总!$A$1,INDEX(工资汇总!$A:$L,INT((ROW()+4)/3),COLUMN()))),注意这里对表格单元格的引用是绝对引用,选中A1向下拉出第一列,向右拉出第一行,在向右拉出的第一行上,必须更改“工资汇总!$A$1”的引用,分别改成与所在行对应的列数,比如C列改成工资汇总!$C$1;这里如果你想不让某一栏数据显示,只要设置不出现这一列的列标,然后再分别向下拉出每一列的数据。再设置边框格式,就得到如图2所示的工资条。
  在EXECL中我们还可以建立宏来做这样的事情,也可以使用lookup这个函数来实现这个功能。

职工工资构成非常复杂,往往超过10项,因此每月发工资时要向职工提供一包含工资各构成部分的项目名称和具体数值的工资条。打印工资条时要求在每个职工的工资条间有一空行便于彼此裁开。本模板就是用EXCEL函数根据工资清单生成一便于分割含有工资细目的工资条表格。
本工资簿包含两张工资表。
第1张工资表就是工资清单,称为"清单"。它第一行为标题行包括职工姓名、各工资细目。
第2张工作表就是供打印的表,称为"工资条"。它应设置为每三行一组,每组第一行为标题,第二为姓名和各项工资数据,第三行为空白行。就是说整张表被3除余1的行为标题行,被3除余2的行为包括职工姓名、各项工资数据的行,能被3整除的行为为空行。
在某一单元格输入套用函数"=MOD(ROW(),3)",它的值就是该单元格所在行被3除的余数。因此用此函数能判别该行是标题行、数据行还是空行。
在A1单元格输入公式"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,"value-if-false"))"并往下填充,从A1单元格开始在A列各单元格的值分别为清单A1单元格的值即姓名、value-if-false、空白,姓名、value-if-false、空白,……。其中value-if-false表示MOD(ROW(),3)既不等于0又不等于1时,即它等于2时应取的值。它可用如下函数来赋值:"INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"。INDEX()为一查找函数它的格式为:INDEX(reference,row-num,col-num),其中reference为查找的区域,本例中为清单表中的A到G列,即函数中的"清单!$A:$G",row-num为被查找区域中的行序数即函数中的INT((ROW()+4)/3),col-num为被查找区域中的列序数即函数中的COLUMN()。第2、5、8…….行的行号代入INT((ROW()+4)/3)正好是2、3、4……,COLUMN()在A列为1。因此公式"=INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())"输入A列后,A2、A5、A8……单元格的值正好是清单A2、A3、A4……,单元格的值。这样,表的完整的公式应为"=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,清单!A$1,INDEX(清单!$A:$G,INT((ROW()+4)/3),COLUMN())))"。把此公式输入A1单元格,然后向下向右填充得到了完整的工资条表。
为了表格的美观还应对格式进行设置,一般习惯包括标题、姓名等文字在单元格中要取中,数字要右置,数字小数点位数也应一致,还有根据个人的爱好设置边框。本表格只需对一至三行的单元格进行设置,然后通过选择性格式设置完成全表的设置。
本工作簿的特点是1、不对清单表进行操作保持清单工作表的完整,2、全工作表只有一个公式通过填充得到全表十分方便。

要不然,你做完之后,打印出来了,再用剪刀剪成一条条的就可以了,

呵呵....

我的天,本来是想搞简单一点的,好复杂啊,佩服了,要是我,就用裁纸刀和尺子,在玻璃板上划,应该可以啊。

按住ctrl+鼠标单击选定行,然后插入行,这样就会在每一行的上面加一个空白行,然后将工资条的各项复制下来粘贴上即可。