Вместо формул, почему не использовать сводную таблицу для сверления чисел? Вы можете столкнуться с более длительным однократным ударом, чтобы загрузить данные в PivotCache, но после этого вы должны найти, что сводная таблица пересчитывает гораздо быстрее в ответ на изменения фильтра, чем эти дорогостоящие формулы. Есть ли причина, по которой вы ее не используете?
Вот некоторые материалы из книги, которую я пишу, где я сравниваю SUMPRODUCT, SUMIFS, DSUM, сводные таблицы, расширенный фильтр и что-то называемое Range Slicing (которое использует умные комбинации INDEX/MATCH на отсортированных данных) условно суммируйте записи в таблице, которая содержит более 1 миллиона записей продаж, на основе выбора, который вы делаете из 10 разных выпадающих списков:
Эти выпадающие списки позволяют фильтровать базу данных с помощью комбинации Хранилища, сегмента, вида, пола, платежа , Cust. История, статус заказа, инструкции по доставке, столбцы «Тип участия» и «Порядок». Таким образом, есть довольно симпатичная гигантская фильтрация и агрегация, чтобы уменьшить эти миллионные записи до одной суммы. Файл описывает шесть различных способов для достижения этого результата, первые три из которых показаны на рисунке ниже:
Как и следовало ожидать, когда все эти выпадающие устанавливаются те же настройки, вы получите точно тот же ответ из шести подходов. Но то, чего вы не ожидаете, - это то, насколько медленным SUMPRODUCT является вычисление нового ответа, если вы измените одно из этих выпадающих списков по сравнению с другими подходами. На самом деле, оказывается, что подход SUMIFS в 15 раз быстрее, чем SUMPRODUCT, придумывая ответ на этот массив мамонтов. Но это ничего: подход нарезки диапазона в 56 раз быстрее!
Подход Range Slicing работает, сортируя исходные данные, а затем используя серию умных формул в вспомогательных столбцах, чтобы умело идентифицировать, где какие-либо учетные записи находятся в пределах этих отсортированных данных. Это означает, что вы можете напрямую суммировать только несколько записей, которые соответствуют, а не выполнять сложный критерий, сопоставляемый сотням тысяч строк (или против миллиона строк, как в примере здесь).
Вот как это выглядит с точки зрения моего образца файла. Число в столбце поддержки строк в правой части показывает, что с помощью некоторого умного устранения функция SUM внизу должна обрабатывать только 18 строк данных (строки от 292996 до 293014), а не все 1 миллион строк. Другими словами, это очень эффективно.
А вот вторая группа альтернатив:
Да, вы можете довольно легко использовать сводную таблицу здесь. И подход PivotTable, по-видимому, примерно в 6 раз быстрее, чем SUMPRODUCT, хотя при вызове фильтров вы получаете небольшую дополнительную задержку, и при первом запуске операции фильтрации требуется еще немного больше времени, поскольку Excel должен загружать PivotCache в память. Но давайте посмотрим правде в глаза: создание сводной таблицы в первую очередь является самым простым из всех этих подходов, поэтому у меня есть мой голос.
Подход DSUM в 12 раз быстрее, чем SUMPRODUCT. Это не так хорошо, как SUMIFS, но это все еще значительное улучшение. Подход Advanced Filter работает только в 4 раза быстрее, чем SUMPRODUCT, что не удивительно, потому что то, что он делает, - это извлечь все записи из исходных данных, которые соответствуют критериям в этом списке, выгрузить его в электронную таблицу и затем суммировать результат.
Обычно COUNTIFS будет примерно в 3 раза быстрее - вы можете использовать подстановочный знак вместо критерия LEFT –
@pnuts У меня есть еще несколько ограничений, которые бы мешали эффективно использовать фильтры. Эти 6000 формул являются наихудшей частью таблицы формул 200 тыс. Формул. Для расчета всего рабочего листа «СУММЫ» выше более 90% времени выполнения. – dnLL
@barryhoudini Не могли бы вы привести пример в качестве ответа на вопрос о том, как вы преобразовали бы мой «SUMPRODUCT» в «COUNTIFS» только с моим первым «SUMPRODUCT» выше и первым 2 критерием? Я просто не знаю, что вы подразумеваете под шаблоном. – dnLL