web-dev-qa-db-fra.com

Comment inclure plusieurs instructions IF dans une cellule de Google Sheets

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 this Quora answer. 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 hexagonales possibles pour le moment, donc j'essayais de mettre quatre instructions IF différentes dans la même cellule. Sa valeur est donc modifiée en conséquence.

Ma première tentative a conduit à une erreur d'analyse de la 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 avec des virgules. Basé sur la question this 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, ce qui fonctionnera pour mon code?

15
Jack Graveney

Utilisez lookup au 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.

18
daniel

Réponse courte

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

Explication

IF() La fonction devrait 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 la IF() extérieure a trop de paramètres.
  • le deuxième exemple est que l'expression logique de la IF() extérieure ne renvoie pas TRUE ou FALSE

Dans les fonctions Google Sheets, les paramètres sont séparés par des virgules. Lorsque les parenthèses sont utilisées pour inclure plusieurs opérations et fonctions dans une fonction, elles sont considérées comme un paramètre de la fonction qui les contient.

Une pratique courante consiste à définir le IF interne () comme value_if_false, mais vous pouvez le faire de différentes manières. Ajouter IF () dans un autre nom comme value_if_true et value_if_false est appelé IF() logical test nesting ou simplement IF() nesting.

Vous trouverez ci-dessous un exemple de formule comportant trois IF(), dont deux servent à déterminer le value_if_false du parent IF(). Un style multiligne et vertical du style parenthèse est appliqué pour plus de 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 pourrait être utilisé dans l'écriture de formules Google Sheets. Je l'ai trouvé utile pour le débogage de formule.

Référence

21
Rubén

Je viens de découvrir comment combiner si et ou.

Exemple:

=IF(OR(B3>49,C3>49,D3>49),”Passed”,”Failed”)
=IF(AND(B3>49,C3>49,D3>49),”Passed”,”Failed”)
=IF(OR(AND(B3>49,C3>49),AND(B3>49,D3>49),AND(C3>49,D3>49)),”Won”,”Failed”)

Donc pour votre exemple:

= if(OR(J2="#00ff00",j2="#ff0000",j2="#ff9900"),"True","False")

Source: tilisation combinée de IF, AND, OR Fonctions logiques dans une feuille de calcul Google Doc .

3
Geoffrey Derry

Vous pouvez imbriquer des instructions IF par exemple

If(if(if(when all 3 equal true)))

Travaillerait

OR

vous pouvez utiliser un IFAND imbriqué par exemple

IF(AND(AND()))

Cela fonctionnerait aussi.

1
TechnicalTophat

On vous a proposé de la théorie et de meilleures approches, mais pour répondre précisément:

Existe-t-il un moyen de simplement inclure plusieurs instructions IF dans la même cellule, ce 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"))))

C'est-à-dire votre deuxième tentative sans la première parenthèse ouvrante et sans la dernière parenthèse fermante.

1
pnuts