分享

多个Excel工作簿中特定内容汇总到一个工作表 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/90.html,VBA交流群273624828。

相信学了上一篇“多个Excel工作簿中的数据汇总到一个Excel中(1)”朋友们对汇总有了初步的认识,(1)中我们讲的是将整个表中的内容都汇总到一个表中,这次我们看下如何汇总表中的特定内容而不是全部内容。其实这个也很简单,只是让大家熟悉一下汇总的过程,上次我们选择的是全部的内容,这次只要选择特定单元格就可以了。

看例子。假设你是个理财公司的统计人员,公司有四种产品,每个营业部都有好几个团队,分部行政人员会每天给你发各营业部各团明细,你呢只需要汇总各个营业部的业绩上报,即你只需要汇总每个表的最后一行,但是最后一行到底是哪行又是不确定的,大家可以自己先下载示例自己试一下。下面上代码

Sub test()
Dim mypath, myfile, wb, i, j
Range("A1").CurrentRegion.Offset(1, 0).ClearContents  '开始提取之前清除除表头之外的内容
mypath = ThisWorkbook.Path & "\"         '找到当前工作簿的路径
myfile = Dir(mypath & "*.xlsx")          '遍历当前路径下的工作簿
Do While myfile <> ""                    '当找到的文件不为空时
If myfile <> ThisWorkbook.Name Then   '当找到的文件不是本工作簿时
Set wb = GetObject(mypath & myfile) '利用GetObject取得数据
With wb.Sheets(1)                   '对wb的sheet1进行操作
i = .[a1048576].End(xlUp).Row    '得到wb的最后一行
j = [a1048576].End(xlUp).Row + 1 '得到当前工作表的最后一行
Range("A" & j) = .Range("A1")    '开始赋值了
Range("B" & j) = .Range("B" & i)
Range("C" & j) = .Range("C" & i)
Range("D" & j) = .Range("D" & i)
Range("E" & j) = .Range("E" & i)
Range("F" & j) = .Range("F" & i)
End With
wb.Close                   '别忘了关掉,要不然越开越多电脑就瘫痪了
End If
myfile = Dir                  '去找下一个工作簿
Loop
End Sub

汇总的表要和那些明细表放同一个文件夹下,这样就可以用mypath = ThisWorkbook.Path & "\" 取得文件夹的路径了,i和j分别是取到明细表和汇总表的最后一行,End属性不明白的可以百度一下。提醒新手朋友们,在看代码的时候会有一些看不明白的地方,我也不可以面面俱到的都讲,其实只要百度一下很多问题都可以明白了,有问题先自己查是一种技能更是一种态度。本文示例文件下载http://pan.baidu.com/s/1voCiU

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多