Консолидировать данные в разрезе контрагентов, как макросом? - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы