Sub Tonghop2()
Dim Dict1, SArr(), RArr(), mapArr()
Dim LRw As Long, ik As Long, LsxNo As String, k As Long, sRow&
Set Dict1 = CreateObject("Scripting.Dictionary")
LRw = Sheet1.[A100000].End(xlUp).Row
SArr = Sheet1.Range("A4:AI" & LRw).Value
mapArr = Sheet4.[A1:B25].Value
Application.ScreenUpdating = False
t = Timer
sRow = UBound(SArr, 1)
ReDim RArr(1 To sRow, 1 To 35)
For i = 1 To sRow
LsxNo = CStr(SArr(i, 1))
If Not Dict1.exists(LsxNo) Then
k = k + 1
Dict1.Add LsxNo, k
For j = 1 To 7
RArr(k, mapArr(j, 1)) = SArr(i, mapArr(j, 2))
Next
End If
ik = Dict1.Item(LsxNo)
For j = 8 To 25
RArr(ik, mapArr(j, 1)) = Val(RArr(ik, mapArr(j, 1))) + Val(SArr(i, mapArr(j, 2)))
Next
Next
Sheet3.[A5].Resize(5000, 35).ClearContents
Sheet3.[A5].Resize(k, 35).Value = RArr
Application.ScreenUpdating = True
MsgBox Timer - t & " seconds", , "ptm0412"
End Sub