Как исправить это вложенное выражение IF в Excel - вы ввели слишком много аргументов для этой функции
Я использую приведенную ниже формулу 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",""))))
3 ответа
Другой способ написать вашу функцию - это. Каждый уровень будет аргументом функции на уровень выше ее. Если вы посмотрите документацию для IF-функции и OR-функции, то увидите, что, как говорится в ошибке, вы предоставили множество аргументов для некоторых из этих функций. А именно некоторые из функций 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",
""
)
)
)
)
Я бы создал таблицу с вашими возможными входами и желаемыми результатами на другом листе:
Я назвал мой Codes
Тогда VLOOKUP просто возвращает нужную строку:
=IFERROR(VLOOKUP(AF2,Codes!A:B,2,FALSE),"")
Это теперь легко расширяется, если есть новые входы и выходы, без необходимости менять формулу. Можно просто добавить критерии и результаты в таблицу.
Ваша проблема в том, как вы объединяете операторы if.
Оператор if в Excel, если всегда в формате:
=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 условием FALSE предыдущего оператора if. Итак, вы говорите: "Если что-то верно, выведите это. Если нет, тогда переходите к следующему оператору 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" и "регистрация", поэтому имеет смысл использовать первую, хотя, если скорость не так важна, вторая может быть легче для чтения и легче для изменить, потому что нет скобок, чтобы соответствовать.
чаевые:
Обратите внимание, что вы можете разбить формулу по строкам, нажав 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