標題:
大量資料比對與合併
[打印本頁]
作者:
uf023630
時間:
2011-6-8 13:15
標題:
大量資料比對與合併
各位前輩好!
小弟我有一個問題要請求大家幫忙
我需要將許多Sheet(大約有60個) 的資料合併在Sum的這個Sheet內
每個Sheet 大約有1萬筆資料,而SUM 大約有5萬筆
一開始用 VLOOKUP去做......只有一個慘
之後改用迴圈...還是一樣等到天荒地老
後來用 Find 但是遇到空白無值會錯誤...
想用 陣列 & Dictionary 但是一直卡關..
想請求大家幫忙想一想,但是又要有執行速度,因為資料真的太多了
謝謝
[attach]6530[/attach]
作者:
Hsieh
時間:
2011-6-8 14:16
Sub ex()
Dim ar()
Set D = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheets.Add
For Each sh In Sheets(Array("01", "02", "03", "04"))
ReDim Preserve ar(s)
ar(s) = sh.[A1].CurrentRegion.Address(, , xlR1C1, 1)
s = s + 1
Next
.Range("A1").Consolidate Sources:=ar, Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
For Each a In .Range(.[B1], .[IV1].End(xlToLeft))
If IsEmpty(D(Split(a, "-")(0))) Then
Set D(Split(a, "-")(0)) = a.Resize(.UsedRange.Rows.Count, 1)
Else
Set D(Split(a, "-")(0)) = Union(a.Resize(.UsedRange.Rows.Count, 1), D(Split(a, "-")(0)))
End If
Next
Set Rng = .Range(.[A1], .[A65536].End(xlUp))
For Each ky In D.keys
With Sheets("SUM-" & ky)
Rng.Copy .[A1]
D(ky).Copy .[B1]
End With
Next
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
uf023630
時間:
2011-6-8 15:01
感謝提供方法,雖然與我實際上執行會有困難因為我每個Sheet 用掉208個欄位,每個.xls 又有52個Sheet,感謝Hsieh板大幫忙!我已經知道邏輯方法與原理剩下的就讓我自己去探索吧!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)