Я использую приведенную ниже формулу 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 ответа3

2

Другой способ написать вашу функцию - это. Каждый уровень будет аргументом функции на уровень выше ее. Если вы посмотрите документацию для 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",
                ""
            )
        )
    )
)
2

Я бы создал таблицу с вашими возможными входами и желаемыми результатами на другом листе:

Я назвал мои Codes

Тогда VLOOKUP просто возвращает нужную строку:

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

Это теперь легко расширяется, если есть новые входы и выходы, без необходимости менять формулу. Можно просто добавить критерии и выходные данные в таблицу.

0

Ваша проблема в том, как вы объединяете операторы 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, у вас есть два варианта:

  1. Сделайте каждый последующий оператор if условием FALSE предыдущего оператора if. Итак, вы говорите:«Если что-то верно, выведите это. Если нет, то переходите к следующему оператору 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" и "регистрация", поэтому имеет смысл использовать первый, хотя, если скорость не так важна, второй может быть легче читать, и легче изменить, потому что нет скобок, чтобы соответствовать.


чаевые:

  • Обратите внимание, что вы можете разбить формулу по строкам, нажав 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .