如何在 Excel 中更正此嵌套的 IF 语句 - 您为此函数输入了太多参数

如何在 Excel 中更正此嵌套的 IF 语句 - 您为此函数输入了太多参数

我正在使用以下 Excel 公式,但收到错误“您为该函数输入了太多参数”。还有其他方法可以让该函数正常工作吗?

请原谅我提出这个基本问题。我不是 Excel 专家。

IF((OR(AF2="CitiCMT", AF2="AML APAC ATHENA", AF2="AML EMEA", AF2="AML Americas")),"AML","", IF((OR(AF2="CitiScreening", AF2="Offshore Wealth Services", AF2="CitiScreening China")),"CitiScreening","", IF((OR(AF2="CitiScreening", AF2="Offshore Wealth Services", AF2="CitiScreening China")),"CitiScreening","", IF((OR(AF2="Registrations", AF2="Trade Surveillance - Markets", AF2="Reg-Reporting", AF2="Trade Surveillance - IBSG", AF2="eCADD", AF2="EmDD", AF2="Trade Surveillance", AF2="Trade Surveillance - Retail")),"Core Compliance",""))))

答案1

编写函数的另一种方法是这样的。每一层都是上一层函数的参数。如果你查看IF 函数OR 函数您将看到,正如错误所言,您为其中一些函数提供了许多参数。即一些 if 函数。唯一正确的 IF 似乎是最深嵌套的 IF,其他每个实例都有 4 个参数。如果您删除这些条目,"",它应该可以工作。

IF(
    (
        OR
        (
            AF2="CitiCMT",
            AF2="AML APAC ATHENA",
            AF2="AML EMEA",
            AF2="AML Americas"
        )
    ),
    "AML",
    "",
    IF
    (
        (
            OR
            (
                AF2="CitiScreening",
                AF2="Offshore Wealth Services",
                AF2="CitiScreening China"
            )
        ),
        "CitiScreening",
        "", 
        IF
        (
            (
                OR
                (
                    AF2="CitiScreening",
                    AF2="Offshore Wealth Services",
                    AF2="CitiScreening China"
                )
            ),
            "CitiScreening",
            "",
            IF
            (
                (
                    OR
                    (
                        AF2="Registrations", AF2="Trade Surveillance - Markets",
                        AF2="Reg-Reporting", AF2="Trade Surveillance - IBSG",
                        AF2="eCADD", AF2="EmDD", AF2="Trade Surveillance",
                        AF2="Trade Surveillance - Retail"
                    )
                ),
                "Core Compliance",
                ""
            )
        )
    )
)

答案2

我将在另一张表上设置一个表格,其中包含您可能的输入和期望的输出:

在此处输入图片描述

我打电话给我Codes

然后只需简单使用 VLOOKUP 返回所需的字符串即可:

=IFERROR(VLOOKUP(AF2,Codes!A:B,2,FALSE),"")

现在,如果有新的输入和输出,可以轻松扩展,而无需更改公式。只需将标准和输出添加到表中即可。

答案3

您的问题在于您将 if 语句链接在一起的方式。

Excel 中的 if 语句始终采用以下格式:

=IF(CONDITION,VAL IF TRUE, VAL IF FALSE)

你把它们连在一起,就像

=IF1(CONDITION1,VAL IF TRUE, VAL IF FALSE, IF2(CONDITION2,...))

这没有任何意义,因为你说的是

=IF1(CONDITION1,VAL IF TRUE, VAL IF FALSE, SOMETHING ELSE)

要将 if 语句链接在一起,您有两个选择:

  1. 使每个后续 if 语句成为前一个 if 语句的 FALSE 条件。因此,您说的是“如果某事为真,则输出此内容。如果不是,则转到下一个 if 语句”。在 excel 语言中:

    =IF(CONDITION1,OUTPUT1,IF(CONDITION2,OUTPUT2,IF(CONDITION3,OUTPUT3,"")))

  2. 将一堆 if 语句连接在一起。这就像是说“如果某事为真,则输出此内容,如果不是,则不输出任何内容。此外,如果其他某事为真,则输出此内容。”

    =IF(CONDITION1,OUTPUT1,"") & IF(CONDITION2,OUTPUT2,"") & IF(CONDITION3,OUTPUT3,"")

请注意,在第一种情况下,只要满足其中一个条件,公式就完成,而在第二种情况下,始终会测试所有条件。这意味着:

  • 方法 1 更快

  • 当多个条件都成立时,方法 2 才有效。

因此,按照你的例子,你可以

 =IF(OR(AF2="CitiCMT", AF2="AML APAC ATHENA", AF2="AML EMEA", AF2="AML Americas"),"AML",
  IF(OR(AF2="CitiScreening", AF2="Offshore Wealth Services", AF2="CitiScreening China"),"CitiScreening",
  IF(OR(AF2="Registrations", AF2="Trade Surveillance - Markets", AF2="Reg-Reporting", AF2="Trade Surveillance
  - IBSG", AF2="eCADD", AF2="EmDD", AF2="Trade Surveillance", AF2="Trade Surveillance - Retail"),"Core Compliance","")))

或者

 =IF(OR(AF2="CitiCMT", AF2="AML APAC ATHENA", AF2="AML EMEA", AF2="AML Americas"),"AML","") & 
  IF(OR(AF2="CitiScreening", AF2="Offshore Wealth Services", AF2="CitiScreening China"),"CitiScreening","") & 
  IF(OR(AF2="Registrations", AF2="Trade Surveillance - Markets", AF2="Reg-Reporting", AF2="Trade Surveillance - IBSG",
  AF2="eCADD", AF2="EmDD", AF2="Trade Surveillance", AF2="Trade Surveillance - Retail"),"Core Compliance","")

在您的情况下,一个单元格不能同时是“citiscreening”和“registrations”,因此使用第一个更有意义,但如果速度不是那么重要,第二个单元格可能更容易阅读,更容易修改,因为没有一堆括号需要匹配。


尖端:

  • 请注意,您可以按 alt+enter 将公式拆分为多行,这将使其更易于阅读并且不会影响公式的输出。

  • Excel 提供了一个方便的工具,它以粗体显示光标所在的参数。此外,如果您单击该参数,它将突出显示公式的该部分。

在原始函数中,您可以看到参数太多,因为在第一个“”之后没有任何内容以粗体显示。

在此处输入图片描述

在此处输入图片描述


以防万一有用,这里是上述答案的伪代码:

选项1。

if (condition1) then   
    output1
    else if (condition2) then
        output2
            else if (condition3) then
                output3
                    else output nothing

选项 2:

if (condition1) then   
    output1
else 
    output nothing

if (condition2) then
    output2
else 
    output nothing

if (condition3) then
    output3
else 
    output nothing

相关内容