【摘要】:Microsoft Excel是一款功能强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用Excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。但Excel的强大远远超过人们的想象--宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。
【关键词】: Excel;宏;VBA(Visual Basic for Applications)语言;排序
前言
无论在那个行业,每个月都要给职工发工资,职工工资构成非常复杂,往往超过10项,因此每月发工资时要向职工提供一包含工资各构成部分的项目名称和具体数值的工资条。打印工资条时要求在每个职工的工资条间有一空行便于彼此裁开。所以打印工资就成了财务或者人事部分的到月底完成的事情。
以前我们大部分的打印机都采用的是针式打印机,并且经常用那种穿孔纸,只要将要页面设置改成我们工资条一样的宽度,针式打印机就能够很好的完成我们现在所要求的打印工资条。但是现在我们很难找到那样的打印机,大部分打印机都是喷墨或者激光打印机,不能通过页面设置来完成工资条的打印。
对于企业人数比较大的话,就会买专门软件来完成工资条的打印,但是对于人数比较少的单位来说,去买昂贵的软件无疑是一种浪费,经过自己的经验,得到了三种方法。供大家来讨论和评价。
一、三种方法的简介
第一种:应用办公软件WORD中邮件合并。这种办法在网络上介绍比较多,在这里就不在赘述。
第二种:应用办公软件EXCEL(宏)打印工资条。
第三种:应用办公软件EXCEL中的排序来完成打印工资条。
二、打印工资条
由于第一种方法大家已经见的很多,我们现在只讨论后面两种方法。
第二种:宏
1、打开要打印的EXCEL数据,在工具菜单中找到宏,进入visual basic 编辑器,应用VBA语言编写如下程序代码。
Sub gongzitiao( )
Application.ScreenUpdating = False '为避免破坏表一,将表一内容完整复制到表二
Sheets(1)。[A1].CurrentRegion.Copy Sheets(2)。[A1]
'定义循环变量的最大值不小于表二中职工数的二倍(单位职工总数为55)
a = Application.WorksheetFunction.CountA(Sheets(2)。[A2:A55]) * 2
'如果第一列(职工的工资电脑序号)上下单元格的值不相等,则在它们之间插入一个空白行
For i = 2 To a Step 2
If Sheets(2)。Cells(i, 1) <> Sheets(2)。Cells(i + 1, 1) And (Sheets(2)。Cells(i, 1) <> "") Then
Sheets(2)。Rows(i + 1)。Insert
End If
'如果第一列中的单元格为空,则将表中[A1:Q1](工资清单表头项目)复制到此行,最好将[A1:Q1]范围设置的大点。
If Sheets(2)。Cells(i, 1) <> " " And Sheets(2)。Cells(i + 1, 1) = "" Then
Sheets(2)。[A1:Q1].Copy Sheets(2)。Cells(i + 1, 1)
End If
Next
Application.ScreenUpdating = True
End Sub
2、然后直接在visual basic 编辑器中运行刚才建立的宏,就能在SHEET2中得到需要的结果,直接设置在打印机打印。
第三种:应用办公软件EXCEL(排序)打印工资条
1、打开要打印的EXCEL数据,然后在要排序的数据表SHEET1中添加一列,命名为“排序”。下面工资表为例。
2、给排序这列添加数值,从2、4、6、8等偶数。并且在数据低下的地方复制表头8(根据数据量来确定)。
3、将后面复制的单元格中的排序删除,并且添加相应的数字,从3、5、7等等。
4、最后按照“排序”关键字进行升序排序,并删除排序列。
四、结束语
以上是笔者从事教学工作多年的一点经验,简单的流露于文字,希望能给各位启示,在以后的工作和学习中有所帮助。 |