Страницы: 1
RSS
Консолидация / Сумирование данных с n-страниц и n-диапозонов, VBA, ConsolidateRangeArray
 

Доброго дня форум
Имеется вот такой код. Подскажите  пожалуйста как бы его оптимзировать. Я понимаю что он выглядит громоство и неуклюжо. Особенно когда надо добовлять листы или убирать, такая же история и с даипозонами.
Спасибо всем кто отзовется.
Код
Sub recap_data1()
Dim wbk As Workbook
Dim wsh As Worksheet
Dim trgtrng As Range
Dim ConsolidateRangeArray As Variant

Set wbk = Workbooks(Range("BookName").Value)
Set wsh = wbk.Worksheets("Recap")
Set trgtrng = wsh.Range("D12")

  ConsolidateRangeArray = Array("5220!R12C4:R14C8", "400E!R12C4:R14C8", _
                                "4124!R12C4:R14C8", "552E!R12C4:R14C8", _
                                "5304!R12C4:R14C8", "539D!R12C4:R14C8", _
                                "5706!R12C4:R14C8", "5356!R12C4:R14C8", _
                                "4349!R12C4:R14C8", "546E!R12C4:R14C8", _
                                "4187!R12C4:R14C8", "5255!R12C4:R14C8", _
                                "5286!R12C4:R14C8", "5244!R12C4:R14C8", _
                                "5975!R12C4:R14C8", "546P!R12C4:R14C8", _
                                "443x!R12C4:R14C8", "4104!R12C4:R14C8", _
                                "5300!R12C4:R14C8", "527P!R12C4:R14C8", _
                                "504N!R12C4:R14C8", "503N!R12C4:R14C8", _
                                "502B!R12C4:R14C8", "5985!R12C4:R14C8", _
                                "5355!R12C4:R14C8", "442N!R12C4:R14C8", _
                                "4721!R12C4:R14C8")

    trgtrng.Consolidate Sources:=ConsolidateRangeArray, Function:=xlSum
End Sub

 
Alex D, а можете без кода показать файл пример где есть исходные данные и показать результат для примера? и чуть подробнее уточнить что и почему суммируется и что нет?
Изменено: Mershik - 21.01.2021 16:03:06
Не бойтесь совершенства. Вам его не достичь.
 
Пришлось подрезать многое - безопасность. Спасибо за консультацию
Изменено: Alex D - 21.01.2021 16:13:55
 
Цитата
Mershik написал:
и чуть подробнее уточнить что и почему суммируется и что нет?
или думаете файл который впервые видишь сразу становится понятен?)
Изменено: Mershik - 21.01.2021 16:15:00
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
понятен?)
Справидливо ;)

Суммировать нужно ActiveSheet("Recap ARE").Range("D12:H14") по всем Листам в Книге.
Диапозоны иногда меняюся листы тоже

Спасибо )
 
Alex D,
Цитата
Alex D написал:
Диапозоны иногда меняюся листы тоже
как определить что за диапазон не знаю так как ничего сопутствующего нет
Код
Sub mrshkei()
Dim sh As Worksheet, rng As Range
shname = "Recap ARE"
For Each sh In Worksheets
    If sh.Name <> "Cover" And sh.Name <> shname Then
        sh.Range("D12:H14").Copy
        Worksheets("Recap ARE").Range("D12").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
        False, Transpose:=False
    End If
Next sh
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Прошу прощения за долгое молчание. Вполне подошло...
Страницы: 1
Наверх