*
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
).