电脑爱好者是我每月必买的杂志之一,已经有5年了,中途虽然中断了一两年,但半年出的合刊还是坚持买了,原来喜欢它是因为里面有很多关于作图方面的技巧,现在这类的东西减少了,办公中用到的技巧多了,一样对我有用。
向上次说的利用身份证就能统计出性别年龄的公式就是从这本杂志上学到的。
这次还是介绍一个在人事方面很有用处的文章。
原作者:任远 出处:电脑爱好者。
在人事工作薪酬岗位上的人,每个月做完工资都要打印出工资条,发给员工。我原来都是用很笨的方法将工资表的标题复制,多次插入,这样很浪费时间哦~~~
现在介绍两个方法来解决这个问题。先来看看工资表。(因为这个牵涉一些私人的问题,所以我用另一个表代替了,结果是一样的。)
图片可以点击放大。

为了方便使用,有几点先说明下。
1.为了不破坏原工资表的结构,在新sheet表中形成工资条。
2.我用的这个表一共是17行J列,第一行是表头,第二行是标题,第三行以下是具体内容。
先介绍----[公式填充法]
优点:输入公式,便于理解。
缺点:手工操作的步骤较多,而且不能在两个人之间插入空行。
方法:在sheet2内的A1表格内输入以下公式。
=IF(MOD(ROW(),2)=0,INDEX(Sheet1!$A:$J,INT(((ROW()+1)/2))+2,COLUMN()),Sheet1!A$2)
然后用填充柄填充到其它单元格就可以了。如果想要生成的数据在sheet3中,只要在sheet3中进行以上操作就可以了,并不需要更改公式。
生成效果:

解释:形成的工资条中,奇数行是标题,偶数行是数据,所以用MOD函数来判断奇偶,若是奇数行就从表sheet1中取A2中的数据(即:Sheet1!A$2),若是偶数行就用INDEX函数来取数(INDEX函数中的Sheet1!$A:$J是指定一个取数区域,我们这里是A到J列)。
在sheet2种形成的这个表格,大家能看到每个人的工资条之间没有空行,剪切起来会比较麻烦,而且是不能插入空格的,因为插入空格会影响到公式。并且标题栏也是普通格式并没有像sheet1里面那样是变粗的,这需要我们手动来改了。
再介绍----[宏命令控制法]
优点:手工操作的地方较少,能自动形成最标准的格式。修改简单。
缺点:使用了VB语言,不是很好理解。
方法:打开要使用的工资表,选择“工具-->宏-->Visual Basic 编辑器”,在探出的编辑器左上角的窗口中双击sheet1,如下图的灰色部分。

然后在代码编辑窗口输入以下代码:
[code]Sub MakeSalaryList()
Dim i As Integer
Dim endrow As Integer
'测出数据的最后一行
endrow = Sheet1.Range("a65536").End(xlUp).Row - 1
'把标题贴过去
Worksheets(1).Range("1:1").Copy (Worksheets(3).Cells(1, 1))
For i = 3 To endrow
'把每条数据抬头贴过去
Worksheets(1).Range("2:2").Copy (Worksheets(3).Cells(3 * i - 7, 1))
'把数据贴过去
Worksheets(1).Range(Cells(i, 1), Cells(i, 256)).Copy (Worksheets(3).Cells(3 * i - 6, 1))
Next i
End Sub
[code]
关闭编辑器,就会自动返回到刚才的表中,再选择“工具-->宏-->宏”,在弹出的以下对话框中选择“执行”。然后就悠闲的喝口咖啡,工资条就自动生成了。
这个代码是将形成的结果放在sheet3中,如果要放在sheet2中,可以直接修改红色部分,将3改成2就可以了。
在这个方法形成的表中,不仅有表头,每个人的中间自动插入了一行空白,方便剪切,而且标题行都是自动加粗的,与sheet1中的格式完全一样。
对于上面代码的具体解释我就不说了,上学时候学得那点VB都忘得差不多了。我只是照猫画虎罢了。
只希望以上方法能对从事这个工作的人有帮助。如果转载请注明原作者和出处就好了。
向上次说的利用身份证就能统计出性别年龄的公式就是从这本杂志上学到的。
这次还是介绍一个在人事方面很有用处的文章。
原作者:任远 出处:电脑爱好者。
在人事工作薪酬岗位上的人,每个月做完工资都要打印出工资条,发给员工。我原来都是用很笨的方法将工资表的标题复制,多次插入,这样很浪费时间哦~~~
现在介绍两个方法来解决这个问题。先来看看工资表。(因为这个牵涉一些私人的问题,所以我用另一个表代替了,结果是一样的。)
图片可以点击放大。

为了方便使用,有几点先说明下。
1.为了不破坏原工资表的结构,在新sheet表中形成工资条。
2.我用的这个表一共是17行J列,第一行是表头,第二行是标题,第三行以下是具体内容。
先介绍----[公式填充法]
优点:输入公式,便于理解。
缺点:手工操作的步骤较多,而且不能在两个人之间插入空行。
方法:在sheet2内的A1表格内输入以下公式。
=IF(MOD(ROW(),2)=0,INDEX(Sheet1!$A:$J,INT(((ROW()+1)/2))+2,COLUMN()),Sheet1!A$2)
然后用填充柄填充到其它单元格就可以了。如果想要生成的数据在sheet3中,只要在sheet3中进行以上操作就可以了,并不需要更改公式。
生成效果:

解释:形成的工资条中,奇数行是标题,偶数行是数据,所以用MOD函数来判断奇偶,若是奇数行就从表sheet1中取A2中的数据(即:Sheet1!A$2),若是偶数行就用INDEX函数来取数(INDEX函数中的Sheet1!$A:$J是指定一个取数区域,我们这里是A到J列)。
在sheet2种形成的这个表格,大家能看到每个人的工资条之间没有空行,剪切起来会比较麻烦,而且是不能插入空格的,因为插入空格会影响到公式。并且标题栏也是普通格式并没有像sheet1里面那样是变粗的,这需要我们手动来改了。
再介绍----[宏命令控制法]
优点:手工操作的地方较少,能自动形成最标准的格式。修改简单。
缺点:使用了VB语言,不是很好理解。
方法:打开要使用的工资表,选择“工具-->宏-->Visual Basic 编辑器”,在探出的编辑器左上角的窗口中双击sheet1,如下图的灰色部分。

然后在代码编辑窗口输入以下代码:
[code]Sub MakeSalaryList()
Dim i As Integer
Dim endrow As Integer
'测出数据的最后一行
endrow = Sheet1.Range("a65536").End(xlUp).Row - 1
'把标题贴过去
Worksheets(1).Range("1:1").Copy (Worksheets(3).Cells(1, 1))
For i = 3 To endrow
'把每条数据抬头贴过去
Worksheets(1).Range("2:2").Copy (Worksheets(3).Cells(3 * i - 7, 1))
'把数据贴过去
Worksheets(1).Range(Cells(i, 1), Cells(i, 256)).Copy (Worksheets(3).Cells(3 * i - 6, 1))
Next i
End Sub
[code]
关闭编辑器,就会自动返回到刚才的表中,再选择“工具-->宏-->宏”,在弹出的以下对话框中选择“执行”。然后就悠闲的喝口咖啡,工资条就自动生成了。
这个代码是将形成的结果放在sheet3中,如果要放在sheet2中,可以直接修改红色部分,将3改成2就可以了。
在这个方法形成的表中,不仅有表头,每个人的中间自动插入了一行空白,方便剪切,而且标题行都是自动加粗的,与sheet1中的格式完全一样。
对于上面代码的具体解释我就不说了,上学时候学得那点VB都忘得差不多了。我只是照猫画虎罢了。
只希望以上方法能对从事这个工作的人有帮助。如果转载请注明原作者和出处就好了。
耐克指责国网恶意抢注欲讨回两大中文域名
建立自己的blog快照













