Isso tudo deriva do que acontece quando você usa um intervalo de várias células em uma fórmula em que uma única célula / valor é esperado. Quando você faz isso, o Excel usa a célula única no intervalo multi-cell correspondente à linha da célula que a fórmula é inserida, se o intervalo for uma coluna (ou parte dela) ou a célula correspondente à coluna de a célula da fórmula se o intervalo for uma linha (ou parte dela). Não não retorna uma matriz.
Se não houver linha / coluna correspondente ou se um intervalo bidimensional for fornecido, então #VALUE! será usado.
Portanto, por exemplo, se você inserir a fórmula =--(A2:A7>0.5) em C5 , o Excel a avaliará como =--(A5>0.5) , pois as comparações normalmente recebem valores únicos e você forneceu um intervalo de várias células. Se você inserir a fórmula em A9 , ela será avaliada como =--(#VALUE!>0.5) .
Agora, como SUM() pode ter intervalos / matrizes de várias células ou células / valores únicos como argumentos, juntamente com o fato de que as comparações são normalmente entre único valores retornam um único valor, o Excel avalia =SUM(--(A2:A7>0.5)) como =SUM(--(A5>0.5)) (quando inserido em qualquer lugar em $5:$5 , é claro).
É por isso que você receberá um 0 ou 1 (ou o erro se a célula correspondente em $A:$A contiver um erro) se a fórmula for inserida em qualquer lugar em $2:$7 e #VALUE! erro caso contrário (desde =SUM(--(#VALUE!>0.5)) avalia para #VALUE! ).
O motivo pelo qual =SUMPRODUCT(A2:A4, B2:B4, --(A2:A4>0.5)) funciona é porque SUMPRODUCT() foi projetado para funcionar com argumentos de intervalo / matriz de várias células. (Ele irá ainda funcionar com células / valores únicos / matrizes de valor único, embora.) Como tal, ele trata as comparações como multivalorizadas com um resultado de matriz.
Existem dois métodos para fazer com que SUM() funcione da maneira desejada:
1. O método INDEX()
Esse método usa o fato de que INDEX() espera um intervalo de várias células como o primeiro argumento, e que INDEX(array,0) (ou meu INDEX(array,) preferencial) retorna a matriz inteira. Assim, a comparação em INDEX(--(A2:A7>0.5),) tem vários valores e =SUM(INDEX(--(A2:A7>0.5),)) funciona conforme desejado.
2. O método de fórmula de matriz
A comparação e outros operadores podem ser forçados a serem tratados como valores múltiplos, inserindo a fórmula =SUM(--(A2:A7>0.5)) como uma fórmula de matriz. Isto é feito usando Ctrl + Deslocar + Enter ao invés de apenas Enter ao inserir a fórmula.