Vai al contenuto

Differenze fra le funzioni `=IF()` e `=SWITCH()`

Impara quando dovresti usare la funzione =IF() in una formula e quando dovresti usare invece la funzione =SWITCH(). La sezione spiega la differenza tramite due esempi.

Le differenze

Qui c'è una spiegazione delle differenze fra =IF() e =SWITCH().

  • La funzione =IF() accetta condizioni multiple innestate come primo parametro. Questo permette di concatenare un insieme di condizioni. Inoltre, puoi innestare ulteriori condizioni come secondo e terzo parametro.
  • La funzione =SWITCH() prende il valore di un campo e lo compare con una serie di casi. Secondo ciascun caso, la funzione restituisce un valore differente come risultato.

Quando usare =IF() o =SWITCH()

Se hai due o più condizioni da verificare come primo parametro e il risultato è un'altra formula da eseguire, usa =IF().

Se hai solo un valore da comparare con una serie di valore come condizioni, usa =SWITCH().

Esempio per =SWITCH()

Considera il caso dove hai un menù a tendina Lookup e un campo di tipo Multiselection.

La seguente formula riempie la cella della Multiselection con un insieme di valori secondo l'Id dell'opzione scelta dal menù a tendina.

Non hai bisogno della =IF() in questo scenario: la funzione =SWITCH() è più corta e facile da impiegare.

Example

1
2
3
4
5
6
7
8
// La formula riguarda un solo valore da controllare
=SWITCH(
    $CURRENTSTORAGE.lookupDropdownlist; 
    =CASE(2; =LIST(1;2;3));
    =CASES(=LIST(3;4); =LIST(4;6));
    =CASE(5; =LIST(5));
    =DEFAULT(=LIST(7))
)

In questo caso, compari un valore ($CURRENTSTORAGE.lookupDropdownlist) con i valori nelle condizioni =CASE() e =CASES(). La formula restituisce il valore in =DEFAULT() se il valore del primo parametro non corrisponde a nessuna condizione di =CASE() e =CASES().

Potresti fare la stessa cosa usando la funzione =IF() e funzionerebbe, ma devi scrivere una formula con condizioni innestate.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
=IF(
    =EQ($CURRENTSTORAGE.lookupDropdownlist; 2); 
    =LIST(1;2;3);
    =IF(
        =OR(
            =EQ($CURRENTSTORAGE.lookupDropdownlist; 3); 
            =EQ($CURRENTSTORAGE.lookupDropdownlist; 4)
        );
        =LIST(4;6);
        =IF(
            =EQ($CURRENTSTORAGE.lookupDropdownlist; 5); 
            =LIST(5);
            =LIST(7)
        )
    )
)

=SWITCH() esprime le stesse condizioni della formula sopra in modo più conciso ed efficiente.

Esempio per =IF()

Considera un caso dove la formula compila il valore di un campo di tipo String. Nell'esempio, la formula aggiorna una cella in un'applicazione di risorse umane che gestisce nuovi impiegati.

La formula controlla se tutte le seguenti condizioni sono soddisfatte:

  • Se il menù a tendina Lookup ha registrato uno stato differente dall'opzione con Id 5.
  • Se l'utente appartiene al gruppo utente (User Group) "HR".
  • Se il campo Booleano "IsRegistered" ha valore true.

Secondo il risultato del primo parametro:

  • Se tutte le condizioni del primo parametro sono soddisfatte, la formula registra nella cella chi ha controllato la riga e quando.
  • Se le condizioni del primo parametro non sono soddisfatte, la formula registra nella cella che nessuno ha ancora controllato la riga.

Hai bisogno di =IF() dato che ci sono condizioni multiple da controllare per differenti valori.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
=IF(
    =AND(
        =NEQ($CURRENTSTORAGE.LookupUserStatus; 5)
        =EQ($CURRENTSTORAGE.IsRegistered; $TRUE);
        =CONTAINS($CURRENTUSER.GROUPNAMES; "HR");
    ); // Il primo parametro controlla tre valori.
    =CONCAT(
        $CURRENTUSER.NAME; 
        " ha verificato in Data "; 
        =FORMATDATE($CURRENTDATE; "dd/MM/yyy HH:mm:ss");
    );
    "Impiegato non ancora controllato."
) 

Non puoi farlo con la =SWITCH(). La =SWITCH() è utile quando la formula compara il valore di un singolo campo. Se ci sono due o più condizione che controllano due o più valori, hai bisogno di =IF().