作者:卢子 来源:Excel不加班
如果你昨天没能阅读我们的文章,建议先回顾一下:通过一个简单的方法,你就能掌握VBA这门技能……
虽然通过录制宏可以利用For循环生成多个工作表,但命名规则却显得非常简单,都是以Sheet1、Sheet2等形式命名,这样不易于识别。
如果能够根据实际情况进行命名,或许会更加合理。
例如,创建的工作表包括1月、2月直到12月。
其实,实现这个功能非常简单。你只需要了解一个新的单词Sheets(i).Name,里面的i是一个变量,范围从1到12。通过i & "月"的方式,就能在数字后面添加一个“月”字,这样就能表示1月到12月。这样的用法和在单元格上的操作是相似的。
Sub 生成工作表()
For i=1 To 12
Sheets.Add After:=ActiveSheet
Sheets(i + 1).Name=i & "月"
Next
End Sub
你可以直接使用单元格的值通过引用。例如,可以用Range("b" & i)来访问从b1到b12的值。接下来,根据总表(也就是第一张工作表)生成分表时,需要在单元格前加上工作表的序号或名称,语法为Sheets(1).Range("b" & i)。
实际上,VBA与在单元格中输入公式的方式有些类似,都是通过=(等号)来连接后面的字符。比如,在单元格中可以使用=A1&"月",而在VBA中则可以写成=i & "月",这两者之间的区别并不大。
跨表引用的方式也很相似,只是将原先在共工作表之间使用的感叹号(!)换成了点(·)。在VBA中,你可以使用类似于Sheet1.Range("B" & i) 的方式,而在公式中则用Sheet1!B1的格式。有时候,我们可以尝试利用公式的思路来看看是否可以转化为VBA代码。
根据B列的内容生成子表的代码已经完成了。
Sub 生成工作表()
For i=1 To 12
Sheets.Add After:=ActiveSheet
Sheets(i + 1).Name=Sheets(1).Range("B" & (i + 1))
Next
End Sub
现在情况有所改变,已经创建了分表,接下来需要进行目录的生成。
如果你已经理解了之前的内容,那么这个问题就显而易见了。只需将代码中的等号两边的位置互换,单元格的引用放在等号前面,而工作表名称则放在等号后面。
Sub 提取目录()
For i=1 To 12
Sheets(1).Range("C" & (i + 1)).Value=Sheets(i + 1).Name
Next
End Sub
虽然上述代码能够正常运行,但为了符合标准,应该将变量i声明为整数,即使用语句Dim i As Integer。
使用VBA后,很多事情变得更加轻松,比如在Excel中填充1万行数据。传统方法需要消耗大量时间在单元格内逐行操作,而借助VBA,只需一个简单的循环,就能快速完成,效率大幅提升。
例如,现在需要在A列中填充从1到10000的数字。
Sub 生成数字()
Dim i As Integer
For i=1 To 10000
Sheets(1).Range("a" & i)=i
Next
End Sub
要实现工作智能化,实现一键完成任务,熟练掌握VBA是关键。起初学习可能会遇到一些困难,但只需坚持一段时间,便会发现变得非常简单。
如若转载,请注明出处:https://www.summeng.com/67889.html