使用 IF 函数时出现“参数过多”错误

使用 IF 函数时出现“参数过多”错误

这是我的公式:

=IF(D4>=98, "5", IF(D4=97, "4.9", IF(D4=OR(95,96), "4.8", IF(D4=94, "4.7", IF(D4=OR(92,93), "4.6", IF(D4=OR(90,91), "4.5", IF(D4=OR(88,89), "4.4", IF(D4=OR(86,87), "4.3", IF(D4=OR(84,85), "4.2", IF(D4=OR(82,83), "4.1", IF(D4=OR(80,81), "4"), IF(D4<=79, "3.9 or below")))))))))))

我正在尝试根据我已有的 100 分制计算结果创建一个 5 星评级系统。

答案1

尝试将表达式分成几行(并根据嵌套进行缩进),这样您就可以计算每个参数,IF()从而轻松找到错误。我可以看到它。你也可以看到它吗?(更新:现在我标记了它。)

IF(
 D4>=98,               1
 "5",                  2
 IF(                   3
  D4=97,                 1
  "4.9",                 2
  IF(                    3
   D4=OR(95, 96),        etc.
   "4.8",
   IF(
    D4=94,
    "4.7",
    IF(
     D4=OR(92, 93),
     "4.6",
     IF(
      D4=OR(90, 91),
      "4.5",
      IF(
       D4=OR(88, 89),
       "4.4",
       IF(
        D4=OR(86, 87),           1
        "4.3",                   2
        IF(                      3
         D4=OR(84, 85),            1
         "4.2",                    2
         IF(                       3
          D4=OR(82, 83),             1  (this IF has 4)
          "4.1",                     2
          IF(                        3
           D4=OR(80, 81),              1
           "4"),                       2
          IF(                        4     <-- error
           D4<=79,                     1
           "3.9 or below")))))))))))   2

此外,您的表达的另一个问题是您需要使用OR(D4=80, D4=81)而不是D4=OR(80, 81)

实际上,使用单个SWITCH()函数来替换所有这些 IF。

答案2

您的公式需要大量更正,让我一一解释。

出现错误的原因,争论太多

  • 您将括号放)错了位置,请检查下面公式的最后一部分,以)粗体和斜体表示。

    如果 (D4=OR(80,81), "4", 如果 (D4<=79, "3.9 或以下")))))))))))

  • "4"TRUE部分,之后是IFFALSE它绝不能放在括号内。

注意: 删除“4”后面的括号后,最后还需要添加一个括号。

  • 它应该像下面显示的那样:

IF(D4=OR(80,81), "4", IF(D4<=79, "3.9 或以下")))))))))))

  • 因此你的公式应该这样写:

    =IF(D4>=98, "5", IF(D4=97, "4.9", IF(D4=OR(95,96), "4.8", IF(D4=94, "4.7", IF(D4=OR(92,93), "4.6", IF(D4=OR(90,91), "4.5", IF(D4=OR(88,89), "4.4", IF(D4=OR(86,87), "4.3", IF(D4=OR(84,85), "4.2", IF(D4=OR(82,83), "4.1", IF(D4=OR(80,81), "4", IF(D4<=79, "3.9 or below"))))))))))))
    

现在另一个问题:

  • 您已使用,如果中的值为或,则IF(D4=OR(95,96), "4.8"返回。FALSE4.8D49596

  • 原因是,公式不会读取中的95或,即使 中填充了任一值。96D4

  • 它应该像下面显示的那样:

    IF(OR(D4=95,D4=96), "4.8"

  • 由于您正在处理数字数据,因此在这种情况下,所有TRUE值都应不带引号,例如4.8

注意: TRUE如果您需要作为文本值,您可以保留“4.8” 。

最后我想推荐这样的公式,它测试所有值都会返回预期结果。

  =IF(D4>=98, 5, IF(D4=97, 4.9, IF(OR(D4=95,D4=96), 4.8, IF(D4=94, 4.7, IF(OR(D4=92,D4=93), 4.6, IF(OR(D4=90,D4=91), 4.5, IF(OR(D4=88,D4=89), 4.4, IF(OR(D4=86,D4=87), 4.3, IF(OR(D4=84,D4=85), 4.2, IF(OR(D4=82,D4=83), 4.1, IF(OR(D4=80,D4=81), 4, IF(D4<=79, "3.9 or below"))))))))))))

答案3

大家好,戴夫的回答看起来是最好的。

如果您不想走那条路,另一个简单的解决方案是设置另一个(如果需要,可以隐藏)值工作表,然后对包含值和表的单元格使用简单的 VLOOKUP。

我希望你已经把事情弄清楚了。

相关内容