*
работает как AND()
а +
работает как OR()
потому что TRUE
имеет значение 1
а FALSE
имеет значение 0
.
И, поскольку функция NOT()
превращает TRUE
в FALSE
и наоборот (1
↔ 0
), простой способ арифметической реализации NOT(x)
- 1-x
.
К сожалению, это работает только для 0
и 1
.
Если вы используете +
для OR()
, и у вас есть два (или более) ИСТИННЫХ условия, объединенные в выражении, вы получите значение 2
или больше.
Хорошая новость (которую вы уже знаете) состоит в том, что любое ненулевое число считается TRUE
. Плохая новость в том, что 1-2
- это -1
, что не равно нулю и, следовательно, также TRUE
.
Альтернативным решением является логическое выражение x=0
, например,
(((A1:A8="Google")*(B1:B8="Stanford")+(C1:C8="Columbia"))=0)
Если x
равен 0
, это логическое выражение оценивается как TRUE
. Если x
является чем-то отличным от 0
, выражение оценивается как FALSE
. Таким образом, x=0
функционирует как NOT(x)
.
Предупреждение: если вы объединяете несколько логических (TRUE
или FALSE
) значений с *
, +
и -
, они преобразуются в целые числа (числа); но если вы выполните тест number=number
, вы получите логическое значение. Таким образом, вы могли бы сказать что-то вроде
=SUM((A1:A8="Google")*(B1:B8="Stanford"))
(без использования IF()
), потому что Boolean*Boolean
это число, но вы не можете сделать
=SUM(((A1:A8="Google")*(B1:B8="Stanford"))=0)
потому что SUM()
не работает с логическими значениями. Но вы можете использовать это
- в
IF()
,
- добавив 0 (
+0
) или
- умножением на 1 (
*1
).