洗好澡还算清醒,再把很久以前给我爸写的工资条制作方法整理下。
首先还是看下案例表Sheet1的结构:
A | B | C | D | E | F | |
1 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
2 | 苏玟洁 | 450000 | 10000 | 1 | 1500 | 11500 |
3 | 罗丹伶 | 500000 | 15000 | 5 | 4000 | 19000 |
4 | 颜世璇 | 800000 | 15000 | 4 | 3000 | 18000 |
5 | 苏俊明 | 1000000 | 20000 | 3 | 2500 | 22500 |
6 | 王思涵 | 2500000 | 25000 | 2 | 2000 | 27000 |
希望实现的效果:
A | B | C | D | E | F | |
1 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
2 | 苏玟洁 | 450000 | 10000 | 1 | 1500 | 11500 |
3 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
4 | 罗丹伶 | 500000 | 15000 | 5 | 4000 | 19000 |
5 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
6 | 颜世璇 | 800000 | 15000 | 4 | 3000 | 18000 |
7 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
8 | 苏俊明 | 1000000 | 20000 | 3 | 2500 | 22500 |
9 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
10 | 王思涵 | 2500000 | 25000 | 2 | 2000 | 27000 |
以下是宏代码:
Sub 生成工资单() '将Sheets(1)表复制到Sheet(2)中,做备份 Sheets(1).[A1].CurrentRegion.Copy Sheets(2).[A1] '定义变量num,赋值为1 num = 1 '设定循环条件,以100人为例,<=100*3 Do While num <= 300 '第num+1行,第1列的值为空,则把刚添加的标题行删除,结束 If Cells(num + 1, 1).Value = "" Then '选中num行 Rows(num).Select '删除num行 Selection.Delete Exit Sub End If num = num + 2 '选中第1行第1列 Rows("1:1").Select '选区复制 Selection.Copy '选中num行 Rows(num).Select '将复制的第1行的内容插入到该行上方 Selection.Insert Shift:=xlDown Loop End Sub
也可在上述代码的基础上实现标题行为多行的工资单,如:
A | B | C | D | E | F | |
1 | 工资单 | |||||
2 | 姓名 | 业绩 | 底薪 | 工龄 | 工龄工资 | 应发薪水 |
3 | 苏玟洁 | 450000 | 10000 | 1 | 1500 | 11500 |
4 | 罗丹伶 | 500000 | 15000 | 5 | 4000 | 19000 |
5 | 颜世璇 | 800000 | 15000 | 4 | 3000 | 18000 |
6 | 苏俊明 | 1000000 | 20000 | 3 | 2500 | 22500 |
7 | 王思涵 | 2500000 | 25000 | 2 | 2000 | 27000 |