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.