Excel: оптимизация множества очень тяжелых СУММЕСЛИМН

У меня есть некоторые данные, которые я хочу суммировать в соответствии с определенными критериями.

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

  A    B   C   D
  Id   Id2 Id3 Val
  1    1   8   6
  1    2   7   7
  1    3   3   8
  1    4   6   4
  1    4   78  7
  1    1   2   9
  1    3   1   4
  1    4   3   6
  1    1   5   8
  1    4   7   2

Теперь я хочу, чтобы Val суммировался для каждого идентификатора на основе определенных критериев (например, Id2=4 и Id3=2) для каждого Id, который имеет 100 значений, но я хочу избегайте повторного выполнения суммирования для каждого Id, так как таблица имеет большой вес.

То, что я делал до сих пор, это

= SUMIFS(D:D, A:A, "=1", B:B, "=4", C:C, "=2")
= SUMIFS(D:D, A:A, "=2", B:B, "=4", C:C, "=2")
= SUMIFS(D:D, A:A, "=3", B:B, "=4", C:C, "=2")
= SUMIFS(D:D, A:A, "=4", B:B, "=4", C:C, "=2") ... 

(если я правильно помню синтаксис sumifs)

Есть ли более быстрый способ избежать повторного запуска суммифов для каждого Id?


person abcde123483    schedule 18.12.2011    source источник


Ответы (2)


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

Вы также можете попробовать DSUM, но я сомневаюсь, что это быть быстрее, чем СУММЕСЛИ.

person GSerg    schedule 18.12.2011
comment
Большое спасибо, в итоге я использовал 3 сводные таблицы, и они ускорили обработку данных в 1000 раз :) - person abcde123483; 19.12.2011

Вы также можете использовать формулу массива который также должен быть молниеносным.

Поэтому выберите диапазон, в котором вы хотите получить результаты, затем нажмите F2, чтобы ввести, где вы хотите свою первую формулу. Затем введите следующую формулу массива:

= SUMIFS(D:D, A:A, "="&{1;2;3;4}, B:B, "=4", C:C, "=2")

or

= SUMIFS(D:D, A:A, "="&G1:G4, B:B, "=4", C:C, "=2")

где от G1 до G4 есть ваши значения, которые вы хотите повторить.

Это позволит получить данные только один раз, а не несколько раз, и будет возвращать все значения один раз, а не несколько раз.

Если вы хотите выполнять итерацию слева направо, используйте comma вместо semicolon в своем массиве.

Когда вы вводите формулу массива, вводите ее следующим образом:

Ctrl+Shift+Enter
person Jon49    schedule 19.12.2011