Comment corriger cette instruction IF imbriquée dans Excel - vous avez entré trop d'arguments pour cette fonction

0

J'utilise la formule Excel ci-dessous, mais j'obtiens une erreur indiquant que "vous avez entré trop d'arguments pour cette fonction". Existe-t-il un autre moyen de faire fonctionner cette fonction s'il vous plaît?

S'il vous plaît excuser pour cette question de base. Je ne suis pas un expert en 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",""))))
Jeet
la source
Vous avez inclus deux fois la même condition "citiscreening", je suppose que c'est une erreur et je vais donc agir comme si ce n'était pas le cas.
Some_Guy
Pensez à vérifier quoi faire lorsque quelqu'un répond à ma question si l'une des réponses vous a aidé à comprendre votre problème.
Seth

Réponses:

2

Voici un autre moyen d’écrire votre fonction. Chaque niveau serait un argument pour la fonction un niveau au dessus. Si vous consultez la documentation des fonctions IF et OR, vous verrez que, comme le dit l'erreur, vous avez fourni de nombreux arguments à certaines de ces fonctions. À savoir certaines des fonctions if. Le seul correct IF semble être le plus profond imbriqué, chaque autre instance a 4 arguments. Si vous supprimez les "",entrées, cela devrait fonctionner.

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",
                ""
            )
        )
    )
)
Seth
la source
2

Je mettrais en place un tableau avec vos entrées possibles et sortie souhaitée sur une autre feuille:

entrez la description de l'image ici

J'ai appelé le mien Codes

Ensuite, il suffit d’un VLOOKUP pour renvoyer la chaîne désirée:

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

Ceci est maintenant facilement extensible s'il y a de nouvelles entrées et sorties, sans qu'il soit nécessaire de changer la formule. On ajouterait simplement les critères et les résultats au tableau.

Scott Craner
la source
0

Votre problème est la façon dont vous enchaînez les déclarations if.

Une déclaration if dans excel if est toujours dans le format suivant:

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

Vous les avez enchaînés comme

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

Cela n'a aucun sens, parce que vous dites

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

Pour chaîner ensemble des déclarations, vous avez deux options:

  1. Définissez chaque instruction if suivante comme condition FALSE de l'instruction if précédente. Donc, vous dites "Si quelque chose est vrai, affichez-le. Dans le cas contraire, passez à l'instruction if suivante". en langage Excel soit:

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

  2. Concaténer un tas de si déclarations ensemble. Donc, cela revient à dire "si quelque chose est vrai, alors affichez ceci, sinon rien ne s'affiche. Aussi, si quelque chose d'autre est vrai, alors affichez ceci.

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

Notez que dans le premier cas, dès que l'une des conditions est remplie, la formule est complète, alors que dans le second cas, toutes les conditions sont toujours testées. Cela signifie que:

  • la méthode 1 est plus rapide

  • La méthode 2 fonctionne lorsque plusieurs conditions peuvent être remplies.

Donc, avec votre exemple, vous auriez soit

 =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","")))

ou

 =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","")

Dans votre cas, une cellule ne peut pas être à la fois "citiscreening" et "registration". Il est donc plus logique d’utiliser la première, bien que si la rapidité n’est pas si importante que cela, la seconde peut être plus facile à lire et plus facile à lire. modifier, car il n'y a pas beaucoup de crochets à faire correspondre.


conseils:

  • Notez que vous pouvez fractionner une formule sur plusieurs lignes en appuyant sur alt + entrée, cela facilitera la lecture et n'affectera pas le résultat de la formule.

  • Excel fournit un toolyip très pratique qui vous indique l’argument en gras de votre curseur. De plus, si vous cliquez sur l'argument, cette partie de la formule sera mise en évidence.

Dans votre fonction d'origine, vous pouvez voir qu'il y avait trop d'arguments, car après le premier "", rien n'est en gras.

entrez la description de l'image ici

entrez la description de l'image ici


au cas où cela serait utile, voici la réponse ci-dessus en pseudocode:

Option 1.

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

Option 2:

if (condition1) then   
    output1
else 
    output nothing

if (condition2) then
    output2
else 
    output nothing

if (condition3) then
    output3
else 
    output nothing
Un gars
la source