Comment inclure plusieurs instructions IF dans une cellule dans Google Sheets


17

J'essaie de modifier la valeur d'une cellule dans Google Sheets en fonction de la valeur d'une cellule adjacente. Cette cellule adjacente tire sa valeur de la couleur de la cellule adjacente en utilisant la formule de cette réponse Quora. La valeur de la cellule doit donc changer en fonction du code hexadécimal obtenu à partir de la couleur de la première cellule. Il y a quatre valeurs hexadécimales possibles pour le moment, donc j'essayais de mettre quatre instructions IF différentes dans la même cellule, donc sa valeur est modifiée en fonction de cela.

Ma première tentative a conduit à une erreur d'analyse de formule:

=if((J2="#00ff00","Read"), if(j2="#ff0000", "Unread"), if(j2="#ff9900","In Progress"), if(j2="#000000", "Not Applicable"))

Il est clair que vous ne pouvez pas simplement séparer les instructions if par des virgules. Sur la base de cette question Stack Overflow, j'ai essayé ce code, avec des instructions IF imbriquées:

=if((J2="#00ff00","Read", if(j2="#ff0000", "Unread", if(j2="#ff9900","In Progress",if(j2="#000000", "Not Applicable")))))

Cela conduit également à une erreur d'analyse de formule.

Existe-t-il un moyen de simplement inclure plusieurs instructions IF dans la même cellule qui fonctionnera pour mon code?


Pouvez-vous les combiner en un = OU ou quelque chose de similaire?
AccioBooks

Réponses:


19

Utilisez lookupau lieu de if:

=lookup(B7,
       {"#000000","#00ff00","#ff0000","#ff9900"},
       {"Not applicable", "Read","Unread","In Progress"}
  ) 

Notez que le deuxième paramètre doit être une liste triée.


1
Notez que cela ne fonctionne pas si les éléments du 3e argument sont l'expression
Christiaan Westerbeek

1
Notez que le premier tableau (le tableau "clé") doit être trié (il fonctionnait lorsque le mien était trié par ordre alphabétique croissant) pour qu'il fonctionne comme prévu.
fgblomqvist

@ChristiaanWesterbeek, y a-t-il un moyen de contourner cela, ou devez-vous simplement utiliser imbriqué ifs?
Andrew

23

Réponse courte

Le problème dans les exemples fournis est la parenthèse. Appliquez-les correctement.

Explication

IF() La fonction doit avoir deux paramètres et éventuellement un troisième.

IF(logical_expression, value_if_true, value_if_false)

Le problème spécifique avec

  • le premier exemple fourni est que l'extérieur IF()a trop de paramètres.
  • le deuxième exemple est que logical_expressionles extérieurs IF()ne reviennent pas TRUEouFALSE

Dans Google Sheets, les paramètres des fonctions sont séparés par des virgules (ou des points-virgules si votre feuille de calcul utilise une virgule comme séparateur décimal). Lorsque des parenthèses sont utilisées pour inclure plusieurs opérations et fonctions à l'intérieur d'une fonction, elles sont considérées comme un paramètre de la fonction qui les contient.

Une pratique courante consiste à mettre l'intérieur IF()comme le value_if_false, mais cela pourrait se faire de plusieurs façons. Ajouter à l' IF()intérieur d'un autre autre comme value_if_trueet value_if_falseest appelé IF() logical test nestingou simplement IF() nesting.

Ci-dessous est un exemple d'une formule qui a trois IF(), deux d'entre eux utilisés pour déterminer value_if_falsele parent IF(). Un alignement multiligne et vertical du style de parenthèse est appliqué pour la lisibilité

 =IF(logical_expression, value_if_true, 
     IF(logical_expression, value_if_true, 
        IF(logical_expression, value_if_true, value_if_false
          )
       )
    )

Le style ci-dessus peut être utilisé dans l'écriture de formules Google Sheets. Je l'ai trouvé utile pour le débogage de formule.

Référence


1
Très utile, en particulier l'échantillon multiligne formaté - rendu beaucoup plus facile à comprendre et à mettre en œuvre.
Luke



1

On vous a proposé de la théorie et de meilleures approches, mais pour répondre spécifiquement:

Existe-t-il un moyen de simplement inclure plusieurs instructions IF dans la même cellule qui fonctionnera pour mon code?

s'il vous plaît essayez:

=if(J2="#00ff00","Read", if(J2="#ff0000", "Unread", if(J2="#ff9900","In Progress",if(J2="#000000", "Not Applicable"))))

Autrement dit, votre deuxième tentative sans la première parenthèse ouvrante et sans la dernière parenthèse fermante.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.