让不懂编程的人看懂VBA,让大家都能轻松搞定批量数据。
各类办公室文员与数据打交道,可能会经常遇到以下问题:
上级机构制作了一张表格,下发给各下级单位,要求他们填写好后上交。
总公司制作的下发样表收齐之后,需要将交上来的表格中的数据累加,然后填入到汇总表里,如果需要填写的数据很多,下级单位数量也不少,那工作量就会特别大,而且特别容易出错。
回收各分公司填写的数据表 分公司填写数据样例但如果我们利用VBA写一段宏代码,就可以轻松搞定这个问题了。这里当然不是让你自己去写,我已经写好了,你只需要复制过去就能用,而且我已经把备注写的非常清楚了。
解决步骤:
1.新建一个文件夹,将待汇总的空表另存为一个启用宏的Excel文件。
文件类型选择“启用宏的工作簿”2.在文件夹中再新建一个文件夹,命名为“数据”,将所有收回的数据文件存放于其中。
将回收的数据存放于数据文件夹中,文件件与汇总表并列3.打开汇总表Excel文件,单击【试图】菜单中的【宏】-【录制宏】命令,在打开的对话框中输入宏名称“hz”后确定。
打开宏对话框4.在单击【试图】菜单中的【宏】-【查看宏】,在打开的对话框中选择宏名称,然后点击【编辑】按钮。
5.在打开的窗口中将原有内容全部删除,将下图内容粘贴到编辑框中。
5.单击该窗口中的【运行子过程】按钮,即可完成所有分公司数据自动汇总,并将汇总数据填写到汇总表中对应区域的工作。
汇总后的结果注意:
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
希望本例能帮你减轻重复计算的体力活之苦。
喜欢这类文章就关注我:“空中的纸飞机”或我的专题:“高效率办公”吧!索要样例文件,可以简信我。
网友评论