分享

VBA汇总多表的表头信息及数据 | VBA实例教程

 gblhp 2015-02-16

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

这节继续来看一个汇总多个工作表的例子,要汇总的工作表见附件。一个工作簿中有多个相同格式的工作表,每个工作表都有一段表头,包括日期、编号、车号等不同的信息,之后是多条数据,现在我们要将这些数据部分汇总,同时还要提取各个表的日期、编号和车号等信息。下面分别是原表和汇总表的格式

yuanbiao

huizongbiao

解决这个问题要分两部分,一部分是要取到正文的数据,另一部分是要取到表头的数据。下面来看代码

Sub 汇总()
Dim sht, arr, x, n, i, brr, brr1
Sheets("每车合计").UsedRange.Offset(1, 0).ClearContents
For Each sht In Sheets             '对每个表进行遍历
If sht.Name <> "每车合计" Then
With sht
x = Sheets("每车合计").Range("D65536").End(xlUp).Row + 1  '汇总表的最后一行
n = .[a13].End(xlDown).Row        '数据表的最后一行
If .Range("A" & n) = "合计" Then  '把合计行去掉
n = n - 1
End If
brr1 = .Range("A13:G" & n)   '数据表的数据放到数组brr1中
Sheets("每车合计").Range("D" & x).Resize(n - 12, 7) = brr1   '粘贴到汇总表中
arr = sht.Range("A1:G6")       '表头放到arr中
ReDim brr(1 To n - 12, 1 To 3) '取表头相应内容放到Brr中
For i = 1 To n - 12
brr(i, 1) = Split(arr(6, 1), ":")(1)
brr(i, 2) = Split(arr(1, 6), ":")(1)
brr(i, 3) = Split(arr(6, 6), ":")(1)
Next
'       For i = x To x + n - 13
'         Sheets("每车合计").Range("A" & i) = Split(arr(6, 1), ":")(1)
'
'         Sheets("每车合计").Range("B" & i) = Split(arr(1, 6), ":")(1)
'
'         Sheets("每车合计").Range("C" & i) = Split(arr(6, 6), ":")(1)

'Next
Sheets("每车合计").Range("A" & x).Resize(n - 12, 3) = brr
End With
End If
Next
End Sub

上面的例子中我用了不少的数组,主要目的是为了加快运行的速度,否则直接操作Range对象会很慢很慢。

本节示例文件下载地址:http://pan.baidu.com/s/1i3BW3kT

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多