Страницы: 1
RSS
Суммирование данных с множества листов на один лист, по определенным условиям
 
Здравствуйте, форумчане!

Привожу упрощенный пример моей таблицы:
  • имеется диапазон ячеек с формулами (BB2:BO10)
  • формулы в этих ячейках однотипные, отличаются только ссылками на ячейки (т.е. если формула в BB2 в ней формула =BB1+A2, а если BO5 = BO1+A5)
Необходим макрос, который сам просчитает эти формулы (без записи формул в ячейки) и выведет только результат расчетов.

Из того, что у меня получилось на данный момент:
создать макрос через запись формулы из BB2 и "растянуть" формулы до BO20
Код
Sub Макрос1()
    Range("BB2:BO20").Select
    Range("BB2:BO20").FormulaR1C1 = "=R1C+RC1"
        Range("BB2:BO20").Value = Range("BB2:BO20").Value
End Sub
 
Вам нужно посчитать таблицу суммирования?
 
Не уверен, что правильно понимаю, что значит "таблица суммирования". Мне нужен макрос который сам посчитает формулу (которую я вставлю) и выведет только результат.

В мое примере, выше, формула упрощенная для понимания.
Фактически она имеет вид (написал ниже), последняя строка повторяется много раз (проверяет и суммирует данные с множества листов)
Код
=(соседняя ячейка слева)+
СУММЕСЛИМН('Лист2'!$H:$H;'Лист2'!$C:$C;проверочная ячейка;'Лист2'!$I:$I;проверочная ячейка)-
(СУММЕСЛИ('Лист3'!$A:$A;проверочная ячейка;'Лист3'!FH:FH)+
 
Прикрепил упрощенный файл с формулами. От оригинала отличается только тем, что в оригинальной таблице, на всех листах, значений "НОМЕР" и "ДАТА" очень много и самих листов не 5, а 50+

Формула Лист1 ячейка Е2
Код
=(D2)+
СУММЕСЛИМН(Лист2!$F:$F;Лист2!$G:$G;Лист1!E$1;Лист2!$A:$A;Лист1!$A2)-
(
СУММЕСЛИ(Лист3!$A:$A;Лист1!$A2;Лист3!E:E)+
СУММЕСЛИ(Лист4!$A:$A;Лист1!$A2;Лист4!E:E)+
СУММЕСЛИ(Лист5!$A:$A;Лист1!$A2;Лист5!E:E))
Как работает:
На Листе1, в ячейке E2:
1) берется соседняя, левая ячейка, к ней прибавляется
2) сумма всех ячеек Листа2, столбца F, попадающих под условие, что "ДАТА" (Лист2 столбец G) и "НОМЕР" (Лист2 столбец А) соответствуют проверочным ячейкам (Лист 1, ячейка Е1 и А2)
3) вычитается сумма всех ячеек Листа 3, столбца D, попадающих под условие, что номер (Лист3 столбец А) соответствует проверочной ячейке (Лист1, ячейка А2)
4) пункт 3 повторяется по всем остальным листам (Лист4, Лист5, Лист6...), желательно должен быть выбор листа по названию или по коду (Worksheets(4, 5, 6...))

Собственно нужно: вывести в соответствующие ячейки результат формулы (т.е. вывести не формулу, а именно ответ значениями)
Ответ должен быть получен на Листе1, в тех ячейках у которых есть дата (по столбцу) и номер (по строке), за исключением столбца с первой датой. В примере первый столбец с "ДАТОЙ" (01.01.2021) - столбец D, но по факту дата и столбец может меняться, но он всегда будет самым левым из диапазона с датами).
Изменено: Andrey - 18.05.2021 06:35:39
 
Все еще нуждаюсь в помощи опытных VBA юзеров.
Страницы: 1
Читают тему (гостей: 1)
Наверх