制作工資條、成績單是周期性的重復勞動,單調乏味。對此,本文活用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工具集插件中的“生成工資條成績條
”解決方案,僅需一次單擊,完成所有任務(建表、記錄填充、設置框線、智能分頁、打印)