Excel中多表数据自动累加汇总
让不懂编程的人看懂VBA,让大家都能轻松搞定批量数据。
各类办公室文员与数据打交道,可能会经常遇到以下问题:
上级机构制作了一张表格,下发给各下级单位,要求他们填写好后上交。
![](https://img.haomeiwen.com/i4432515/b9d98e5f78d27ea5.png)
收齐之后,需要将交上来的表格中的数据累加,然后填入到汇总表里,如果需要填写的数据很多,下级单位数量也不少,那工作量就会特别大,而且特别容易出错。
![](https://img.haomeiwen.com/i4432515/c2de300cb299802e.png)
![](https://img.haomeiwen.com/i4432515/862a1aeba3274325.png)
但如果我们利用VBA写一段宏代码,就可以轻松搞定这个问题了。这里当然不是让你自己去写,我已经写好了,你只需要复制过去就能用,而且我已经把备注写的非常清楚了。
解决步骤:
1.新建一个文件夹,将待汇总的空表另存为一个启用宏的Excel文件。
![](https://img.haomeiwen.com/i4432515/94d30bc8c9939bcf.png)
2.在文件夹中再新建一个文件夹,命名为“数据”,将所有收回的数据文件存放于其中。
![](https://img.haomeiwen.com/i4432515/9a402791f26fee8f.png)
3.打开汇总表Excel文件,单击【试图】菜单中的【宏】-【录制宏】命令,在打开的对话框中输入宏名称“hz”后确定。
![](https://img.haomeiwen.com/i4432515/35633f72e4b1868b.png)
![](https://img.haomeiwen.com/i4432515/f86273c6950b083a.png)
4.在单击【试图】菜单中的【宏】-【查看宏】,在打开的对话框中选择宏名称,然后点击【编辑】按钮。
![](https://img.haomeiwen.com/i4432515/43f7372d09ce798c.png)
5.在打开的窗口中将原有内容全部删除,将下图内容粘贴到编辑框中。
![](https://img.haomeiwen.com/i4432515/3c5a50096a7755ee.png)
5.单击该窗口中的【运行子过程】按钮,即可完成所有分公司数据自动汇总,并将汇总数据填写到汇总表中对应区域的工作。
![](https://img.haomeiwen.com/i4432515/8b25471ce84f9f59.png)
注意:
1.汇总后若想再次修改宏代码,可以通过【试图】菜单中的【宏】-【查看宏】-【编辑】命令来浏览宏代码。
2.按照备注文字的说明可以根据实际表格中数据区域的位置和行列数,修改相关参数。
其中:
数组brr(1 To 3, 1 To 4)表示数据区域的行列数,即需要汇总数据共有3行4列;
单元格区域[B3:E5]表示需要汇总数据位于[B3:E5]这个区域;
循环For i = 1 To 3 For j = 1 To 4 表示从待汇总区域的第一行到第三行、第一列到第四列进行累加。
3.全部代码如下:(复制过去稍作修改即可使用)
Sub hz()
Dim Fso, Fld, Fl
Dim arr, brr(1 To 3, 1 To 4), i%, j%
'定义变量及数组(数组大小由需要汇总数据区域的行列数确定)
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fld = Fso.getfolder(ThisWorkbook.Path & "\数据\") '读取待汇总数据所在的文件夹
If Fld.Files.Count > 0 Then
Application.ScreenUpdating = False
For Each Fl In Fld.Files
Workbooks.Open (Fl)
arr = ActiveWorkbook.Worksheets(1).[B3:E5] '将各表数据区域需要汇总的值赋给数组arr
For i = 1 To 3 '逐行
For j = 1 To 4 '逐列
If IsNumeric(arr(i, j)) Then brr(i, j) = brr(i, j) + arr(i, j)
'如果单元格是数字则累加
Next
Next
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
ThisWorkbook.Worksheets(1).[B3:E5] = brr '将汇总数据写入到汇总表对应的区域
MsgBox "数据汇总完成"
Else
MsgBox "没有找到任何工作簿文件"
End If
End Sub
希望本例能帮你减轻重复计算的体力活之苦。
喜欢这类文章就关注我:“空中的纸飞机”或我的专题:“高效率办公”吧!索要样例文件,可以简信我。