1

В Excel, если у меня есть логическая операция формы

{=SUM(IF((A1:A8="Google")*(B1:B8="Stanford")+(C1:C8="Columbia"),1,0))}

Я знаю, что * означает AND() а + означает OR() поэтому мы ищем в столбцах A и B значения "Google" и "Stanford" соответственно или "Columbia" в столбце C.

Но есть ли символ для NOT()?

1 ответ1

3

* работает как AND() а + работает как OR() потому что TRUE имеет значение 1 а FALSE имеет значение 0 .  И, поскольку функция NOT() превращает TRUE в FALSE и наоборот (10), простой способ арифметической реализации 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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .