Excel 函数 IF 组合产生“您为该函数输入了太多参数”错误

Excel 函数 IF 组合产生“您为该函数输入了太多参数”错误

有人能帮我解决这个问题吗?我试图让这个 Excel 公式起作用,但是,我收到错误提示“您为该函数输入了太多参数”

我是否应该使用不同的 Excel 函数(例如 =IF(AND?

目前的公式如下

=IF(ISBLANK(Q2); IF(TODAY()>R2;"逾期";IF(TODAY()+14>=R2;"两周内到期";"准时"));IF(Q2>R2;"逾期";"准时");IF(TODAY()+14>=R2;"两周内到期";"准时"))IF(Q2>R2;"逾期";"准时"))

我尝试使用这个 IF(AND 公式

=IF(AND(ISBLANK(Q2);IF(TODAY()>R2;"逾期";IF(TODAY()+7>=R2;"一周内到期";"准时"));IF(TODAY()>R2;"逾期";IF(TODAY()+14>=R2;"一周内到期";"准时"));IF(Q2>R2;"逾期";"准时"))

但随后我收到一条错误,指出此公式缺少左括号和右括号

谢谢你!

答案1

让我们一起一步一步地重建您的公式。

获取三行中的一行最简单的方法是使用CHOOSE() 函数

=CHOOSE(<Value 1-3>;"On time";"Due within a week";"Overdue")

现在让我们看看 Q 列中的日期。如果 Q2 中的单元格不包含值,则需要使用当前日期,否则使用此值。这很容易使用IF() 函数

IF(ISBLANK(Q2);TODAY();Q2)

从 R2 的值中减去结果IF()函数的结果和另一个 1。减一将使比较日期的结果相等(如果 Q2 中的日期与 R2 中的日期完全相等,那么我们将得到-1)。我们将减法的结果除以 7,除以一周的天数,然后取除法的整数部分。此外,我们将整个表达式包装在SIGN() 函数

因此我们得到-1对于小于或等于 R2 的所有日期,0对于 R2 之后一周内的日期,以及1所有其他日期。

由于该CHOOSE()函数需要 1 到 3 之间的值,我们将结果加 2。最终公式为: =CHOOSE(SIGN(INT((R2-IF(ISBLANK(Q2);TODAY();Q2)-1)/7))+2;"On time";"Due within a week";"Overdue")

如您所见,该公式比使用嵌套公式要短一些IF()

答案2

取第一个表达式并分离出函数的所有参数IF(),它看起来像这样

=IF (                                                01   Opening bracket of outermost IF
     ISBLANK(Q2);                                    02   Argument 1
     IF (                                            03   Argument 2 starts
         TODAY()>R2;                                 04
         "Overdue";                                  05
         IF (                                        06
             TODAY()+14>=R2;                         07
             "Due within two weeks";                 08
             "On time"                               09
            )                                        10
        );                                           11   Argument 2 ends
     IF (                                            12   Argument 3 starts
         Q2>R2;                                      13
         "Overdue";                                  14
         "On time"                                   15
        );                                           16   Argument 3 ends
     IF (                                            17   Argument 4(!) starts
         TODAY()+14>=R2;                             18
         "Due within two weeks";                     19
         "On time"                                   20
        )                                            21   Argument 4 ends 
    )                                                22   Closing bracket of outermost IF
                                                     23    
IF (                                                 24   No operator joining to  lines 01 to 22
    Q2>R2;                                           25
    "Overdue";                                       26
    "On time"                                        27
   )                                                 28
)                                                    29

最外层的IF,包括它的左括号,位于第 01 行。它应该有 3 个参数 -状况如果条件为真则为值如果条件为假则为值。第一个参数位于第 02 行。第二个参数本身是一个IF()函数,位于第 03 行至第 11 行(含)。第三个参数也是一个IF()函数,位于第 12 行至第 16 行(含)。

第三个参数应该标记最外层的结束IF,但事实并非如此。相反,第 17 行到第 21 行(含)尝试将第四个参数添加到最外层IF()和右括号的末尾。

因此尝试编写一个IF()带有 4 个参数的函数可以解释错误消息“您为此函数输入了过多参数

不幸的是,这不是你的第一个表达式的唯一问题。还有另外两个问题。

首先,第 22 行的右括号后跟IF第 24 行的第二个最外层括号(我插入了一个空白行作为第 23 行,以强调第一个最外层括号IF已经结束)。虽然可以有一个包含两个非嵌套函数的公式,但这些函数需要链接在一起,通常使用运算符。

例如

=IF(A1>0;"Positive";"Negative")&IF(B1="Measured";" Reading";" Estimate")

IF()使用运算符组合两个函数的结果&

其次,第 29 行包含不匹配的右括号。

那么你的表情实际上应该是什么样的呢?

看起来您正在尝试比较两个日期:第二个日期在单元格中R2,第一个日期可能在单元格中Q2- 尽管如果Q2是空白单元格,则将其用作TODAY()第一个日期。除此之外:您希望提供以下结果:

  • “逾期”——第一次约会晚于第二次约会
  • “两周内到期” - 第一次约会不在第二次约会之后,但第二次约会在第一次约会后 14 天内
  • “准时”——否则

有多种方法可以实现这一点:以下是一些主题的变体

方法 1-辅助细胞

S2使用公式为第一个日期分配一个辅助单元格(例如):=IF(ISBLANK(Q2);TODAY();Q2) 然后使用几个嵌套的IF's 来比较中的值,R2S2使用公式获得正确的结果=IF(S2>R2;"Overdue";IF(S2+14>=R2;"Due within two weeks";"On time"))

方法 2 - 重复短语

不要使用辅助单元格,而是在更大的公式中重复其公式: =IF(IF(ISBLANK(Q2);TODAY();Q2)>R2;"Overdue";IF(IF(ISBLANK(Q2);TODAY();Q2)+14>=R2;"Due within two weeks";"On time"))

方法 3 - 使用 LET() 函数定义第一个日期

=LET(firstdate;IF(ISBLANK(Q2);TODAY();Q2);IF(firstdate>R2;"Overdue";IF(firstdate+14>=R2;"Due within 2 weeks";"On time")))

方法 4 - 可能是你最初想要的

=IF(ISBLANK(Q2);IF(TODAY()>R2;"Overdue";IF(TODAY()+14>=R2;"Due within two weeks";"On time"));IF(Q2>R2;"Overdue";IF(Q2+14>=R2;"Due within two weeks";"On time")))

方法 1 很简单,但有时工作表的创建者不喜欢保持简单。方法 2 很笨重,在我看来,在公式中重复短语是一种不好的做法。可以说,方法 3 是微软试图迎合不喜欢方法 1 的非简单主义者,同时避免方法 2 的笨重。要使用方法 3,您需要 Office 365 或 Office 21 版本的 Excel。

方法 4 与方法 2 一样,也存在重复,不过方法 4 中的重复更微妙一些。方法IF()4 最外层的第二个和第三个参数相同,只是第二个参数使用 ,TODAY()而第三个参数将其替换为Q2

公式中的重复通常不是一个好主意,因为对重复部分的任何更正/修改都必须应用多次。

相关内容