* funciona como AND() e + funciona como OR()
porque TRUE tem um valor de 1 e FALSE tem um valor de 0 .
E, como a função NOT() transforma TRUE em FALSE
e vice-versa ( 1 ↔ 0 ),
uma maneira simples de implementar NOT(x) aritmeticamente
é 1-x .
Infelizmente, isso funciona apenas para 0 e 1 .
Se você estiver usando + para OR() ,
e você tem duas (ou mais) condições VERDADEIRAS combinadas em uma expressão,
você obterá um valor de 2 ou maior.
A boa notícia (que você já conhece)
é que qualquer número diferente de zero conta como TRUE .
A má notícia é que 1-2 é -1 , que é diferente de zero e, portanto, também TRUE .
Uma solução alternativa é a expressão lógica x=0 ,
por exemplo,
(((A1:A8="Google")*(B1:B8="Stanford")+(C1:C8="Columbia"))=0)
Se x for 0 , essa expressão lógica será avaliada como TRUE .
Se x for algo diferente de 0 , a expressão será avaliada como FALSE .
Assim, x=0 funciona como NOT(x) .
Aviso: se você combinar vários valores booleanos ( TRUE ou FALSE )
com * , + e - , eles são convertidos em números inteiros (números);
mas se você fizer um teste number=number ,
você acaba com um booleano. Assim, você poderia dizer algo como
=SUM((A1:A8="Google")*(B1:B8="Stanford"))
(sem usar IF() )
porque Boolean*Boolean é um número
mas você não pode fazer
=SUM(((A1:A8="Google")*(B1:B8="Stanford"))=0)
porque SUM() não funciona em valores booleanos. Mas você pode usá-lo
- em
IF(), - adicionando 0 (
+0) ou - multiplicando por 1 (
*1).