当包裹在AND中时,为什么Excel不会失败?

时间:2019-01-29 11:15:40

标签: excel excel-formula

我有一个电子表格,其中的数据只能输入一列。如果在两个列单元格中输入数据,则应显示错误。我创建了一个简单的公式来进行验证,效果很好:

=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")

但这实际上与Excel中的IF结构不匹配。我一直盯着这太久了,但是我看不到哪一点真的坏了……!

我对此修改了公式,效果很好:

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

为什么我的第一次尝试失败?

1 个答案:

答案 0 :(得分:5)

这里的问题是根据迪摩根定律,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")