制作工资条、成绩单是周期性的重复劳动,单调乏味。对此,本文活用WPS表格的智能填充加巧妙算法,教你只用一次粘贴、一个公式、一次拖曳,搞定如图 1样式的条式单据。
图 1 完成图
言归正传,先操作,后解说。
1. 设定:
A表=原始工资表(见图 2)
B表=生成工资条的空白表
图 2 原始工资表
2. 操作步骤:
2.1. 粘贴A表表头到B表A1单元;
2.2. 选择与B表表头同宽度的下一行区域,键入以下公式后,按Ctrl+Enter填充所选区域① 并顺便设置框线。见图 3;
=Indirect("A表!"&Address((Row()+1)/3+1,Column())) ②
注意:若表头占两行,改公式中“3+1” 为“4+2”;若表头占三行,为“5+3“,依此类推③。
图 3 复制表头及录入公式
2.3. 选中B表表头,向下拉至数据所能呈现的行数,如公式计算所得,拉到行6。④(与表头同宽度),移动指针到所选区域右下角填充柄上(指针呈“十”),拖拽填充柄向下(见图 4),直到能呈现所有数据。截止行号=(表头占用行数+1)×记录条数。
图 4 分组填充
3. 技巧与算法:
① 组合键Ctrl+Enter—— 能在相邻或不相邻的多个选定区域填充数据;
② 公式涉及4个函数,此例中:
Indirect(单元格引用文本)函数—— 得到以文本表示的目标单元格值。可能的文本形如:"A表!$A$3"、"A表!$B$3"等;
Address(行号,列号)函数——得到数值代表的行列交叉单元的地址文本。结果貌似:"$A$3","B3";
Row( )函数——返回该单元的行号;
Column( )函数——返回该单元的列号;
③ 算法思路:目的是将A表记录行{2,3,4,5,...}映射到B表记录行{2,5,8,11,....}。后者关联到索引(i)和表头行数(n),可表述为:B表第i行记录 = (i+n+1)/(n+2)+n,而Row( ) 等效于i+n。
④ 预留裁切区域,其空白行数,决定公式"(Row()+x)/y+1" 中x,y的取值;
若仍嫌繁复,可以到金山官方论坛(链接见下方),使用AutoIt工具集插件中的“生成工资条成绩条
”解决方案,仅需一次单击,完成所有任务(建表、记录填充、设置框线、智能分页、打印)
……