Уважаемые знатоки, пожалуйста, помогите решить следующий вопрос. Самостоятельно решить пока, к сожалению, не получается.
В книге 1й лист - общий заказ, остальные листы - заказы по цехам. Необходимо составить общую заявку из заявок цехов.
1й столбец - наименование, 2й - кол-во и 3й - единицы измерения.
Наименования разбиты на группы. Товары с одинаковыми наименованиями суммируются.
Количество строк в самом заказе и группе варьируется.
Скрины книги прилагаются. Необходимо, чтобы работало в Excel 2003.
Sub УникЗнач()
Const result_sheet = "Сводная"
Dim ws As Worksheet
With Sheets(result_sheet)
.Cells.ClearContents
.Range("A1:A2") = "Отчёт" 'для корректной работы .end(xldown)
For Each ws In Worksheets
If ws.Name <> result_sheet Then
'если первая ячейка листа не пустая, копируем текущую
'область в первую свободную ячейку листа результата
If ws.Range("A1") <> "" Then _
ws.Range("A1").CurrentRegion.Copy .Range("A1").End(xlDown).Offset(1, 0)
End If
Next
.Rows(1).Delete 'удаляем одну строку заголовка (одна нужна для работы фильтра)
'фильтруем уникальные записи в соседний столбец
.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
'Здесь как-то должны суммироваться значения в столбце кол-во и, если возможно, переноситься ед. измерения
.Columns("A:A").Delete 'удаляем исходные данные
.Rows(1).Delete 'удаляем заголовок
End With
End Sub
Макрос не совсем корректно работает, если есть пустые строки внутри таблицы. И, главное, не реализовано суммирование заказов.
Как вариант суммировать можно если растянуть на столбец
Кол-во такую конструкцию:
ЕСЛИ(ЕНД(ВПР(A3;'Цех1'!A1:B17;2;0));0;ВПР(A3;'Цех1'!A1:B17;2;0))+ЕСЛИ(ЕНД(ВПР(A3;'Цех2'!A1:B17;2;0));0;ВПР(A3;'Цех2'!A1:B17;2;0))+...+ЕСЛИ(ЕНД(ВПР(A3;'Цех7'!A1:B17;2;0));0;ВПР(A3;'Цех7'!A1:B17;2;0))
С VB знаком 5 день. Уважительно прошу приводить примеры кода, т.к. ответы вида "попробуй применить такой-то метод" принесут, пока, мало пользы.
Спасибо за понимание.
p.s. Картинки как вложения не присоединились с компьютера. Только так.