Консолидировать данные в разрезе контрагентов, как макросом? - VBA

Узнай цену своей работы

Формулировка задачи:

Уважаемые спецы! Прошу помощи.Есть исходный формат отчета, как возможно консолидировать данные в разрезе контрагентов? Контрагентов может быть до 200, да и по каждой реализации - возможен разный размер номенклатуры.

Решение задачи: «Консолидировать данные в разрезе контрагентов, как макросом?»

textual
Листинг программы
  1. Sub konsolidazija()
  2.     Dim r, m(), rz(), nam, u
  3.     Dim sp: Set sp = CreateObject("Scripting.Dictionary")
  4.     Dim sz: Set sz = CreateObject("Scripting.Dictionary")
  5.     Dim sm: Set sm = CreateObject("Scripting.Dictionary")
  6.     With Лист1
  7.         m = .[a1].Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 4).Value
  8.         For r = 3 To UBound(m)
  9.             If Not IsNumeric(m(r, 2)) Then ' если не цифра
  10.                nam = m(r, 2)
  11.             Else
  12.                 sp(nam) = sp(nam) + m(r, 2)
  13.                 sz(nam) = sz(nam) + m(r, 3)
  14.                 sm(nam) = sm(nam) + m(r, 4)
  15.             End If
  16.         Next r
  17.         u = sp.keys
  18.         ReDim rz(1 To sp.Count, 1 To 4)
  19.         For r = 0 To UBound(u)
  20.             rz(r + 1, 1) = u(r)
  21.             rz(r + 1, 2) = sp(u(r))
  22.             rz(r + 1, 3) = sz(u(r))
  23.             rz(r + 1, 4) = sm(u(r))
  24.         Next r
  25.         .[g3].Resize(UBound(rz), UBound(rz, 2)) = rz
  26.     End With
  27. End Sub

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы