Vincenzo Fatone
Blog personale e non solo
Blog personale e non solo
In due post precedenti, questo e questo, ho parlato della funzione logica SE dove, nella sezione test, si poteva mettere a confronto un dato con un valore di soglia, o controllo che si voglia, e specificare degli output di risposta per i risultati vero o falso, come calcoli o testo.
La situazione è piuttosto semplice poiché il nostro dato potrà essere soltanto maggiore o minore (o maggiore o uguale o minore o uguale) al valore di controllo.
Può accadere che si abbiano più soglie, quindi il nostro dato dovrà essere verificato per ognuna di queste e, per ogni risultato ottenuto dal controllo, delle risposte da far generare alla funzione.
Vediamo un esempio pratico.
Ipotizziamo una piccola applicazione che permette di assegnare delle valutazioni in base al punteggio conseguito da una classe di allievi. Il file in figura mostra l’applicazione.
Nel foglio sono riportati i nomi degli allievi (inventati sul momento) e un punteggio. Nella parte inferiore del foglio ci sono i valori di soglia che verranno utilizzati per ottenere il risultato desiderato: una valutazione testuale.
Iniziamo a comporre la funzione.
Nella cella D4 inseriremo la funzione =SE(C4<=$A$11;$C$11;…
In questa porzione di funzione ho messo a confronto il valore in C4 con A11 (attenzione ai riferimenti assoluti). Se il confronto risulta vero, la funzione dovrà scrivere ciò che trova nella cella C11, cioè insufficiente.
Nel caso il test risulti falso si ha bisogno di ripetere un test per verificare il successivo valore di soglia 60. Quindi:
SE(C4<=$A$12;$C$12;…
In questa porzione, successiva alla precedente, si è inserita una nuova funzione SE. Notare bene come sia assente il segno di uguale per la funzione nidificata poiché in una funzione se ne può inserire uno soltanto. Fanno eccezione gli operatori logici >= e <=, ma sono operatori specifici, quindi non interferiscono con il simbolo di inizio funzione.
Il controllo effettuato pone il dato a confronto con il valore di soglia 80 e se il test risulta vero, verrà riportato ciò che è scritto in cella C12, cioè buono.
A questo punto, se il dato non è minore o uguale a 60 e non è minore o uguale a 80, dovrà per forza essere un valore maggiore a 80, quindi farà parte dell’ultimo range. In questo caso non c’è bisogno di una nuova funzione SE, ma verrà specificato il risultato che si vuole: …$C$13)).
Mettiamo insieme la formula:
=SE(C4<=$A$11;$C$11;SE(C4<=$A$12;$C$12;$C$13))
In questo esempio potete vedere come una funzione SE sia stata nidificata all’interno di un’altra funzione SE. Nelle versioni precedenti di Excel era possibile nidificare un massimo di 7 funzioni totali. Nella versione 2007 è possibile, invece, nidificare fino a 64 funzioni. In questo modo gli scenari di controllo possono diventare molto sofisticati e dettagliati.
Tornando all’esempio, bisogna fare attenzione ad alcuni particolari:
Su quest’ultimo punto preferisco fare un esempio pratico, onde evitare confusione.
La scelta arbitraria di utilizzare minore o uguale (<=) nella funzione, costringe a verificare i valori partendo dal più basso, cioè 60. Il primo test verifica se il punteggio corrisponde ad un numero compreso tra zero e sessanta. Il secondo controllo verifica se il valore è compreso tra 61 e 80. Se questi due test sono risultati falsi, è logico che il valore sia superiore ad 81.
Lo stesso risultato si può ottenere utilizzando l’operatore >=, ma la logica della funzione andrà invertita, cominciando la verifica dalla soglia più alta. Ecco la funzione:
=SE(C4>=$A$12;$C$13;SE(C4>=$A$11;$C$12;$C$11))
Il risultato non cambia! E’ soltanto un’impostazione diversa. Ho mostrato questo non per confondere le idee di quanti leggono questo post, ma solo perchè ognuno ha un proprio modo di ragionare, quindi potrà adottare la soluzione che per lui è più semplice da seguire. Inoltre sperimentare è il modo migliore per prendere confidenza con concetti nuovi.
Per concludere, aggiungo che questo post era specifico per la funzione SE. E’ possibile, naturalmente, nidificare funzioni diverse tra loro. Per esempio la funzione Media dentra una funzione SE, Somma dentro SE o entrambi, come la funzione SE dentro una Somma o una Media. Insomma, ogni funzione disponibile e a seconda delle esigenze di calcolo.
Se avete domande o volete chiarimenti, o lasciare soltanto un commento, mi trovate qui.
31 agosto 2009 - 10:32
Grazie per l’ottima spiegazione.
Non ricordavo la sintassi di SE nidificata e non riuscivo a trovarla in rete.
Lucio
31 agosto 2009 - 10:48
Prego. Felice di essere stato utile.
26 luglio 2010 - 15:30
Salve, come già da lei scritto è possibile nidificare il se per 7 volte (v.2003), ho la necessità di inserire l’VIII condizione per stabilire delle soglie, c’è una formula alternativa? grazie
26 luglio 2010 - 16:44
Salve Alice, e ben venuta sul mio blog.
Riguardo alla domanda, non saprei. Dipende molto da cosa deve fare nello specifico e se è possibile, eventualmente, aggregare una o più funzioni precedenti.
Senza elementi non è facile risponderle. Se le fosse possibile, potrebbe inviarmi il file con il problema. Mi sarebbe molto più semplice darle qualche indicazione.
Rimango in attesa.
Vincenzo