用EXCEL表做的工资表,有没有巧妙的方法转成工资条

发布网友 发布时间:2022-04-20 10:29

我来回答

1个回答

热心网友 时间:2023-09-20 18:21

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这个函数来实现这个功能。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com