第1张工资表就是工资清单
- 格式:doc
- 大小:245.59 KB
- 文档页数:4
排序法
第一步:打开工资表→在工资表最后一空白列输入1,2,3……(注:输入的数字与工资表的行数相同)(图1)。
第二步:在刚输入的数字下面向下输入1.1,2.1……,比上面的数据少一行,本列在K9中输入1.1(图2)。
第三步:在K列任何一个单元格中单击左键→单击工具栏上的升序排列按钮→选择工资表→编辑→定位→定位条件选择“空值”→确定。
第四步:在编辑栏中输入=A$1→按住Ctrl键不放敲回车键。
第五步:在单元格K15下方输入1.01,2.01……一直输入到6.01→单击工具栏上的升序排列按钮→删除K列的数据。加一下边框便大功告成了(图3)。
第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、全工作表只有一个公式通过填充得到全表十分方便。
工资条分析
对于项目不太多的工资条,一般采用以下三行:
第一行表头,行号分别为1,4,7,10……均除3余数为1,即mod(行号,3)=1
第二行数据行,行号分别为2,5,8,11……,均除3余数为2,即mod(行号,3)=2
第三行分隔行,行号分别为3,6,9,12……,均为3的倍数,即mod(行号,3)=0
如果用逻辑表达式来表示,则为:
当mod(row(),3)=1时,取工资表所在列的表头内容。
当mod(row(),3)=2时,取工资表中对应行和所在列的数据,对应行的行号为1+(1+row())/3。
当mod(row(),3)=0时,赋于空值。
新建一个EXCEL工作簿,名字叫工资.xls,包含两张工作表,一张表叫“工资表”,存放工资数据;一张表叫“工资条”,专门打印工资条。根据上述逻辑表达式,EXCEL中的公式可以表达为:
if(mod(row(),3)=1,index(工资表!$1:$65536,1,column()),if(mod(row(),3)=2,index(工资表!$1:$65536,1+(1+row()/3),column()),“”)
二、实现条件
要实现上述公式,必须符合下列条件:
1、工作簿中分别建立工资表和工资条等两张工作表。
2、工资表中的表头放在第一行。即第一个人的数据行的行号为2,第二个人的数据行的行号为3,以此类推。所以在公式中取行号时,用了1+(1+row())/3。
3、工资条与工资表中的表头一致,所以在公司式中取列号直接用了所在列,即column()。
以上只是三行的工资条情形。但从各地颁布的工资支付条例来看,工资支付表即工资条,应当有支付单位名称、工资计发时段、发放时间、员工姓名、正常工作时间、加班时间、标准工资、加班工资等应发项目以及扣除的项目、金额及其工资账号等记录。因此三行很显然不能解决问题,至少五行方能满足要求。一份典型的工资条如下:
发放单位 发放时段 姓名 出勤天数 法定加班 双休加班 其他加班 职务工资 加班工资 住房补助 交通补助 通讯补助
误餐补助 其他工资 其他补助 应发合计 养老保险 医疗保险 住房公积金 扣款 纳税所得 个人所得税 实发合计 工资帐号
五行工资条和三行工资条的处理的方法也差不多,只是需要多两层IF函数的嵌套。逻辑表达式表示为:
当mod(row(),5)=1时,取工资表所在列的表头内容。
当mod(row(),5)=2时,取工资表中对应行和所在列的数据,对应行的行号为1+(1+row()/5)。
当mod(row(),5)=3时,取工资表对应列的表头内容。对应列的列号为column()+12。因为此工资条有12列,所以第二行的表头的列号需要加12。
当mod(row(),5)=4时,取工资表中对应行和对应列的数据,对应行的行号为1+(1+row()/5),对应列的列号为column()+12。
当mod(row(),5)=0时,取空值。
如果要使第5行的分隔行没有表格线,可以用EXCEL中的条件格式功能。只要设置mod(column(),5)=0这个条件,没有表格线即可。
为了使工作标准化,建议按年建一个EXCEL工作簿,如工资表_2008.xls,里面包含每个月的工资数据,每个月一张工作表。每张工资表起名1月工资、2月工资、3月工资……12月工资等。另建一个工资条的工作表,专门打印工资条。每月发放工资前,只要先将工资表做好,然后再在工资条工作表中将公式中的工资表工作表名称修改一下即可。