excel办公技巧日报(EXCEL日报、月报不发愁,再也不用一个个操作,一次全搞定)
- 办公技巧
- 2023-08-09 08:04:24
- 0
原创作者: 卢子 转自:EXCEL不加班
要生成30个日报表,估计你是一个个操作,移动复制重命名,改了大半天。有了VBA以后,就可瞬间生成,点一下按钮全搞定。
其实,实际工作中,很多东西都可以靠VBA生成的。VBA并不遥远,而是与你的工作息息相关。
你也不要把VBA想得太复杂,跟着卢子学习就行,其他别想。
还是老套路,用最原始的方法操作,先录制宏,再慢慢改代码完善。
Step 01 录制一个宏,将模板移动或复制,移至最后,勾选建立副本。
Step 02 点VB进入后台,再点模块,就可以看到刚刚录制的宏。
Sheets("模板").Select 选择模板这个工作表。
中间那句不用管,没啥意义。
Sheets("模板").Copy After:=Sheets(1) 将模板复制到第1个工作表后面。Copy复制,After之后,即使不会英语,你都可以大概猜出意思。
现在要实现的效果就是,每复制一次,都在最后工作表的后面创建一个新表。第1次就在表1后面,第2次就在表2后面,第3次就在表3后面。
前面学了循环语句,你可能想到通过i这个变量来实现,其实还有一个更智能的。Sheets.count就是计算工作表的个数。
现在语句就改成Sheets("模板").Copy After:=Sheets(Sheets.Count)。
生成新表的同时对该表进行命名,Sheets.Name就是工作表的名称,名称依次等于1日、2日、3日……此时通过For Next循环,让i变量随着循环次数变更来实现。
Sheets(Sheets.Count).Name = i & "日"
将刚刚说的内容综合起来代码就出来了。
还有一个小问题,就是在每个表的A2生成日期。
Sheets.Range代表某个表的单元格,日期前面部分是固定的为 "2020/6/" 再连接变量i就可以。
Sheets(Sheets.Count).Range("a2") = "2020/6/" & i
到此,完整的代码就出来了。
Sub rb()
Dim i As Integer
For i = 1 To 30
Sheets("模板").Select
Sheets("模板").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = i & "日"
Sheets(Sheets.Count).Range("a2") = "2020/6/" & i
Next
End Sub
Step 03 将复制的模板手工删除掉,运行代码,即可生成日报。
在写VBA代码的时候,不区分大小写,会自动帮你更正。很多单词也可以不用记住,在输入的时候会自动提示,按Tab键可以补齐。其实就跟写函数一样。
最后,如果需要按月汇总30个表格,也很简单,因为是VBA生成的格式都一样,只需一个SUM函数就解决。
=SUM('1日:30日'!B4)
写代码的时候,你某些语句不懂写,可以录制一个宏,这样就会将难度降低,平常我都是这样做。
将录制宏学好了,后面再慢慢接触一些新语句,其实需要记住的新语句也没多少。最常用的就是循环语句For Next,已经连续学了4天。
留一个小练习给你,前面都是用具体数字,比如12这种,现在改成通用的,不管有多少表格,都可以提取到目录。
Sub 提取目录()
For i = 1 To 12
Sheets(1).Range("c" & i 1) = Sheets(i 1).Name
Next
End Sub
本文由 京廊文化根据互联网搜索查询后整理发布,旨在分享有价值的内容,本站为非营利性网站,不参与任何商业性质行为,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。
本文链接: /bangong/12246.html