【问题标题】:Excel - Entering Too many Argument on an IF AND FunctionExcel - 在 IF AND 函数上输入太多参数
【发布时间】:2018-03-11 05:22:37
【问题描述】:

Excel 的公式出错:
You have entered too many arguments for this function.

IF(AND(J2="Ounces",K25),VLOOKUP(D2,'First Class oz'!$A$2:$B$17,2,0)),IF(AND(J2="磅",K25),INDEX('lbs and zone priority'!$A$2:$K$73,MATCH(D2,'lbs and zone priority'!$A$2:$A$73,0),MATCH(H2,'lbs and zone priority'!$A$2:$K$2,0)))))

我知道这是一个非常丑陋的公式。

【问题讨论】:

  • 只需将其分解为最小的部分,然后开始添加更多内容。在组装之前,让每个单独的部分独立工作。这很耗时但并不难,而且你不应该因为你不想这样做而期望其他人这样做。 (此外,这是一个非常基础的故障排除课程,也是非常基础的部分编程。)
  • 现在我仔细观察,发现它有一些问题,而且在不知道您实际尝试做什么的情况下,其他人不可能进行故障排除。摆脱它并重新开始,让每个人 if/then 结果在将它们放在一起之前工作。另外,需要指出的是,您正在使用更多功能,如标题所述,IFAND

标签: excel excel-formula worksheet-function


【解决方案1】:

根据您的代码,看起来您只需要为每个部分正确使用括号即可。

如果块看起来像这样,则正常:

IF ( CONDITION,
    <TRUE STATEMENT>,
    <FALSE STATEMENT>
)

对于嵌套语句或 if,使用括号。 将所有嵌套的真假语句部分放在括号中:

IF ( CONDITION,
    (<TRUE STATEMENT>),
    (<FALSE STATEMENT>)
)

这样你的代码可以是这样的:

IF ( AND(J2="Ounces",K2<=5),
    (VLOOKUP(D2,'Parcel Select oz Lightweight'!$A$2:$B$17,2,0)),
    (IF(AND(J2="Ounces",K2>5),
            (VLOOKUP(D2,'First Class oz'!$A$2:$B$17,2,0)),
            (IF(AND(J2="Pounds",K2<=5),
                (INDEX('lb and zones select'!$A$2:$K$73,MATCH(D2,'lb and zones select'!$A$2:$A$73,0),MATCH(H2,('lb and zones select'!$A$2:$K$2)))),
                (IF(AND(J2="Pounds",K2>5),
                    (INDEX('lbs and zones priority'!$A$2:$K$73,MATCH(D2,'lbs and zones priority'!$A$2:$A$73,0),MATCH(H2,'lbs and zones priority'!$A$2:$K$2,0))),
                    (<Put a false part here, it was missing your code>)
                ))
            ))
    ))  

)

请检查上述代码和您的代码的差异,以详细了解您错过括号的开始或结束的位置。

【讨论】:

    【解决方案2】:

    如果您使用缩进拆分代码,您会看到您的第一个 IF 有 4 个参数(ConditionTrue StatementFalse StatementToo Many Statements)以及您的第二个和第四个 IF s 只有两个参数:

    =IF(
        AND(J2="Ounces",K2<=5), //Condition
        VLOOKUP(D2,'Parcel Select oz Lightweight'!$A$2:$B$17,2,0), //True
        IF( //False
            AND(J2="Ounces",K2>5), //Condition
            VLOOKUP(D2,'First Class oz'!$A$2:$B$17,2,0) //True
        ), //No false?
        IF( //Too many!
            AND(J2="Pounds",K2<=5), //Condition
            INDEX('lb and zones select'!$A$2:$K$73, //True
                MATCH(D2,'lb and zones select'!$A$2:$A$73,0),
                MATCH(H2,('lb and zones select'!$A$2:$K$2)) //Why the brackets?
            ),
            IF( //False
                AND(J2="Pounds",K2>5), //Condition
                INDEX('lbs and zones priority'!$A$2:$K$73, //True
                    MATCH(D2,'lbs and zones priority'!$A$2:$A$73,0),
                    MATCH(H2,'lbs and zones priority'!$A$2:$K$2,0)
                ) //No false?
            )
        )
    )
    

    您好像放错了一个支架,需要将它移到最后。

    (跳过False Statement 语句只会意味着公式在这种情况下返回FALSE

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 2018-12-22
      • 2021-12-13
      • 2015-04-30
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      相关资源
      最近更新 更多