В настоящее время у меня есть большой набор данных, в котором я создаю сводку по использованию нескольких критериев. В настоящее время я использую 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, но итоговый результат представляет собой большой временной рядлист с множеством строк данных, и поэтому он действительно боролся.
Надеюсь, это имеет смысл ...