En titt på nestede IF-utsagn og alternativer som er lettere å lage og forstå senere.
av David Goodmanson
I min siste artikkel så jeg på en enkel Excel IF-setning pluss deres nyttige fettere CountIf og SumIF. Jeg berørte også den nestede IF-setningen, der det er mange IF-funksjoner i en celle.
Denne gangen vil vi se på den nestede IF-en nærmere og spesielt alternativer som er lettere å lage og forstå senere.
Vi vil se på noen alternative måter å bruke IF-setningen på i noen VBA-kode (Visual Basic for Applications), samt Select Case-setningen.
Rangeringsnummeret i kolonne B blir omgjort til en tekstbeskrivelse i kolonne C. I Excel er det alle mulige måter å gjøre I et enkelt eksempel som dette er en nestet IF nok, men det er andre alternativer som a er lettere å lese av andre mennesker.
Ingen setter seg noen gang på å lage en lang gruppe nestede IF-er. Det kryper vanligvis over alle over tid. En enkel nestet IF med 2 eller 3 alternativer kan vokse med flere og flere IF-er til det punktet at det er uleselig og utsatt for kodefeil. Her er en ‘enkel’ nestet IF med 40 nivåer:
=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 ha 64 nestede IF-er i en formel, men lykke til med feilsøking av en slik linje! Nestede IF-er er litt enklere å kontrollere i nyere versjoner av Excel som har fargekoding for formel osv. Til tross for disse hjelperne, kan tungt nestede IF-er best unngås.
Hvis du tror at de nestede alternativene kan utvides senere, bør du vurdere et av alternativene fra begynnelsen.
Nestet IF
Først, for funksjonene Nested IF, vises formelen 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 nestede IF fungerer fra venstre til høyre for å evaluere den logiske testen, f.eks. B3 = 5, hvis denne karakteren stemmer, setter IF inn teksten «Boom». Hvis B3 ikke er lik 5, ser IF på neste logiske test (B3 = 4) og vurderer hvert trinn i tur og orden.
- IF fortsetter å evaluere hver test til den logiske testen er oppfylt, og avslutter deretter funksjonen.
- Likhetstegnet til venstre for den første IF kreves bare en gang for den første IF, deretter , for hvert nivå av hekking, legger vi ganske enkelt inn teksten IF. (Dette gjelder for alle nestede regnearkfunksjoner).
- Antall åpne parenteser «(» må matches med antall lukkende parenteser «)». I formeleksemplet ovenfor er det 5 åpne parenteser, matchet med 5 lukkende parenteser på slutten. Nylige versjoner av Excel har bedre farger og feilkontrollfunksjoner for å holde parentesene og anførselstegnene rette, men allikevel kan nestede IFs være en plage å trene.
Oppslagstabell
En måte å komme seg rundt komplekset til det nestede IF er å bruke VLOOKUP koblet til en referansetabell ellers hvor i regnearket.
Tabellen vår vil se slik ut:
Funksjonen i kolonne C i den opprinnelige tabellen lyder nå:
=VLOOKUP(B3,$G$2:$H$6,2,FALSE)
Vanligvis legger du oppslagstabellen i en annen fane i samme regneark, men dataene kan hentes fra hvor som helst.
VBA – IF-setningen
Et alternativ er å lage en tilpasset VBA-funksjon og sette hele IF-logikken i VBA-kode.
Dette har fordelen av å være mye lettere å lese og forstå.
Ulempen er behovet for kodesikkerhet og bekymring for at VBA-koden er legitim og ikke et virus. Hvis brukerne ikke er vant til å få regneark med vedlagt kode, vil du kanskje unngå VBA-alternativer.
Her er et kodebit, det er den samme logikken som den nestede IF i begynnelsen av denne artikkelen, men som du kan se, er mye lettere å lese:
" 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
Endelig er Select Case-setningen en enda enklere struktur å lese.
"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-setningen er en annen VBA-struktur som gir en måte å evaluere en rekke alternativer med et minimum av repetitiv tasting nødvendig . Det er også enklere og lettere å lese og bør brukes når det er mer enn tre alternativer av variabelen av interesse.
VBA: og utover …
Endelig for å gi deg en ide av den større kraften i Select Case her er en utvidet versjon av 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 versjonen tester for verdiområder (f.eks. en rangering fra mer enn eller lik 3.5, men mindre enn eller lik 4.5) og gir mulighet for noen som tilbyr en brøkgradering som 2.5.
I tillegg er «Else» -kontrollen nederst i strukturen. I utgangspunktet dekker den ev alt annet vi ikke dekket i våre forrige Elseifs. Hvis ingenting tilsvarer vurderingen, gir den andre delen av strukturen en alternativ kontroll.
Vel, det er det for IF-funksjonsserien. Behold tilbakemeldingene dine, spørsmålene og forslagene. Vi sees neste gang.
Se også
- Excels SUM er mye mer
- Å lage et komplekst Excel celle enkel å bruke
- Flere nestede IF-alternativer
- VALG-alternativet i Excel
- Excels IF-funksjon