Option Explicit
Sub ABC()
Dim i&, j&, Lr&, LrD, t&, k&
Dim Arr(), ArrD(), KQ(), Keys As Variant
Dim Dic As Object
With Sheet2
LrD = .Cells(Rows.Count, 2).End(xlUp).Row
ArrD = .Range("C4:G" & LrD).Value
End With
With Sheet1
Lr = .Cells(Rows.Count, 2).End(xlUp).Row
Arr = .Range("C4:G" & Lr).Value
End With
Set Dic = CreateObject("Scripting.Dictionary")
ReDim KQ(1 To UBound(Arr) + UBound(ArrD), 1 To 7)
For i = 1 To UBound(Arr)
If Arr(i, 1) <> Empty Then
Keys = Arr(i, 1)
If Not Dic.exists(Keys) Then
t = t + 1
Dic.Add (Keys), t
KQ(t, 1) = t
For j = 1 To UBound(Arr, 2)
KQ(t, j + 1) = Arr(i, j)
Next j
Else
k = Dic.Item(Keys)
KQ(k, 4) = KQ(k, 4) + Arr(i, 3)
KQ(k, 6) = KQ(k, 6) + Arr(i, 5)
End If
End If
Next i
For i = 1 To UBound(ArrD)
If ArrD(i, 1) <> Empty Then
Keys = ArrD(i, 1)
If Not Dic.exists(Keys) Then
t = t + 1
Dic.Add (Keys), t
KQ(t, 1) = t
For j = 1 To UBound(ArrD, 2)
KQ(t, j + 1) = ArrD(i, j)
Next j
Else
k = Dic.Item(Keys)
KQ(k, 4) = KQ(k, 4) + ArrD(i, 3)
KQ(k, 6) = KQ(k, 6) + ArrD(i, 5)
End If
End If
Next i
If t Then
Sheet2.Range("B4").Resize(1000, 6).ClearContents
Sheet2.Range("B4").Resize(t, 6) = KQ
End If
Set Dic = Nothing
End Sub