Dichiarazioni IF annidate di Excel: esempi, buone pratiche e alternative

  • Condividi Questo
Michael Brown

L'esercitazione spiega come utilizzare la funzione IF annidata in Excel per verificare più condizioni. Imparerete anche alcune altre funzioni che potrebbero essere valide alternative all'utilizzo di una formula annidata in Excel.

Come si implementa di solito una logica decisionale nei fogli di lavoro di Excel? Nella maggior parte dei casi, si utilizza una formula IF per verificare la condizione e restituire un valore se la condizione è soddisfatta, un altro valore se la condizione non è soddisfatta. Per valutare più di una condizione e restituire valori diversi a seconda dei risultati, si annidano più IF uno dentro l'altro.

Sebbene sia molto popolare, l'istruzione IF annidata non è l'unico modo per controllare più condizioni in Excel. In questa esercitazione troverete una serie di alternative che vale la pena esplorare.

    Dichiarazione IF annidata di Excel

    Ecco la classica formula IF annidata di Excel in forma generica:

    SE( condizione1 , risultato1 , SE( condizione2 , risultato2 , SE( condizione3 , risultato3 , risultato4 )))

    Si può notare che ogni funzione IF successiva è incorporata nella classe valore_se_falso Ogni funzione IF è racchiusa in un proprio gruppo di parentesi, ma tutte le parentesi di chiusura sono alla fine della formula.

    La nostra generica formula IF annidata valuta 3 condizioni e restituisce 4 risultati diversi (il risultato 4 viene restituito se nessuna delle condizioni è VERA). Tradotta in linguaggio umano, questa istruzione IF annidata dice a Excel di fare quanto segue:

    Test condizione1 , se VERO - restituire risultato1 , se FALSO -

    test condizione2 , se VERO - restituire r risultato2 , se FALSO -

    test condizione3 , se VERO - restituire risultato3 , se FALSO -

    ritorno risultato4

    Per esempio, scopriamo le commissioni di una serie di venditori in base alla quantità di vendite effettuate:

    Commissione Vendite
    3% $1 - $50
    5% $51 - $100
    7% $101 - $150
    10% Oltre 150 dollari

    In matematica, cambiare l'ordine degli addendi non cambia la somma. In Excel, cambiare l'ordine delle funzioni IF cambia il risultato. Perché? Perché una formula IF annidata restituisce un valore corrispondente alla formula prima condizione VERO Pertanto, nelle dichiarazioni IF annidate, è molto importante disporre le condizioni nella giusta direzione: da alta a bassa o da bassa ad alta, a seconda della logica della formula. Nel nostro caso, controlliamo prima la condizione "più alta", poi la "seconda più alta" e così via:

    =IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, ""))))

    Se ponessimo le condizioni in ordine inverso, dal basso verso l'alto, i risultati sarebbero tutti sbagliati perché la nostra formula si fermerebbe dopo il primo test logico (B2>=1) per qualsiasi valore maggiore di 1. Diciamo che abbiamo 100 dollari di vendite - è maggiore di 1, quindi la formula non controllerebbe le altre condizioni e restituirebbe il 3% come risultato.

    Se si preferisce disporre le condizioni dal basso verso l'alto, utilizzare l'operatore "meno di" e valutare prima la condizione "più bassa", poi la "seconda più bassa" e così via:

    =IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))

    Come vedete, ci vuole un bel po' di riflessione per costruire correttamente la logica di un'istruzione IF annidata fino alla fine. E sebbene Microsoft Excel consenta di annidare fino a 64 funzioni IF in un'unica formula, non è una cosa che vorreste davvero fare nei vostri fogli di lavoro. Quindi, se voi (o qualcun altro) state guardando la vostra formula IF annidata di Excel cercando di capire che cosa fa in realtà, è ora diriconsiderate la vostra strategia e probabilmente scegliete un altro strumento nel vostro arsenale.

    Per ulteriori informazioni, consultare l'istruzione IF annidata di Excel.

    IF annidato con condizioni OR/AND

    Nel caso in cui sia necessario valutare alcune serie di condizioni diverse, è possibile esprimere tali condizioni utilizzando le funzioni OR e AND, annidare le funzioni all'interno delle istruzioni IF e poi annidare le istruzioni IF l'una nell'altra.

    IF annidato in Excel con istruzioni OR

    Utilizzando la funzione OR è possibile verificare due o più condizioni diverse nel test logico di ogni funzione IF e restituire VERO se uno qualsiasi (almeno uno) degli argomenti OR è valutato VERO. Per vedere come funziona effettivamente, considerate il seguente esempio.

    Supponiamo di avere due colonne di vendite, ad esempio le vendite di gennaio nella colonna B e le vendite di febbraio nella colonna C. Vogliamo controllare i numeri di entrambe le colonne e calcolare la commissione in base al numero più alto. In altre parole, costruiamo una formula con la seguente logica: se le vendite di gennaio o febbraio sono superiori a 150 dollari, il venditore riceve una commissione del 10%, se le vendite di gennaio o febbraio sono superiori o uguali a101 dollari, il venditore riceve una commissione del 7% e così via.

    Per farlo, scrivete alcune istruzioni OF come OR(B2>150, C2>150) e annidatele nei test logici delle funzioni IF discusse in precedenza. Come risultato, otterrete questa formula:

    =IF(OR(B2>150, C2>150), 10%, IF(OR(B2>=101, C2>=101),7%, IF(OR(B2>=51, C2>=51), 5%, IF(OR(B2>=1, C2>=1), 3%, ""))))

    E far assegnare la commissione in base all'importo delle vendite più elevato:

    Per ulteriori esempi di formule, consultare l'istruzione IF OR di Excel.

    IF annidato in Excel con istruzioni AND

    Se i test logici includono più condizioni e tutte le condizioni devono essere valutate come VERE, esprimetele con la funzione AND.

    Per esempio, per assegnare le commissioni in base a un numero inferiore di vendite, prendete la formula precedente e sostituite le istruzioni OR con AND. In altre parole, dite a Excel di restituire il 10% solo se le vendite di gennaio e febbraio sono superiori a 150 dollari, il 7% se le vendite di gennaio e febbraio sono superiori o uguali a 101 dollari e così via.

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, ""))))

    Di conseguenza, la nostra formula IF nidificata calcola la commissione in base al numero più basso delle colonne B e C. Se una delle due colonne è vuota, non c'è alcuna commissione perché nessuna delle condizioni AND è soddisfatta:

    Se si desidera restituire lo 0% invece di celle vuote, sostituire una stringa vuota (''") nell'ultimo argomento con 0%:

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, 0%))))

    Ulteriori informazioni sono disponibili qui: Excel IF con condizioni multiple AND/OR.

    VLOOKUP invece di IF nidificato in Excel

    Quando si ha a che fare con "scale", cioè intervalli continui di valori numerici che insieme coprono l'intero intervallo, nella maggior parte dei casi è possibile utilizzare la funzione VLOOKUP invece di IF annidati.

    Per cominciare, creare una tabella di riferimento come quella mostrata nello screenshot qui sotto. Quindi, costruire una formula Vlookup con corrispondenza approssimativa , cioè con il ricerca_intervallo impostato su TRUE.

    Supponendo che il valore di ricerca sia in B2 e che la tabella di riferimento sia F2:G5, la formula è la seguente:

    =VLOOKUP(B2,$F$2:$G$5,2,TRUE)

    Si noti che abbiamo risolto il problema tabella_array con riferimenti assoluti ($F$2:$G$5) affinché la formula venga copiata correttamente in altre celle:

    Impostando l'ultimo argomento della formula di Vlookup su VERO, si indica a Excel di cercare la variabile corrispondenza più vicina - se non viene trovata una corrispondenza esatta, restituisce il valore successivo più piccolo del valore di ricerca. Di conseguenza, la formula non corrisponderà solo ai valori esatti della tabella di ricerca, ma anche a qualsiasi valore intermedio.

    Ad esempio, il valore di ricerca in B3 è $95. Questo numero non esiste nella tabella di ricerca e Vlookup con corrispondenza esatta restituirebbe un errore #N/A. Ma Vlookup con corrispondenza approssimativa continua la ricerca finché non trova il valore più vicino che è inferiore al valore di ricerca (che nel nostro esempio è $50) e restituisce un valore dalla seconda colonna della stessa riga (che è 5%).

    Ma cosa succede se il valore di ricerca è inferiore al numero più piccolo della tabella di ricerca o se la cella di ricerca è vuota? In questo caso, una formula Vlookup restituirà l'errore #N/A. Se non è quello che si desidera, annidare VLOOKUP all'interno di IFERROR e fornire il valore da emettere quando il valore di ricerca non viene trovato. Ad esempio:

    =IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Fuori intervallo")

    Nota importante: affinché una formula di Vlookup con corrispondenza approssimativa funzioni correttamente, la prima colonna della tabella di ricerca deve essere ordinata in ordine ascendente dal più piccolo al più grande.

    Per ulteriori informazioni, consultare VLOOKUP a corrispondenza esatta e VLOOKUP a corrispondenza approssimativa.

    L'istruzione IFS come alternativa alla funzione IF annidata

    In Excel 2016 e versioni successive, Microsoft ha introdotto una funzione speciale per valutare più condizioni: la funzione IFS.

    Una formula IFS può gestire fino a 127 test_logico / valore_se_vero e il primo test logico che valuta VERO "vince":

    IFS(logico_test1, valore_se_vero1, [logico_test2, valore_se_vero2]...)

    In base alla sintassi di cui sopra, la nostra formula IF annidata può essere ricostruita in questo modo:

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)

    Si noti che la funzione IFS restituisce l'errore #N/A se nessuna delle condizioni specificate è soddisfatta. Per evitarlo, è possibile aggiungere un ulteriore elemento test_logico / valore_se_vero alla fine della formula, che restituirà 0 o una stringa vuota ("") o qualsiasi valore desiderato se nessuno dei test logici precedenti è VERO:

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")

    Di conseguenza, la nostra formula restituirà una stringa vuota (cella vuota) invece dell'errore #N/A se la cella corrispondente nella colonna B è vuota o contiene un testo o un numero negativo.

    Nota: come per gli IF annidati, la funzione IFS di Excel restituisce un valore corrispondente alla prima condizione che risulta VERA; per questo motivo l'ordine dei test logici in una formula IFS è importante.

    Per ulteriori informazioni, consultare la funzione IFS di Excel al posto dell'IF annidato.

    SCELTA al posto della formula IF annidata in Excel

    Un altro modo per verificare più condizioni all'interno di una singola formula in Excel è utilizzare la funzione SCEGLI, che è progettata per restituire un valore dall'elenco in base alla posizione di tale valore.

    Applicata al nostro set di dati campione, la formula assume la forma seguente:

    =CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)

    Nel primo argomento ( indice_num ), si valutano tutte le condizioni e si sommano i risultati. Dato che VERO equivale a 1 e FALSO a 0, in questo modo si calcola la posizione del valore da restituire.

    Ad esempio, il valore in B2 è 150 dollari. Per questo valore, le prime 3 condizioni sono VERE e l'ultima (B2> 150) è FALSA. Quindi, indice_num è uguale a 3, il che significa che viene restituito il terzo valore, ovvero il 7%.

    Suggerimento: se nessuno dei test logici è VERO, indice_num è uguale a 0 e la formula restituisce l'errore #VALORE! Una soluzione semplice consiste nel racchiudere CHOOSE nella funzione IFERROR in questo modo:

    =IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")

    Per ulteriori informazioni, consultare la funzione SCELTA di Excel con esempi di formule.

    La funzione SWITCH come forma concisa di IF annidato in Excel

    Nelle situazioni in cui si ha a che fare con un insieme fisso di valori predefiniti, non con scale, la funzione SWITCH può essere un'alternativa compatta alle complesse istruzioni IF annidate:

    SWITCH(espressione, valore1, risultato1, valore2, risultato2, ..., [default])

    La funzione SWITCH valuta espressione rispetto a un elenco di valori e restituisce il valore risultato corrispondente alla prima corrispondenza trovata.

    Nel caso in cui si desideri calcolare la commissione in base ai seguenti gradi, piuttosto che agli importi delle vendite, è possibile utilizzare questa versione compatta della formula IF annidata in Excel:

    =SWITCH(C2, "A", 10%, "B", 7%, "C", 5%, "D", 3%, "")

    In alternativa, è possibile creare una tabella di riferimento come quella mostrata nella schermata seguente e utilizzare i riferimenti alle celle invece dei valori codificati:

    =SWITCH(C2, $F$2, $G$2, $F$3, $G$3, $F$4, $G$4, $F$5, $G$5, "")

    Notate che blocchiamo tutti i riferimenti, tranne il primo con il segno $, per evitare che cambino quando si copia la formula in altre celle:

    Nota: la funzione SWITCH è disponibile solo in Excel 2016 e versioni successive.

    Per ulteriori informazioni, consultare la funzione SWITCH - la forma compatta dell'istruzione IF annidata.

    Concatenazione di più funzioni IF in Excel

    Come indicato nell'esempio precedente, la funzione SWITCH è stata introdotta solo in Excel 2016. Per gestire operazioni simili nelle versioni precedenti di Excel, è possibile combinare due o più istruzioni IF utilizzando l'operatore di concatenazione (&) o la funzione CONCATENATE.

    Ad esempio:

    =(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1

    Oppure

    =CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1

    Come avrete notato, in entrambe le formule il risultato viene moltiplicato per 1. Questa operazione serve a convertire la stringa restituita dalla formula Concatena in un numero. Se l'output previsto è un testo, l'operazione di moltiplicazione non è necessaria.

    Per ulteriori informazioni, consultare la funzione CONCATENA in Excel.

    Si può notare che Microsoft Excel offre una serie di valide alternative alle formule IF annidate e si spera che questo tutorial vi abbia dato qualche spunto su come sfruttarle nei vostri fogli di lavoro. Per dare un'occhiata più da vicino agli esempi discussi in questo tutorial, potete scaricare la nostra cartella di lavoro di esempio qui sotto. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Dichiarazione If annidata in Excel - esempi (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.