下载此文档

工资条制作问题.doc


文档分类:办公文档 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
1. 提出问题前几天群里提出了工资条制作的问题,就是每一行上都插入“姓名”、“收入”等表头,见图 1-1 工资条制作示例。笔者考虑到会有一部分人在工作中再次遇到此类问题,故将大家意见总结整合,发布出来。图 1-1 工资条制作示例 2. 集思广议问题提出后,大家集思广议,很快提出各种办法给予解决,在这里笔者总结并推广一下: ( 1) “北京-无聊~”提出使用内置函数,用 IF、 MOD 、 ROW 和 OFFSET 的组合来解决这一问题;( 2)笔者(晚安地球人)提出用 VBA 来实现。当然,在这之前“杭州-sharpen ”已经提出过并编写过函数。上述两种方法都可顺利解决问题,并各有各的优缺点。前者适合普通用户使用,易于修改和移植,例如在各工资条之间多插入一行空行,稍微变动一下函数就可以,但使用效率不如相比 VBA 方法来的高;后者使用编程的方法,程序写好之后,使用效率肯定很高,但对于不懂程序的人来说,当特殊需要要求变动格式时,改动代码则变得很困难,甚至无法使用。 3 解决问题 内置函数示例工资见表 2-1 。其中“姓名”位于 A1 单元格。表 2-1 示例工资姓名收入饭补车贴总和 A 2000 10 100 2110 B 2500 11 101 2612 C 1500 12 102 1614 D 2000 13 103 2116 E 2500 14 104 2618 按“北京-无聊~”提出的方法,在某空白处输入公式: =IF(MOD(ROW(A1),2)=1,A$1,OFFSET($A$1,(ROW(A1)+1)/2,0)) 式 1 则会得到“姓名”,往下拖,依次得到“A”、“姓名”、“B”、“姓名”、“C ”……,直到得到全部行为止。其中: ROW([reference]) :引用所在行的行号。 ROW(A1)=1 ,表示第 1行。 MOD(number, divisor) :返回两数相除的余数。 MOD(1,2)=1 ,表示 1除以 2得 0余 1。 OFFSET(reference, rows, cols)( 此处简化) :以指定的引用为参照系,通过给定偏移量得到新的引用。 OFFSET($A$1,1, 0)表示从$A$1 偏移 1行 0列到$A$2 。 IF(logical_test, [value_if_true], [value_if_false]) ,即 IF( 判别式,正确时值,错误时值)。那么在姓名右侧,输入公式: =IF(MOD(ROW(B1),2)=1,B$1,OFFSET($B$1,(ROW(B1)+1)/2,0)) 式 2 得到“收入”,往下拖,会得到“ 2000 ”、“收入”、“ 2500 ”等。注意式 1和式 2差别之处在于$A$1 和$B$1 ,同样“饭补”、“车贴”、“总和”就在此基础上变化$C$1 、$D$1 、$E$1 。这样依次拖下去,便得到完整的工资条,见表 3-2 。表 3-2 工资条姓名收入饭补车贴总和 A 2000 10 100 2110 姓名收入饭补车贴总和 B 2500 11 101 2612 姓名收入饭补车贴总和 C 1500 12 102 1614 姓名收入饭补车贴总和 D 2000 13 103 2116 姓名收入饭补车贴总和 E 2500 14 104 2618 上面搞懂了之后,公

工资条制作问题 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yzhfg888
  • 文件大小240 KB
  • 时间2017-02-16
最近更新