2016-07-22 4 views
0

Я хотел бы узнать, можно ли использовать функцию SUMIF с неявными или «вложенными» массивами. С «неявным» массивом я имею в виду матрицу, данные которой не находятся в ее окончательной форме в любом ранге таблицы, но это функция какого-либо другого массива. Например, скажем, что у нас есть данные независимой переменной (значения, целые числа которой варьируются от 0 до 5) в ранге A1: A100 и данные зависимой переменной в B1: B100. С помощью функции SUMIF мы можем легко вычислить, например, сумму зависимой переменной, когда независимой является 4. Но если мы хотим знать сумму квадратов зависимой переменной, это не так просто, действительно, функция SUMIF дает если мы пишем SUMIF (A1: A100; 4; B1: B100^2) независимо от того, как мы вводим его (как массив или как простая формула).Неявный массив с использованием sumif в Excel

Есть ли способ сделать это, не тратя всю колонну на квадраты значений столбца B?

Я знаю, что для этого примера функция SUMPRODUCT ((A1: A100 = 4) * B1: B100^2) выполнит эту работу, но я не знаю, как «гнездовать» массивы (что очень полезно) в целом.

ответ

1

Ответ нет, я боюсь. Диапазоны, используемые в COUNTIF(S)/SUMIF(S)/AVERAGEIF(S)сусла быть либо:

1) Ссылки на лист диапазонов

2) Конструкции, которые разрешают ссылки на лист диапазоны

Один примера бывшие:

=SUMIF(A1:A10,"A",B1:B10)

И два последних (которые просто оказались идентифицируемых кал к вышесказанному):

=SUMIF(A1:INDEX(A:A,10),"A",B1:INDEX(B:B,10))

=SUM(SUMIF(OFFSET(A1,{0,1,2,3,4,5,6,7,8,9},),"A",OFFSET(B1,{0,1,2,3,4,5,6,7,8,9},)))

Здесь SUMPRODUCT имеет преимущество по сравнению с этой группой функций, в том, что конструкции могут быть переданы, которые не обязательно решить для рабочего листа диапазонов.

Однако вполне возможно, что более эффективная настройка достигается, как вы предположили, сначала используя дополнительный столбец на рабочем листе для вычисления квадратов, а затем ссылаясь на этот столбец в пределах SUMIF, не в последнюю очередь поскольку одно из основных преимуществ, которое COUNTIF(S), SUMIF(s) и т. д. может требовать более SUMPRODUCT, состоит в том, что могут быть переданы произвольные большие ссылки без ущерба для эффективности вычислений. Так, например, разница в производительности между:

=SUMIF(A:A,"A",B:B)

и:

=SUMPRODUCT(0+(A:A="A"),B:B)

огромна, последний, необходимости обрабатывать все 1048576 клетки в пределах этого диапазона (являются ли они технически пределы последние использованные ячейки или нет), что совсем не рекомендуется.

С уважением

Смежные вопросы