Свод по нескольким листам Excel - VBA
Формулировка задачи:
Всем привет, очень нужна помощь !
Есть такая задачка : в файле Excel имеется несколько листов ( может быть от 1 до 100 примерно ) , в этих листах данные по продаже товаров ( некоторые наименования товаров в разных листах повторяются ) .
Ломаю голову на тем, как сделать макрос , в который будет собирать данные из всех листов, вставлять в новый лист (созданный перед всеми) , оставлять только уникальные названия и суммировать информацию по повторяющимся . С макросами я пока не совсем на "ты" , кое что сделать могу , но с такой задачей справиться не получается . Помогите , плиз. пример файла прикрепил.
Заранее благодарю.
Решение задачи: «Свод по нескольким листам Excel»
textual
Листинг программы
- Private Sub Test1()
- Dim iArr(), iCount%
- aSum = Array(2, 3, 4, 6, 7) 'массив суммирования (№№ столбцов)
- aCr = Array(1, 5) 'массив критериев (№№ столбцов)
- With CreateObject("Scripting.Dictionary")
- zg = Sheets(1).Range("B2:H2")
- For Each sh In Sheets
- a = sh.[B2].CurrentRegion
- For i = 2 To UBound(a)
- For Each el In aCr
- t = t & a(i, el)
- Next
- If .exists(t) Then
- b = .Item(t)
- For Each el In aSum
- b(el) = b(el) + a(i, el)
- Next
- Else
- b = Application.Index(a, i, , 1)
- End If
- .Item(t) = b
- t = ""
- Next
- Next
- a = Application.Transpose(.items)
- Workbooks.Add.Worksheets(1).[A2].Resize(.Count, 7) = Application.Transpose(a)
- [a1].Resize(1, 7) = zg
- Columns("A:A").AutoFit
- ActiveSheet.UsedRange.Sort Key1:=Range("A1"), Header:=xlYes
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д