Come includere più istruzioni IF in una cella in Fogli Google


17

Sto tentando di modificare il valore di una cella in Fogli Google in base al valore di una cella adiacente. Questa cella adiacente ottiene il suo valore dal colore della cella adiacente ad essa usando la formula da questa risposta di Quora. Quindi il valore della cella dovrebbe cambiare in base al codice esadecimale che si ottiene dal colore della prima cella. Ci sono quattro possibili valori esadecimali al momento, quindi stavo cercando di mettere quattro diverse istruzioni IF nella stessa cella, quindi il suo valore è cambiato in base a questo.

Il mio primo tentativo ha portato a un errore di analisi della formula:

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

È chiaro che non puoi semplicemente separare se le istruzioni con virgole. Sulla base di questa domanda Stack Overflow ho provato questo codice, con istruzioni IF annidate:

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

Questo porta anche a un errore di analisi della formula.

Esiste un modo per includere semplicemente più istruzioni IF nella stessa cella che funzionerà per il mio codice?


Puoi combinarli in un = OR o qualcosa di simile?
AccioBooks,

Risposte:


19

Usa lookupinvece di if:

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

Nota il secondo parametro deve essere un elenco ordinato.


1
Nota che questo non funziona se gli elementi nel terzo argomento sono espressione
Christiaan Westerbeek

1
Si noti che il primo array (l'array "key") deve essere ordinato (ha funzionato quando il mio è stato ordinato alfabeticamente in ordine crescente) affinché funzioni come previsto.
fgblomqvist,

@ChristiaanWesterbeek, c'è un modo per aggirare questo, o devi solo usare nidificato ifs?
Andrew

23

Risposta breve

Il problema negli esempi forniti è la parentesi. Applicali correttamente.

Spiegazione

IF() La funzione dovrebbe avere due parametri e, facoltativamente, un terzo.

IF(logical_expression, value_if_true, value_if_false)

Il problema specifico con

  • il primo esempio fornito è che l'esterno IF()ha troppi parametri.
  • il secondo esempio è che logical_expressiongli estremi IF()non ritornano TRUEoFALSE

In Fogli Google i parametri delle funzioni sono separati da virgole (o punti e virgola se il foglio di calcolo utilizza la virgola come separatore decimale). Quando le parentesi vengono utilizzate per racchiudere diverse operazioni e funzioni all'interno di una funzione, vengono considerate come un parametro della funzione che le contiene.

Una pratica comune è quella di mettere l'interno IF()come il value_if_false, ma potrebbe essere fatto in molti modi. Aggiungendone IF()un altro come value_if_truee come value_if_falseviene chiamato IF() logical test nestingo solo IF() nesting.

Di seguito è riportato un esempio di una formula con tre IF(), due dei quali utilizzati per determinare value_if_falseil padre IF(). Per la leggibilità viene applicato un allineamento multilinea e verticale dello stile tra parentesi

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

Lo stile sopra potrebbe essere utilizzato nella scrittura della formula di Fogli Google. L'ho trovato utile per il debug della formula.

Riferimento


1
Molto utile, in particolare l'esempio multilinea formattato, ha reso molto più semplice la comprensione e l'implementazione.
Luca



1

Ti sono stati offerti la teoria e approcci migliori ma per rispondere in modo specifico:

Esiste un modo per includere semplicemente più istruzioni IF nella stessa cella che funzionerà per il mio codice?

vi preghiamo di provare:

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

Cioè, il tuo secondo tentativo senza la prima parentesi aperta e senza l'ultima parentesi chiusa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.