我有一个电子表格,其中的数据只能输入一列。如果在两个列单元格中输入数据,则应显示错误。我创建了一个简单的公式来进行验证,效果很好:
=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")
为什么我的第一次尝试失败?
答案 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")