Сумарният продукт на формулата на Excel отнема повече време (EPPlus)

Имам работна тетрадка, която съдържа 2 листа. коментари и резюме

В листа с коментари имам колони - категория, тип и статус

  • категорията приема низови стойности като коментари, сигурност, контролен поток и т.н.
  • тип приема стойности като P или C
  • състоянието приема стойности като Y или N

В моето резюме имам колони - category, P_type, C_Type, total_status

  • категорията съдържа същите низове като в листа с коментари
  • P_type - номер на p-тип на съответната категория
  • C_type - номер на c-type от съответната категория
  • 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 формули SUMPRODUCT.

Промених настройките на 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