Все это происходит от того, что происходит, когда вы используете диапазон из нескольких ячеек в формуле, где ожидается одна ячейка / значение. При этом Excel использует одну ячейку в диапазоне нескольких ячеек, соответствующую строке ячейки, в которую вводится формула, если диапазон является столбцом (или его частью), или ячейкой, соответствующей столбцу ячейка формулы, если диапазон представляет собой строку (или ее часть). Он не возвращает массив.
Если соответствующая строка / столбец отсутствует или указан двумерный диапазон, то #VALUE!
используется вместо
Так, например, если вы введете формулу =--(A2:A7>0.5)
в C5
, Excel оценит ее как =--(A5>0.5)
, так как сравнения обычно принимают отдельные значения, и вы указали несколько ячеек спектр. Если вы введете формулу в A9
, она будет оцениваться как =--(#VALUE!>0.5)
.
Теперь, поскольку SUM()
может принимать в качестве аргументов либо диапазоны / массивы из нескольких ячеек, либо отдельные ячейки / значения в сочетании с тем фактом, что при сравнении, как правило, между отдельными значениями они возвращают одно значение, Excel оценивает =SUM(--(A2:A7>0.5))
as =SUM(--(A5>0.5))
(при вводе в любом месте в $5:$5
, конечно).
Вот почему вы получите либо 0
либо 1
(или ошибку, если соответствующая ячейка в $A:$A
содержит ошибку), если формула введена в любом месте в $2:$7
, и #VALUE!
в противном случае ошибка (так как =SUM(--(#VALUE!>0.5))
оценивается как # #VALUE!
).
Причина, по которой работает =SUMPRODUCT(A2:A4, B2:B4, --(A2:A4>0.5))
заключается в том, что SUMPRODUCT()
предназначен для работы с аргументами диапазона / массива из нескольких ячеек. (Тем не менее, он все равно будет работать с отдельными ячейками / значениями / однозначными массивами.) Таким образом, он рассматривает сравнения как многозначные с результатом массива.
Есть два способа заставить SUM()
работать желаемым образом:
1. Метод INDEX()
Этот метод использует тот факт, что INDEX()
ожидает многосотовый диапазон в качестве первого аргумента, и что INDEX(array,0)
(или мой предпочтительный INDEX(array,)
) возвращает весь массив. Таким образом, сравнение в INDEX(--(A2:A7>0.5),)
является многозначным, и =SUM(INDEX(--(A2:A7>0.5),))
работает как требуется.
2. Метод формулы массива
Сравнение и другие операторы можно принудительно рассматривать как многозначные, введя формулу =SUM(--(A2:A7>0.5))
в качестве формулы массива. Это делается с помощью Ctrl+Shift+Enter вместо просто Enter при вводе формулы.