VBA程序跨工作薄汇总数据!

作者: 表妹的EXCEL | 来源:发表于2017-08-14 09:07 被阅读983次

来源:微信公众号表妹的EXCEL

关于跨工作汇总数据的问题,表妹之前已经介绍过很多方法了(推送43、推送46)。不过还有大批小伙伴在日常工作中,经常要面临跨工作薄汇总数据的问题,所以今天表妹就通过万能的VBA程序,来给大家分享一下跨工作薄汇总数据的代码。少年,准备接招吧~~

~~~~~~跨工作薄汇总的分割线~~~~~~

问题描述

已知各部门1月~6月的城市销售数据(文件命名无规律,但数据格式相同),要求汇总上半年各部门的销售额数据。具体情况如下图:

-------------------------------------

解决方法

步骤1:新建文件夹,命名“上半年”,将1月~6月数据放入其中;在文件夹外新建“启用宏的工作薄”,命名“上半年汇总”(新建工作薄,保存为启用宏的工作薄)

-------------------------------------

步骤2:打开新建工作薄,编辑与被汇总数据一致的数据格式;录制宏--命名“汇总”--结束录制--查看宏

-------------------------------------

步骤3:编辑“汇总”宏,添加VBA代码,保存并运行宏

代码如下:

Sub 汇总()

Dim x, y, z

Dim arr, brr(1 To5, 1 To5), i%, j%

Set x = CreateObject("Scripting.FileSystemObject")

Set y = x.getfolder(ThisWorkbook.Path & "\上半年\")

If y.Files.Count > 0 Then

Application.ScreenUpdating = False

For Each z In y.Files

Workbooks.Open (z)

arr = ActiveWorkbook.Worksheets(1).[B2:F6]

For i = 1 To5

For j = 1 To5

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).[B2:F6] = brr

End If

End Sub

代码替换参数解释:

brr(1 To5, 1 To5):汇总数据区域(不包含标题)有5行5列;

\上半年\:被汇总数据位于“上半年”文件夹;

B2:F6:被汇总数据区域;

B2:F6:“上半年汇总”中汇总结果区域

-------------------------------------

通过VBA程序,只需要轻松3步走,就可以实现快速汇总多工作中的数据了,VBA代码是不是很神奇呢?勤奋好学的小伙伴,赶快复制粘贴代码试试吧~~

如果你觉得表妹的分享内容很实用,欢迎分享给其他小伙伴呦,独乐乐不如众乐乐嘛!

关注微信公众号“表妹的EXCEL”,每周一、三、五获取原创分享教程。加入“表妹的EXCELQQ群(345387282)”,和勤奋好学的小伙伴们一起快乐地学习EXCEL吧!

本文已在版权印备案,如需转载请访问版权印14257715

相关文章

网友评论

    本文标题:VBA程序跨工作薄汇总数据!

    本文链接:https://www.haomeiwen.com/subject/mvbyrxtx.html