решение от doober - пользуйтесь на здоровье.
| Код |
|---|
Dim Sh As Worksheet, Sh1 As Worksheet, rng As Range, Key
Set C_i = CreateObject("scripting.dictionary")
Set Sh = ThisWorkbook.Worksheets("Исходные_данные")
Set Sh1 = ThisWorkbook.Worksheets("Данные_на_выходе")
Last = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row
dx = Sh.Range("A1:J" & Last)
For n = 2 To UBound(dx)
Key = dx(n, 1) & "_" & dx(n, 3) & "_" & dx(n, 5)
If C_i.Exists(Key) Then
dz = C_i.Item(Key)
dz(1, 4) = dz(1, 4) + dx(n, 4)
dz(1, 8) = dz(1, 8) + dx(n, 8)
C_i.Item(Key) = dz
Else
C_i.Item(Key) = Sh.Range("a" & n).Resize(1, UBound(dx, 2)).Value
End If
Next
Items = C_i.Items
Last = Sh1.Cells(Sh.Rows.Count, "A").End(xlUp).Row
If Last > 1 Then
Sh1.Range("A2:J" & Last).ClearContents
End If
For n = 0 To C_i.Count - 1
dz = Items(n)
Sh1.Range("A" & (n + 2)).Resize(1, UBound(dz, 2)) = dz
Next
|
Изменено: - 04.02.2020 19:29:30