Excel – Indlejrede IF’er og alternativer

Tak for din tilslutning! Du får en velkomstbesked om et øjeblik.

Et kig på indlejrede IF-udsagn og alternativer, der er lettere at komme med og forstå senere.

af David Goodmanson

I min sidste artikel kiggede jeg på en simpel Excel IF-sætning plus deres nyttige fætre CountIf og SumIF. Jeg berørte også den indlejrede IF-sætning, hvor der er mange IF-funktioner i en celle.

Denne gang ser vi på den indlejrede IF i mere detaljer og især alternativer, der er lettere at lave og forstå senere.

Herefter ser vi på nogle alternative måder at bruge IF-sætningen på i en VBA-kode (Visual Basic for Applications) samt Select Case-sætningen.

Vurderingsnummeret i kolonne B omdannes til en tekstbeskrivelse i kolonne C. I Excel er der alle mulige måder at gøre I et simpelt eksempel som dette er en indlejret IF nok, men der er andre muligheder, som en er lettere at læse af andre mennesker.

Ingen satser nogensinde på at skabe en lang gruppe indlejrede IF’er. Det kryber normalt alle sammen over tid. En simpel indlejret IF med 2 eller 3 muligheder kan vokse med flere og flere IF’er til det punkt, hvor det er ulæseligt og tilbøjeligt til kodningsfejl. Her er en ‘enkel’ indlejret IF med 40 niveauer:

=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))))))))))))))))))))))))))))))))))))))))

I Excel 2007 kan du have 64 indlejrede IF’er i en formel, selvom held og lykke debugging af en sådan linje! Indlejrede IF’er er lidt nemmere at kontrollere i nyere versioner af Excel, der har formelfarvekodning osv. På trods af disse hjælpere undgås stærkt indlejrede IF’er bedst.

Hvis du mener, at dine indlejrede muligheder muligvis udvides senere, skal du overveje et af alternativerne fra starten.

Indlejret IF

For de indlejrede IF-funktioner vises først formlen for celle C3 nedenfor.

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

Den indlejrede IF fungerer fra venstre mod højre ved evaluering af den logiske test, f.eks. B3 = 5, hvis denne vurdering er sand, indsætter IF teksten “Boom”. Hvis B3 ikke er lig med 5, ser IF på den næste logiske test (B3 = 4) og evaluerer hvert trin efter hinanden.

  • HVIS fortsætter med at evaluere hver test, indtil den logiske test er opfyldt, og afslutter derefter funktionen.
  • Lignetegnet til venstre for den første IF kræves kun én gang for den første IF, derefter , for hvert indlejringsniveau sætter vi simpelthen teksten IF. (Dette gælder for enhver indlejret regnearkfunktion).
  • Antallet af åbne parenteser “(” skal matches med antallet af lukke parenteser “)”. I formeleksemplet ovenfor er der 5 åbne parenteser, matchet med 5 lukkende parenteser i slutningen. Nyere versioner af Excel har bedre farve- og fejlkontrolfunktioner for at holde parenteser og citater lige, men alligevel kan indlejrede IF’er være en gener for at træne.

Opslagstabel

En måde at omgå kompleksiteten af den indlejrede IF er at bruge VLOOKUP, der er knyttet til en anden referencetabel hvor i regnearket.

Vores tabel ser sådan ud:

Funktionen i kolonne C i den originale tabel lyder nu:

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

Normalt placerer du opslagstabellen i en anden fane i det samme regneark, men dataene kan hentes fra hvor som helst.

VBA – IF-sætningen

Et alternativ er at lave en brugerdefineret VBA-funktion og sætte hele IF-logikken i VBA-kode.

Dette har fordelen ved at være meget lettere at læse og forstå.

Ulempen er behovet for kodesikkerhed og bekymring for, at VBA-koden er legitim og ikke en virus. Hvis dine brugere ikke er vant til at få regneark med vedhæftet kode, vil du måske undgå VBA-indstillinger.

Her er et kodestykke, det er den samme logik som den indlejrede IF i starten af denne artikel, men som du kan se, er meget lettere at læse:

" 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: Vælg sag

Endelig er Select Case-sætningen en endnu lettere struktur at læse.

"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

Select Case-sætningen er en anden VBA-struktur, der giver en måde at evaluere en række alternativer med et minimum af gentagne nøgler kræves . Det er også enklere og lettere at læse og bør bruges, når der er mere end 3 alternativer til variablen af interesse.

VBA: og udover…

Endelig for at give dig en idé af den større kraft i Select Case her er en udvidet version af 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

Denne version tester for værdiområder (f.eks. en vurdering fra mere end eller lig med 3,5, men mindre end eller lig med 4,5) og giver mulighed for nogen, der tilbyder en brøkgrad som 2.5.

Derudover er “Else” -kontrollen i bunden af strukturen. Grundlæggende dækker den ev alt andet, som vi ikke dækkede i vores foregående Elseifs. Hvis intet svarer til klassificeringen, giver den anden del af strukturen en alternativ kontrol.

Nå, det er det til IF-funktionsserien. Hold din feedback, spørgsmål og forslag inde. Vi ses næste gang.

Se også

  • Excels SUM er meget mere
  • At lave et komplekst Excel celle nem at bruge
  • Flere indlejrede IF-indstillinger
  • VALG-indstillingen i Excel
  • Excels IF-funktion
Tak for din tilslutning! Du får en velkomstbesked om et øjeblik.

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *