0基础学习写一个多表汇总宏模板!

今天我们带大家一起来实现一下VBA多表汇总,逐句讲解+分析思路,如果你是0基础,听完起码知道如何修改代码,也就非常奈斯了!
我们说的是多表指的是多工作表(WorkSheet或者Sheet)
需求:汇总1-3月数据到汇总表

需求分析:
我们程序做的其实就是模仿人工做的,把人工处理的逻辑转成程序可以认识的语句,所以我们首先要分析一下人工是如何处理的!
人工处理非常简单,分两步:
步骤01 :复制数据
复制数据,我们人工复制非常简单,因为你知道什么地方是有效数据区域,开始和结束位置,你是怎么判断的呢?你说有内容的最后一行就是结束位置呀,那么这个就要转成Excel能认识的VBA语句!
步骤02 :粘贴数据
粘贴数据,我们人工粘贴也是无感的,反正就是贴,但是你贴的时候也不是随意贴的,你接着上次粘贴内容的最后一行空白行粘贴的,这个最后一行有内容的行号的下一个空白,我们要转成语句,问题也就解决了!
本文由“壹伴编辑器”提供技术支持
根据我们分析人工操作下来,我们核心就是要知道如何表示数据的最后一行!
这个VBA有自己的规则:
Cells(Rows.Count,1).End(xlup).Row
以上表示,从A列(其他列把1修改成对应的列即可)的最后一个单元格往上找,找到首个有内容的单元格,并获取行号(ROW),这个跟我们自己手动啊
知识点:
Cells(行,列) - 单元格的一种表示方法,列可以使用字母表示
Cells(1,2) 和 Cells(1,"B") 都表示第一行第二列交叉的单元格-B1
虽然这些都有了,但是我一个小白,还是不知道怎么做呀?
这个是否,就要说Excel做的好的地方了,录制宏!
动画演示:如何录制宏

如果没有看到开发工具,按下面步骤操作一下即可。
【文件】 - 【选项】- 【自定义功能区】 - 【开发工具】 勾上 确定即可!

动画演示:查看录制的宏

查看宏的方式有很多,除了上面的点击【Visual Basic】 还可以 右击任意工作表名称,选择 【查看代码】 或者按下 ALT+F11 查看!

我们来看一下录制宏的代码:
Sub 多表汇总()
'
' 多表汇总 宏
'
'
Range("A1:G10").Select
Selection.Copy
Sheets("汇总表").Select
Range("A1").Select
ActiveSheet.Paste
Columns("B:B").EntireColumn.AutoFit
Range("D6").Select
End Sub
知识点:
单元格表示:Range("单元格地址")
这个是单元格的一种表示方式,但是不是唯一的,以后大家会慢慢接触到其他表示方式!Select 就是因为意思,选择!Copy就是复制,上面就是选择了A1:G10,然后复制,最后粘贴到,粘贴我们要切换报,这里就会涉及到VBA中如何表示工作表?
3、VBA中工作表的表示方式
这个 Sheets("汇总表").Select 就表示选择了名称为汇总表的工作表,那么你也应该可以猜出表示方式了!
工作表表示方式:Sheets("工作表名称")
4、常用的几个单词
Range:表示单元格 Sheets:表示工作表 Copy:复制 Select:选择 Paste:粘贴
Sheets("1月").Range("A1:G"&Sheets("1月").Cells(Rows.count,1).End(xlup).row)
MaxRow = Sheets("汇总表").Cells(Rows.Count, 1).End(xlUp).Row+1

干点啥
Next



i = 2 To 4(修改为实际的表个数)
共有多少个工作表:Sheets.Count
' 多表汇总 宏
'从第2行表到第4张表(1月-3月)
For i = 2 To Sheets.Count
If i = 2 Then
iStartRow = 1 '首次从A1复制
MaxRow = 1 '首次粘贴到汇总表A1
Else
iStartRow = 2 '否则从跳过标题,从第二行开始
'汇总表中有数据的下一行
MaxRow = Sheets("汇总表").Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
'用IROW 代码这一串内容
iRow = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(i).Range("A" & iStartRow & ":G" & iRow).Copy _
Sheets("汇总表").Range("A" & MaxRow)
Next
End Sub
