Консолидировать данные в разрезе контрагентов, как макросом? - VBA
Формулировка задачи:
Уважаемые спецы! Прошу помощи.Есть исходный формат отчета, как возможно консолидировать данные в разрезе контрагентов? Контрагентов может быть до 200, да и по каждой реализации - возможен разный размер номенклатуры.
Решение задачи: «Консолидировать данные в разрезе контрагентов, как макросом?»
textual
Листинг программы
- Sub konsolidazija()
- Dim r, m(), rz(), nam, u
- Dim sp: Set sp = CreateObject("Scripting.Dictionary")
- Dim sz: Set sz = CreateObject("Scripting.Dictionary")
- Dim sm: Set sm = CreateObject("Scripting.Dictionary")
- With Лист1
- m = .[a1].Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 4).Value
- For r = 3 To UBound(m)
- If Not IsNumeric(m(r, 2)) Then ' если не цифра
- nam = m(r, 2)
- Else
- sp(nam) = sp(nam) + m(r, 2)
- sz(nam) = sz(nam) + m(r, 3)
- sm(nam) = sm(nam) + m(r, 4)
- End If
- Next r
- u = sp.keys
- ReDim rz(1 To sp.Count, 1 To 4)
- For r = 0 To UBound(u)
- rz(r + 1, 1) = u(r)
- rz(r + 1, 2) = sp(u(r))
- rz(r + 1, 3) = sz(u(r))
- rz(r + 1, 4) = sm(u(r))
- Next r
- .[g3].Resize(UBound(rz), UBound(rz, 2)) = rz
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д