Почему Excel не терпит неудачу, когда обернуто вокруг AND? - PullRequest
0 голосов
/ 29 января 2019

У меня есть электронная таблица, в которой данные должны вводиться только в один столбец.Если данные введены в обе ячейки столбца , то должна появиться ошибка.Я создал простую формулу для этой проверки, которая отлично работает:

=IF(AND(H3<>"", I3<>""), "ERROR", "OK")

Однако затем я попытался изменить ее, чтобы использовать NOT(ISBLANK...):

=IF(NOT(AND(ISBLANK(H2), ISBLANK(I2))), "ERROR", "OK")

Это не работает, но я не могу понять, почему.У меня есть две проверки для пустых ячеек, где вывод инвертируется на NOT, но проверки не пройдены.Я подумал, что эта формула будет функционировать так:

Assuming ISBLANK(H2) = True and ISBLANK(I2) = True then...
=IF(NOT(AND(ISBLANK(H2), ISBLANK(I2))), "ERROR", "OK")
  equates to
=IF(NOT(AND(True, True)), "ERROR", "OK")
  equates to
=IF(NOT(True), "ERROR", "OK")

Но это на самом деле не соответствует структуре IF в Excel.Я слишком долго смотрел на это, но не вижу, какой бит на самом деле сломан ...!

Я изменил формулу, и это прекрасно работает:

=IF(AND(NOT(ISBLANK(H4)), NOT(ISBLANK(I4))), "ERROR", "OK")

Почему моя первая попытка не удалась?

1 Ответ

0 голосов
/ 29 января 2019

Проблема здесь в том, что отрицание P ^ Q равно !P V !Q, в соответствии с законами Деморгана.Итак, ваша гипотетическая формула:

=IF(NOT(AND(ISBLANK(H2), ISBLANK(I2))), "ERROR", "OK")

при отрицании на самом деле становится такой:

=IF(OR(NOT(ISBLANK(H2)), NOT(ISBLANK(I2)))), "ERROR", "OK")

Обратите внимание, что вы теперь ИЛИ объединяете два средних члена вместо ИЛИ их.Итак, ваша текущая формула, использующая ISBLANK, на самом деле верна:

=IF(AND(NOT(ISBLANK(H4)), NOT(ISBLANK(I4))), "ERROR", "OK")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...