Excel宏功能简单应用介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Excel宏功能简单应用介绍
所谓宏,就是一组指令集,通过执行类似批处理的一组命令,来完成某种功能。MicrosoftOffice的组件都可以支持宏(Macro)的操作,而Office的宏是指使用VB Script指令集(VB编程语言的子集,可以使用VB的常用语句)编写的针对Office组件的小程序。利用宏,我们可以完成很多程序原本并不支持的特殊应用,比如完成某种特殊的数据计算,或者文档的特殊格式排版等等。下面,就让我们举个简单的例子,看看宏在Excel中如何应用。
有这样一个Excel表格,工作表Sheet1中的第2行的B列开始至D列的连续单元格中是一组共3个数据,第A列的第3行开始至第6行的连续单元格中是一组共4个日期,要编写一段宏来完成这样的工作:将Sheet1第2行的数据由左至右依次纵向复制到Sheet2的B列(从B2开始)中,然后将这组复制完的3个数据所在行的A列都填入Sheet1的A3单元格里面的日期,完成后重复之前的操作,将Sheet1第2行的数据再次复制到Sheet2的B列,这次是从上次复制的B列数据下面的空白单元格,也就是B5开始,然后再在这次复制的3个数据的左侧A列填入Sheet1的A4单元格的日期,这样反复循环,直到She et1的A列的所有日期都出现在了Sheet2的A列里面,也就是Sheet1的第2行数据在 Sheet2的B列里面被复制了4次为止。
编写宏只要有一点点简单的VB编程知识就可以了,并不一定需要很高深的编程技巧,很多时候我们需要的只是一些重复的操作,我们可以通过宏的录制功能来录制一次需要的操作过程,然后再对已经录制的宏进行简单的修改,就能得到所需要的宏了。
对于上面这个事例,实际上只是简单的复制操作,所以甚至连录制的工作都可以省掉了。因为所需要的操作是一个循环的过程,所以我们可以使用一个循环语句来编写程序,这样只要写出一个完成的复制过程,一次循环就可以达到我们的目的了。循环判断的依据就是是否Sheet1的A列所有日期都复制过了,因为数据都是连续排列的,艘以我们可以把Sheet1的A列某个单元格是否有数据作为进入循环的条件,依次复制日期,直到A7这个没有数据的空单元格,循环结束,我们的工作也就完成了。至于循环里面的内容,我们同样再嵌套一个循环,只不过这次是判断第2行的数据是否全都复制完成了,在这个循环里面自然就是单元格数据和日期的复制了。
Sub Macro1()
Dim st1y
Dim st2y
Dim st1x
st1y =3
st2y = 2
DoWhile Sheets(“Sheet1”).Cells(st1y, "A") <> ""
st1x = 2
Do While Sheets(“Sheet1”).Cells(2, st1x)<> ""
Sheets(“Sheet2”).Cells(st2y, "B") = Sheets(“Sheet 1”).Cells(2, st1x)
Sheets(“Sheet2”).Cells(st2y, "A") = Sheets
(“Sheet1”).Cells(st1y, "A")
st1x = st1x + 1
st2y = st2y + 1
Loop
st1y = st1y +1
Loop
End Sub
上面就是我编写的这个宏的所有内容,让我再来详细说说每个命令的作用:
第一行的“Sub Macro1()”和最后一行的“End Sub”是整个宏的开始和结尾标志,Macro1就是这个宏的名字。
“Dim”是定义一个变量,“st1y”是我定义的Sheet1的Y轴坐标变量,同理,“st1x”就是Sheet1的X轴坐标变量,“st2y”自然是Sheet2的Y 轴坐标变量了。
“st1y = 3”这是一个赋值语句,下面的“Sheets("Sheet2").Cells (st2y, "b")= Sheets("Sheet1").Cells(2, st1x)”这句也是,它们的作用都是将等号后面的数值赋予给等号前面的变量,就是说,等号前面必须是一个变量而不能是常量。这里分别给st1y和st2y赋予初始值3和2,代表他们分别是从第3行(Sheet1的日期是从A3开始的)和第2行开始。
“DoWhile”就是我们整个程序中最重要的循环语句了,“Sheets("Sh eet1").Cells(st1y, "A")”是代表的Sheet1这个工作表的某个单元格,Cells后的括号内就是单元格的坐标,格式是Cells(Y轴,X轴),那个A3这个单元格就应该表示为Cells(3, "A"),这里注意,字符和字符串常量都必须用引号括起来,另外,X周除了用字母标示以外,也可以使用对应的数字来表示。第一个循环就是判断是否在Sheet1的A列的某个单元格碰到了空白格,
如果没有,就进入循环执行里面的程序。与这个“DoWhile”相对应的就是倒数第二行的“Loop”。
进入循环以后对st2x进行赋值,然后进入第二个循环,判断Sheet1的第2行是否遇到了空白单元格,没有的话就继续执行下面的程序。
之后就是按照规则对单元格内容进行复制,之后给变量增值,以便循环能够顺利的执行,直到完成所有的操作。