代码之家  ›  专栏  ›  技术社区  ›  EvilDr

为什么Excel在包装和时不会失败?

  •  0
  • EvilDr  · 技术社区  · 6 年前

    我有一个电子表格,数据只能输入一列。如果数据输入 二者都 列单元格,则应显示错误。我创建了一个简单的公式来进行验证,它很好地工作:

    =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 回复  |  直到 6 年前
        1
  •  5
  •   Tim Biegeleisen    6 年前

    这里的问题是否定 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")