|
发表于 2012-10-10 18:35
|
显示全部楼层
本楼为最佳答案
本帖最后由 hwc2ycy 于 2012-10-10 18:40 编辑
- Sub 合并数据2()
- Dim arr, arrRst, arr2
- Dim i&, t!
- Dim wsh As Worksheet
- Dim dic As Object
- t = Timer
- Application.ScreenUpdating = False
- Set dic = CreateObject("scripting.dictionary")
-
- For Each wsh In Worksheets
- If wsh.Name Like "*[1-9]" Then
- With wsh
- If .[a1] = "" Then GoTo goout
- arr = .Range("a1").Resize(.[a1].End(xlDown).Row, 4)
- End With
- For i = 2 To UBound(arr)
- dic(arr(i, 1) & "|" & arr(i, 3)) = Val(dic(arr(i, 1) & "|" & arr(i, 3))) + Val(arr(i, 4))
- Next
- End If
- goout: Next
- arr = dic.keys
- ReDim arrRst(1 To dic.Count + 1, 1 To 3)
- For i = 2 To UBound(arrRst)
- arr2 = Split(arr(i - 2), "|")
- arrRst(i, 1) = arr2(0)
- arrRst(i, 2) = arr2(1)
- arrRst(i, 3) = dic(arr(i - 2))
- Debug.Print dic(arr(i - 2))
- Next
- arr3 = Array("Elem", "DIP", "SF")
- For i = 0 To UBound(arr3)
- arrRst(1, i + 1) = arr3(i)
- Next
- Worksheets("统计").Range("a1").Resize(dic.Count + 1, 3) = arrRst
- Application.CutCopyMode = False
- Debug.Print Timer - t
- End Sub
复制代码 |
|