excel表格,用VBA(宏代码)实现批量汇总当前文件夹下的Excel文件(主要是筛选后再汇总)?

由于有几十个Excel工作簿数据,每个20万左右的数据,所以批量合并也只能合并5个左右,想着能不能筛选后再合并,筛选后数据就少很多了,就能批量合并很多数据,免得做大量的重复工作。(如表格数据1,筛选E列的扫描类型(签收、驿站代收、柜机代收),其他数据不要,,然后可以的话只要数据A-F列)

第1个回答  2022-11-15
Public Sub 遍历()
Dim arr, brr
Application.ScreenUpdating = False
Application.DisplayAlerts = False
t = Timer
mypath = ThisWorkbook.Path & "\"
myname = Dir(mypath & "*.xls*")
ReDim brr(1 To 1000000, 1 To 6)
n = 1
Do While myname <> ""
If myname <> ThisWorkbook.Name Then
Workbooks.Open (mypath & myname)
arr = ActiveSheet.Range("a1").CurrentRegion.Value
ActiveWorkbook.Close
For i = 1 To UBound(arr)
If arr(i, 5) = "签收" Or arr(i, 5) = "驿站代收" Or arr(i, 5) = "柜机代收" Then
For j = 1 To 6
brr(n, j) = arr(i, j)
Next
n = n + 1
End If
Next
End If
myname = Dir
Loop
ThisWorkbook.Sheets(1).[a1].Resize(1, 6) = arr
ThisWorkbook.Sheets(1).[a2].Resize(UBound(brr), 6) = brr
Columns(1).Select
Selection.TextToColumns Destination:=Selection, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
MsgBox Timer - t
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub本回答被提问者采纳
相似回答