Конвертировать SUMPRODUCT в VBA на большом наборе данных - PullRequest
1 голос
/ 08 ноября 2019

В настоящее время у меня есть большой набор данных, в котором я создаю сводку по использованию нескольких критериев. В настоящее время я использую Sumproduct, который работает, но данные большие, поэтому использование большого количества Sumproduct приводит к замедлению работы электронной таблицы.

В VBA я попробовал несколько вещей: оцените Sumproduct в цикле и вставьте ответ как значение, а также пробовал WorksheetFunction SUMIFS, но также очень медленно.

Я видел примеры в VBA словаря данных, который выглядит хорошо, но не уверен, что смогу его воспроизвести.

Пример моих данных:

StartDate    StartTime  EndDate     EndTime   ID      Quantity
07/10/2019   00:30:00   07/10/2019  01:30:00  ABC123   1000
07/10/2019   00:01:00   08/10/2019  17:30:00  ABC123   15
07/10/2019   03:30:00   09/10/2019  12:00:00  123ABC   2000
07/10/2019   00:01:00   10/10/2019  11:00:00  ABC123   55

Сводная таблица: критерии ID, даты и времени уже заполнены. VBA будет выводить сумму на основе критериев в столбце количества.

ID ABC123

Date         Time      Quantity
07/10/2019   00:00:00  
07/10/2019   00:30:00
07/10/2019   01:00:00
07/10/2019   01:30:00

Критерии: сумма суммы для идентификатора ABC123, если StartDate <= Дата, StartTime <= Время, Дата окончания> = Дата, Время окончания>Время

Пример формулы Excel:

=SUMPRODUCT((StartDate<=$I3)*(StartTime<=$J3)*(EndDate>=$I3)*(EndTime>$J3)*(ID=$J$1)*Quantity)

Результат:

ID ABC123

Date         Time      Quantity
07/10/2019   00:00:00   0
07/10/2019   00:30:00   1070
07/10/2019   01:00:00   1070
07/10/2019   01:30:00   70

Чтобы подчеркнуть, я пробовал SUMIFS и SUMPRODUCT в VBA, но итоговый результат представляет собой большой временной рядлист с множеством строк данных, и поэтому он действительно боролся.

Надеюсь, это имеет смысл ...

...