Σ Fogli di calcolo

SE annidati: quando sostituirli con PIÙ.SE, SWITCH o una tabella

Come scrivere condizioni con SE, E e O senza perdersi, e quando conviene passare a PIÙ.SE, SWITCH o a una tabella di corrispondenza con una ricerca.

La funzione SE è il primo passo verso fogli di calcolo che «decidono»: se il saldo è negativo scrivi «Da sollecitare», altrimenti «Regolare». Il problema arriva quando le condizioni diventano tre, cinque, dieci, e la formula si trasforma in una catena di SE uno dentro l'altro, con parentesi che nessuno riesce più a contare. Esistono alternative più leggibili, e saperle scegliere rende i fogli molto più facili da mantenere.

La base: SE, E, O

=SE(condizione; valore_se_vero; valore_se_falso)

La condizione è qualsiasi espressione che restituisce VERO o FALSO: B2>1000, C2="Roma", D2<>"". Per combinare più condizioni si usano:

  • E, vera solo se tutte le condizioni sono vere: =SE(E(B2>1000; C2="Roma"); "Priorità"; "");
  • O, vera se almeno una condizione è vera: =SE(O(D2="Urgente"; E2<OGGI()); "Controllare"; "");
  • NON, che inverte il risultato.

Fin qui tutto è chiaro. Il disordine comincia con le scelte multiple.

Il problema dei SE annidati

Supponi di dover assegnare un livello in base al fatturato annuo di un cliente: oltre 100.000 «Platino», oltre 50.000 «Oro», oltre 20.000 «Argento», altrimenti «Base». Con SE annidati:

=SE(B2>100000; "Platino"; SE(B2>50000; "Oro"; SE(B2>20000; "Argento"; "Base")))

Funziona, ma ha tre difetti:

  1. l'ordine conta: se scrivi prima la condizione B2>20000, un cliente da 150.000 risulta «Argento», perché la prima condizione vera vince;
  2. le soglie sono dentro la formula: per cambiarle bisogna modificare ogni cella, o sperare che la formula sia stata copiata ovunque in modo identico;
  3. la leggibilità crolla oltre i tre livelli.

Prima alternativa: PIÙ.SE

PIÙ.SE (IFS in inglese), disponibile nelle versioni recenti di Excel, in Google Sheets e in LibreOffice Calc, elenca coppie di condizione e risultato:

=PIÙ.SE(B2>100000; "Platino"; B2>50000; "Oro"; B2>20000; "Argento"; VERO; "Base")

L'ultima coppia, con VERO come condizione, fa da «altrimenti»: senza di essa, un valore che non soddisfa nessuna condizione produce #N/D. La formula è più lineare, ma restano i difetti 1 e 2: l'ordine conta ancora e le soglie sono ancora scritte nella formula.

Seconda alternativa: SWITCH

SWITCH (con lo stesso nome nell'Excel italiano) è adatta quando confronti un valore con un elenco di valori esatti, non con soglie:

=SWITCH(C2; "N"; "Nord"; "C"; "Centro"; "S"; "Sud"; "Non definito")

Il primo argomento è il valore da esaminare, poi seguono coppie di valore e risultato; l'ultimo argomento, se dispari, è il risultato predefinito. È più compatta di PIÙ.SE perché non ripete C2= a ogni condizione. Non funziona però con confronti come «maggiore di».

La soluzione migliore: una tabella di corrispondenza

Quando le condizioni rappresentano regole di business, come fasce, codici, aliquote o livelli, il posto giusto per quelle regole è una tabella, non una formula. Crea un piccolo intervallo, magari in un foglio «Parametri»:

Soglia Livello
0 Base
20000,01 Argento
50000,01 Oro
100000,01 Platino

Poi usa una ricerca approssimata:

=CERCA.X(B2; Parametri!$A$2:$A$5; Parametri!$B$2:$B$5; ; -1)

oppure, nelle versioni senza CERCA.X, =CERCA.VERT(B2; Parametri!$A$2:$B$5; 2; VERO) con la prima colonna ordinata.

I vantaggi sono concreti:

  • le soglie sono visibili e modificabili da chiunque, senza toccare le formule;
  • aggiungere un livello significa aggiungere una riga;
  • la stessa tabella può alimentare altre formule, grafici o elenchi a discesa.

Per i valori esatti, come i codici regione dell'esempio precedente, vale lo stesso principio con la corrispondenza esatta.

Come scegliere

Situazione Strumento consigliato
Una o due condizioni SE con E e O
Più condizioni diverse tra loro PIÙ.SE
Un valore confrontato con valori esatti SWITCH
Fasce, aliquote, codici che possono cambiare tabella più funzione di ricerca

Consigli di scrittura

  • Vai a capo nella barra della formula con Alt+Invio (in Excel per Windows): una formula lunga divisa su più righe si legge molto meglio e il risultato non cambia.
  • Evita di restituire numeri come testo. "1" tra virgolette è testo e non verrà sommato; scrivi 1.
  • Prevedi sempre il caso residuo. Un SE senza il terzo argomento restituisce FALSO, che in una colonna di etichette è fuorviante.
  • Testa i confini. Con soglie come «oltre 50.000», controlla esplicitamente cosa succede con 50.000 esatti.

Nel mio lavoro, quando una formula supera i tre livelli di SE, lo considero un segnale: quasi sempre c'è una regola che merita di diventare una tabella.

In sintesi

  • SE, E e O bastano per una o due condizioni.
  • Nei SE annidati e in PIÙ.SE l'ordine delle condizioni determina il risultato.
  • SWITCH è la scelta più compatta per confronti con valori esatti.
  • Fasce e regole che possono cambiare vanno in una tabella, interrogata con una ricerca.
  • Verifica sempre i valori di confine e il caso residuo.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche