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

Excel公式中的嵌套IF语句

  •  1
  • brettkelly  · 技术社区  · 15 年前

    所以,在前言中,我是Excel业务的新手。我在谷歌上找到了类似的例子,说明了如何做到这一点,所以我认为我还不算太远:

    =IF( AND(D6=FALSE, OR(ISBLANK(B10),B10=0) ),IF( AND(D6=TRUE,B10>=1)," ","Enter number of components"),"fail")
    

    基本上,第一个IF块计算AND表达式的内容。如果该条件通过,我想计算第二个If块(如果条件失败,它将向单元格回显错误)。

    提前感谢您的帮助:)

    6 回复  |  直到 15 年前
        1
  •  2
  •   BoltClock    13 年前

    在我看来,您可能只想评估一次

    =IF( AND(D6=FALSE, OR(ISBLANK(B10),B10=0) ), "Enter number of components", "Fail")
    
        2
  •  1
  •   Andrew Scagnelli    15 年前

    对于这样复杂的东西,您应该尝试在每个单元格中将其分解为更小的函数。一个好的候选者是将AND移动到它自己的单元格中,然后将其用作AND的第一个参数。我不确定是否可以得到一个if,因此请尝试将值设为true和值设为false,然后在其他单元格中进行单独计算。

        3
  •  1
  •   Joel Goodwin    15 年前

    我分解了逻辑,以便更清楚地说明公式中的内容。也许这将帮助您拼凑IF语句的工作原理。

    if (D6 is false & B10 is blank)
         then if (D6 is true & B10 >= 1)
              then "" THIS WILL NEVER HAPPEN
              else "Enter number of components"
    else "fail"
    
        4
  •  0
  •   Pesto    15 年前

    首先,让我们看看代码的结构:

    if D6 = false AND (isblank(B10) OR B10 = 0)
      if D6 = true AND B10 >= 1
        put " "
      else
        put "Enter number of components"
    else
      put "fail"
    

    您将发现的一个问题是,每次输入内部IF语句时,D6都是FALSE。这意味着D6=TRUE总是导致false,因此第二个IF语句总是失败。换句话说,您的代码相当于:

    =IF(AND(D6=TRUE, OR(ISBLANK(B10), B10=0)), "Enter number of components", "fail")
    

        5
  •  0
  •   James Eichele Bernard Igiri    15 年前

    我想你正在寻找这个:

    =IF(OR(ISBLANK(B10),B10=0),"Enter number of components",IF(B10<1,"Fail",""))
    

    如果我理解正确,您希望:

  • 当单元格B10为空或为零时,显示“输入组件数量”
  • 在所有其他情况下,不显示任何内容(“”)

    上面的陈述也呼应了同样的逻辑。

  •     6
  •  -1
  •   brettkelly    15 年前

    结果证明,这完成了任务:

    =IF( OR( AND(D6=TRUE,  OR(ISBLANK(B10),B10=0)), AND(D6=FALSE, OR(B10>=1))), "Selection Invalid","")