Excel: оптимизировать кучу очень тяжелых SUMIF - PullRequest
4 голосов
/ 19 декабря 2011

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

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

  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") ... 

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

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

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

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

Вы также можете попробовать DSUM, но я сомневаюсь, что это будет быстрее, чем SUMIF.

2 голосов
/ 19 декабря 2011

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

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

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

или

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

где G1 - G4 имеют значения, которые вы хотите перебрать.

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

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

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

Ctrl+Shift+Enter
...