Excel – IF annidati e alternative

Grazie per esserti unito a noi! Riceverai un messaggio di benvenuto tra pochi istanti.

Uno sguardo alle istruzioni IF annidate e alle alternative che sono più facili da realizzare e comprendere in seguito.

di David Goodmanson

Nel mio ultimo articolo ho esaminato una semplice istruzione IF di Excel più la utili cugini CountIf e SumIF. Ho anche toccato l’istruzione IF annidata, dove ci sono molte funzioni IF in una cella.

Questa volta esamineremo l’IF annidato in modo più dettagliato e soprattutto le alternative che sono più facile da capire in seguito.

Di seguito vedremo alcuni modi alternativi per utilizzare l’istruzione IF in alcuni codici VBA (Visual Basic for Applications), nonché l’istruzione Select Case.

Il numero di valutazione nella colonna B viene trasformato in una descrizione di testo nella colonna C. In Excel ci sono tutti i modi per farlo In un semplice esempio come questo è sufficiente un IF annidato, tuttavia ci sono altre opzioni che a è più facile da leggere da altre persone.

Nessuno si propone mai di creare un lungo gruppo di IF annidati. Di solito si insinua su tutti nel tempo. Un semplice IF annidato con 2 o 3 opzioni può crescere con sempre più IF fino al punto in cui è illeggibile e soggetto a errori di codifica. Ecco un IF nidificato “semplice” con 40 livelli:

=IF(A2="A",TRUE,IF(A2="B",TRUE,IF(A2="C",TRUE,IF(A2="D",TRUE,
IF(A2="E",TRUE,IF(A2="F",TRUE,IF(A2="G",TRUE,IF(A2="H",TRUE,
IF(A2="I",TRUE,IF(A2="J",TRUE,IF(A2="K",TRUE,IF(A2="L",TRUE,
IF(A2="M",TRUE,IF(A2="N",TRUE,IF(A2="O",TRUE,IF(A2="P",TRUE,
IF(A2="Q",TRUE,IF(A2="R",TRUE,IF(A2="S",TRUE,IF(A2="T",TRUE,
IF(A2="U",TRUE,IF(A2="V",TRUE,IF(A2="W",TRUE,IF(A2="X",TRUE,
IF(A2="Y",TRUE,IF(A2="Z",TRUE,IF(A2="AA",TRUE,IF(A2="AB",TRUE,
IF(A2="AC",TRUE,IF(A2="AD",TRUE,IF(A2="AE",TRUE,IF(A2="AF",TRUE,
IF(A2="AG",TRUE,IF(A2="AH",TRUE,IF(A2="AI",TRUE,
IF(A2="AJ",TRUE,IF(A2="AK",TRUE,IF(A2="AL",TRUE,IF(A2="AM",TRUE,
IF(A2="AN",TRUE,FALSE))))))))))))))))))))))))))))))))))))))))

In Excel 2007 puoi avere 64 IF annidati in una formula, anche se buona fortuna per il debug di una riga del genere! Gli IF annidati sono un po ‘più facili da controllare nelle versioni recenti di Excel che hanno una codifica a colori delle formule ecc. Nonostante questi helper, è meglio evitare IF nidificati.

Se pensi che le tue opzioni annidate potrebbero essere estese in seguito, considera una delle alternative fin dall’inizio.

IF annidato

Innanzitutto, per le funzioni IF annidato la formula per la cella C3 è mostrata di seguito.

=IF(B3=5, "Boom", IF(B3=4, "Recovery", IF(B3=3, "Turning Point",
IF(B3=2, "Recession", IF(B3=1, "Depression")))))

L’IF nidificato funziona da sinistra a destra valutando il test logico, ad es. B3 = 5, se tale valutazione è vera, IF inserisce il testo “Boom”. Se B3 non è uguale a 5, IF esamina il test logico successivo (B3 = 4) e valuta ogni passaggio a turno.

  • IF continua a valutare ogni test fino a quando il test logico è soddisfatto, quindi esce dalla funzione.
  • Il segno di uguale a sinistra del primo IF è richiesto solo una volta per quel primo IF, in seguito , per ogni livello di nidificazione, inseriamo semplicemente il testo IF. (Questo è vero per qualsiasi funzione del foglio di lavoro nidificato).
  • Il numero di parentesi aperte “(” deve corrispondere al numero di parentesi chiuse “)”. Nell’esempio di formula sopra ci sono 5 parentesi aperte, abbinate a 5 parentesi chiuse alla fine. Le versioni recenti di Excel hanno migliori colorazioni e funzioni di controllo degli errori per mantenere le parentesi e le virgolette diritte, ma anche così gli IF nidificati possono essere un fastidio da risolvere.

Tabella di ricerca

Un modo per aggirare la complessità dell’IF annidato è usare CERCA.VERT collegato a una tabella di riferimento altro dove nel foglio di lavoro.

La nostra tabella sarebbe simile a questa:

La funzione nella colonna C della tabella originale ora si legge:

=VLOOKUP(B3,$G$2:$H$6,2,FALSE)

Di solito metteresti la tabella di ricerca in un’altra scheda dello stesso foglio di lavoro, ma i dati possono essere prelevati da qualsiasi luogo.

VBA – l’istruzione IF

Un’alternativa è creare una funzione VBA personalizzata e inserire l’intera logica IF nel codice VBA.

Questo ha il vantaggio di essendo molto più facile da leggere e da capire.

Lo svantaggio è la necessità di sicurezza del codice e la preoccupazione che il codice VBA sia legittimo e non un virus. Se i tuoi utenti non sono abituati a ricevere fogli di lavoro con codice allegato, potresti voler evitare le opzioni VBA.

Ecco uno snippet di codice, è la stessa logica dell’IF nidificato all’inizio di questo articolo ma, come te può vedere, è molto più facile da leggere:

" Using a VBA if statement structure
" ==================================
If Rating = 5 Then
Prediction = "Boom"
ElseIf Rating = 4 Then
Prediction = "Recovery"
ElseIf Rating = 3 Then
Prediction = "Turning Point"
ElseIf Rating = 2 Then
Prediction = "Recession"
ElseIf Rating = 1 Then
Prediction = "Depression"
End If

VBA: Select Case

Infine, una struttura ancora più semplice da leggere è l’istruzione Select Case.

"Using a Select Case structure
"=============================
Select Case Rating
Case 5
Prediction = "Boom"
Case 4
Prediction = "Recovery"
Case 3
Prediction = "Turning Point"
Case 2
Prediction = "Recession"
Case 1
Prediction = "Depression"
End Select

L’istruzione Select Case è un’altra struttura VBA che fornisce un modo per valutare una gamma di alternative con un minimo di ripetizione di chiavi richiesta . È anche più semplice e facile da leggere e dovrebbe essere usato quando ci sono più di 3 alternative della variabile di interesse.

VBA: e oltre …

Infine per darti un’idea della maggiore potenza di Select Case ecco una versione estesa di Select Case:

Select Case Rating
Case 4.5 To 10
Prediction = "Boom"
Case 3.5 To 4.49
Prediction = "Recovery"
Case 2.5 To 3.49
Prediction = "Turning Point"
Case 1.5 To 2.49
Prediction = "Recession"
Case 0.5 To 1.4
Prediction = "Depression"
Case 0 To 0.49
Prediction = "Money under the Mattress"
Case Else
Prediction = "No prediction - there"s no economy left!"
End Select

Questa versione verifica intervalli di valori (ad es. una valutazione da maggiore o uguale a 3,5 ma inferiore o uguale a 4,5) e consente a qualcuno che offre una valutazione frazionaria come 2.5.

Inoltre, nella parte inferiore della struttura c’è il controllo “Else”. Fondamentalmente copre ev tutto il resto che non abbiamo trattato nei nostri Elseifs precedenti. Se nulla corrisponde alla valutazione, la parte Else della struttura fornisce un controllo alternativo.

Bene, questo è tutto per la serie di funzioni IF. Continua a ricevere feedback, domande e suggerimenti. Ci vediamo la prossima volta.

Vedi anche

  • SUM di Excel è molto di più
  • Creare un Excel complesso cella facile da usare
  • Altre opzioni IF nidificate
  • L’opzione SCEGLI in Excel
  • Funzione IF di Excel
Grazie per esserti unito a noi! Riceverai un messaggio di benvenuto tra pochi istanti.

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *