我正在使用以下 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
答案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 语句链接在一起,您有两个选择:
使每个后续 if 语句成为前一个 if 语句的 FALSE 条件。因此,您说的是“如果某事为真,则输出此内容。如果不是,则转到下一个 if 语句”。在 excel 语言中:
=IF(CONDITION1,OUTPUT1,IF(CONDITION2,OUTPUT2,IF(CONDITION3,OUTPUT3,"")))
将一堆 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