Результат по формуле Excel требует больше времени (EPPlus)

У меня есть рабочая тетрадь, в которой 2 листа. комментарии и резюме

В листе комментариев у меня есть столбцы - категория, тип и статус

  • category принимает строковые значения, такие как комментарии, безопасность, поток управления и т. д.
  • type принимает значения как P или C
  • status принимает значения как Y или N

В моем резюме у меня есть столбцы - категория, P_type, C_Type, total_status.

  • категория содержит те же строки, что и в листе комментариев
  • P_type - номер p-типа соответствующей категории
  • C_type - номер c-типа соответствующей категории
  • total_staus - количество Y соответствующей категории типа P и C

для этого я заполнил каждую ячейку формулами как

if (j == 3)
{
    cellRange.Formula = "SUMPRODUCT((Comments!B:B=B" + i + ")*(Comments!D:D=\"P\"))";
}

if (j == 4)
{
    cellRange.Formula = "SUMPRODUCT((Comments!B:B=B" + i + ")*(Comments!D:D=\"C\"))";
}

if (j == 5)
{        
    cellRange.Formula = "SUMPRODUCT((Comments!B:B=B" + i + ")*(Comments!G:G=\"Y\"))";
}

Примечание: лист комментариев заполняется с использованием базы данных и может иметь любое количество строк. На сводной таблице столбец B содержит строки категорий. В таблицах комментариев столбец D и столбец G содержат тип и статус соответственно.

всякий раз, когда я открываю таблицу Excel или изменяю какие-либо значения ячеек в типе столбца и состоянии, это занимает заметное количество времени.
Нет категории 14, поэтому всего 42 формулы СУММПРОИЗВ.

Я изменил настройки Excel, чтобы использовать все процессоры; в моей системе 8 доступны.

любые предложения по сокращению этих дополнительных вычислений.

Спасибо


person atulya    schedule 29.05.2014    source источник


Ответы (1)


Я добавил ограничение строки в диапазоне поиска для каждой формулы. Сейчас происходит существенное изменение во времени. Намного лучше.

 cellRange.Formula = "SUMPRODUCT((Comments!B7:B"+nTotalRows+"=B" + i + ")*(Comments!D7:D"+nTotalRows+"=\"P\"))";
person atulya    schedule 29.05.2014