前段时间帮客户做的一个汇总程序,供你参考。
Sub main()
Dim zz As Integer
Dim bj As Boolean
Dim wjmArr(1 To 100) As String
Dim ksHh As Integer
Dim 检测列 As Integer
Dim hzBook As Workbook, zhBook As Workbook
Dim jsHH As Integer
Dim 子表名称 As String
Dim WIND1 As String, WIND2 As String
Dim hhZD
Application.DisplayAlerts = False
ksHh = Cells(3, 2).Value: maxHH = Cells(3, 4).Value
检测列 = Cells(3, 3).Value
Set hhZD = CreateObject("SCRIPTING.DICTIONARY")
Call 读取文件名(wjmArr, bj, zz)
Set hzBook = Workbooks.Open(ThisWorkbook.Path & "\" & wjmArr(1))
WIND1 = hzBook.Name
'清空汇总表
For Each mys In hzBook.Sheets
Range(mys.Cells(ksHh, 1), mys.Cells(maxHH, 100)).Clear
hhZD.Add mys.Name, ksHh
Next mys
'复制支行子表到总表
For i = 2 To zz
Set zhBook = Workbooks.Open(ThisWorkbook.Path & "\" & wjmArr(i))
WIND2 = zhBook.Name
For Each mys In zhBook.Sheets
jsHH = ksHh
Do While mys.Cells(jsHH, 检测列) <> ""
jsHH = jsHH + 1
Loop
If jsHH > ksHh Then
子表名称 = mys.Name
Range(mys.Cells(ksHh, 1), mys.Cells(jsHH - 1, 100)).Copy
Windows(WIND1).Activate
Sheets(子表名称).Activate
ActiveSheet.Cells(hhZD(子表名称), 1).Select
ActiveSheet.Paste
hhZD(子表名称) = hhZD(子表名称) + jsHH - ksHh
End If
Next mys
zhBook.Close
Next i
Application.DisplayAlerts = True
End Sub
Excel表格怎么汇总?这个视频告诉你!
vba 来做。。。。。。。。。
多文件?多工作表?