Inhoudsopgave
De handleiding legt uit hoe u de geneste IF-functie in Excel kunt gebruiken om meerdere voorwaarden te controleren. U leert ook enkele andere functies die goede alternatieven kunnen zijn voor het gebruik van een geneste formule in Excel.
Hoe implementeert u gewoonlijk een besluitvormingslogica in uw Excel-werkbladen? In de meeste gevallen gebruikt u een IF-formule om uw voorwaarde te testen en één waarde terug te geven als aan de voorwaarde wordt voldaan, een andere waarde als niet aan de voorwaarde wordt voldaan. Om meer dan één voorwaarde te evalueren en verschillende waarden terug te geven afhankelijk van de resultaten, nestelt u meerdere IF's in elkaar.
Hoewel zeer populair, is het geneste IF statement niet de enige manier om meerdere voorwaarden te controleren in Excel. In deze handleiding vindt u een handvol alternatieven die zeker de moeite waard zijn om te onderzoeken.
Excel geneste IF-instructie
Hier is de klassieke Excel geneste IF-formule in een algemene vorm:
ALS( voorwaarde1 , resultaat1 , IF( voorwaarde2 , resultaat2 , IF( voorwaarde3 , resultaat3 , resultaat4 )))U ziet dat elke volgende IF-functie is ingebed in de waarde_als_valse Elke IF-functie staat tussen zijn eigen set haakjes, maar alle haakjes staan aan het eind van de formule.
Onze algemene geneste IF-formule evalueert 3 voorwaarden, en geeft 4 verschillende resultaten (resultaat 4 wordt geretourneerd indien geen van de voorwaarden TRUE is). Vertaald in mensentaal vertelt deze geneste IF-instructie Excel het volgende te doen:
Test voorwaarde1 indien TRUE - return resultaat1 indien FALSE -test voorwaarde2 indien TRUE - retourneer r resultaat2 indien FALSE -
test voorwaarde3 indien TRUE - return resultaat3 indien FALSE -
terug resultaat4
Laten we als voorbeeld de commissies voor een aantal verkopers uitzoeken op basis van het aantal verkopen dat ze hebben gedaan:
Commissie | Verkoop |
3% | $1 - $50 |
5% | $51 - $100 |
7% | $101 - $150 |
10% | Meer dan $150 |
In de wiskunde verandert de volgorde van de optellingen de som niet. In Excel verandert de volgorde van de IF-functies het resultaat. Waarom? Omdat een geneste IF-formule een waarde retourneert die overeenkomt met de eerste TRUE voorwaarde Daarom is het in uw geneste IF statements zeer belangrijk om de voorwaarden in de juiste richting te rangschikken - van hoog naar laag of van laag naar hoog, afhankelijk van de logica van uw formule. In ons geval controleren we eerst de "hoogste" voorwaarde, dan de "op één na hoogste", enzovoort:
=IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, " ))))
Als we de voorwaarden in omgekeerde volgorde zouden plaatsen, van beneden naar boven, zouden de resultaten helemaal verkeerd zijn, omdat onze formule zou stoppen na de eerste logische test (B2>=1) voor elke waarde groter dan 1. Laten we zeggen dat we $100 aan verkoop hebben - dat is groter dan 1, dus de formule zou andere voorwaarden niet controleren en 3% als resultaat geven.
Als je de voorwaarden liever rangschikt van laag naar hoog, gebruik dan de "minder dan"-operator en evalueer de "laagste" voorwaarde eerst, dan de "op één na laagste", enzovoort:
=IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))
Zoals u ziet, vergt het heel wat denkwerk om de logica van een geneste IF-verklaring helemaal correct op te bouwen. En hoewel Microsoft Excel het nesten van maximaal 64 IF-functies in één formule toestaat, is het niet iets wat u echt in uw werkbladen wilt doen. Dus, als u (of iemand anders) naar uw Excel geneste IF-formule staart en probeert uit te vinden wat deze eigenlijk doet, is het tijd omheroverweeg je je strategie en kies je waarschijnlijk een ander middel in je arsenaal.
Voor meer informatie, zie Excel geneste IF-instructie.
Nested IF met OR/AND-voorwaarden
Indien u een aantal sets van verschillende voorwaarden moet evalueren, kunt u die voorwaarden uitdrukken met de OR- en AND-functie, de functies nesten in IF-statements, en vervolgens de IF-statements in elkaar nesten.
Nested IF in Excel met OR statements
Door de OF-functie te gebruiken, kunt u twee of meer verschillende voorwaarden controleren in de logische test van elke IF-functie en TRUE teruggeven als een (ten minste één) van de OF-argumenten op TRUE uitkomt. Om te zien hoe het feitelijk werkt, kunt u het volgende voorbeeld bekijken.
Stel, u hebt twee kolommen met verkopen, bijvoorbeeld de verkopen van januari in kolom B en die van februari in kolom C. U wilt de aantallen in beide kolommen controleren en de commissie berekenen op basis van een hoger getal. Met andere woorden, u maakt een formule met de volgende logica: als de verkopen van januari of februari groter zijn dan $150, krijgt de verkoper 10% commissie, als de verkopen van januari of februari groter of gelijk zijn aan$101, de verkoper krijgt 7% commissie, enzovoort.
Om dit te doen, schrijft u een paar OF-statements zoals OR(B2>150, C2>150) en nestelt u ze in de logische tests van de hierboven besproken IF-functies. Als resultaat krijgt u deze formule:
=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%, ""))))".
En laat de commissie gebaseerd zijn op het hogere verkoopbedrag:
Voor meer formulevoorbeelden, zie Excel IF OR statement.
Nested IF in Excel met AND statements
Als uw logische tests meerdere voorwaarden bevatten, en al die voorwaarden moeten uitkomen op TRUE, drukt u ze uit met de functie AND.
Bijvoorbeeld, om de commissies toe te wijzen op basis van een lager aantal verkopen, neemt u de bovenstaande formule en vervangt u OR door AND statements. Anders gezegd, u vertelt Excel om alleen 10% terug te geven als de verkopen in januari en februari groter zijn dan $150, 7% als de verkopen in januari en februari groter zijn dan of gelijk aan $101, enzovoort.
=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%, ""))))".
Het resultaat is dat onze geneste IF-formule de provisie berekent op basis van het laagste getal in de kolommen B en C. Als een van beide kolommen leeg is, is er helemaal geen provisie omdat aan geen van de EN-voorwaarden is voldaan:
Als u 0% wilt teruggeven in plaats van lege cellen, vervangt u een lege tekenreeks (''") in het laatste argument door 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%))))
Meer informatie vindt u hier: Excel IF met meerdere EN/OF-voorwaarden.
VLOOKUP in plaats van geneste IF in Excel
Wanneer u te maken hebt met "schalen", d.w.z. continue reeksen numerieke waarden die samen het hele bereik bestrijken, kunt u in de meeste gevallen de functie VLOOKUP gebruiken in plaats van geneste IF's.
Om te beginnen maakt u een referentietabel zoals in de schermafbeelding hieronder. En vervolgens maakt u een Vlookup-formule met benaderende match , d.w.z. met de range_lookup argument ingesteld op TRUE.
Ervan uitgaande dat de lookup-waarde in B2 staat en de referentietabel F2:G5 is, gaat de formule als volgt:
=VLOOKUP(B2,$F$2:$G$5,2,TRUE)
Merk op dat we de tabel_array met absolute referenties ($F$2:$G$5) zodat de formule correct naar andere cellen wordt gekopieerd:
Door het laatste argument van uw Vlookup formule op TRUE te zetten, vertelt u Excel te zoeken naar de dichtstbijzijnde overeenkomst - indien geen exacte overeenkomst wordt gevonden, retourneert u de volgende grootste waarde die kleiner is dan de opzoekwaarde. Het resultaat is dat uw formule niet alleen overeenkomt met de exacte waarden in de opzoektabel, maar ook met alle waarden die daartussen vallen.
Bijvoorbeeld, de opzoekwaarde in B3 is $95. Dit getal bestaat niet in de opzoektabel, en Vlookup met een exacte overeenkomst zou in dit geval een #N/A-fout opleveren. Maar Vlookup met een benaderende overeenkomst blijft zoeken totdat het de dichtstbijzijnde waarde vindt die minder is dan de opzoekwaarde (die in ons voorbeeld $50 is) en geeft een waarde terug uit de tweede kolom in dezelfde rij (die 5% is).
Maar wat als de opzoekwaarde kleiner is dan het kleinste getal in de opzoektabel of als de opzoekcel leeg is? In dat geval zal een Vlookup-formule de fout #N/A teruggeven. Als dat niet is wat u eigenlijk wilt, nestelt u VLOOKUP in IFERROR en geeft u de waarde op die moet worden uitgevoerd als de opzoekwaarde niet wordt gevonden. Bijvoorbeeld:
=IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Buiten bereik")
Belangrijke opmerking! Om een Vlookup-formule met benaderde overeenkomst correct te laten werken, moet de eerste kolom in de opzoektabel gesorteerd zijn in oplopende volgorde van klein naar groot.
Voor meer informatie, zie Exacte overeenkomst VLOOKUP vs. benaderende overeenkomst VLOOKUP.
IFS-instructie als alternatief voor geneste IF-functie
In Excel 2016 en latere versies introduceerde Microsoft een speciale functie om meerdere voorwaarden te evalueren - de IFS-functie.
Een IFS-formule kan tot 127 logische_test / waarde_indien_waar paren, en de eerste logische test die uitkomt op TRUE "wint":
IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2]...)Volgens bovenstaande syntaxis kan onze geneste IF-formule op deze manier worden gereconstrueerd:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)
Let erop dat de IFS-functie de fout #N/A retourneert als aan geen van de opgegeven voorwaarden is voldaan. Om dit te voorkomen, kunt u nog een logische_test / waarde_indien_waar aan het einde van uw formule die 0 of een lege tekenreeks ("") of een andere waarde die u wilt, teruggeeft als geen van de vorige logische tests WAAR is:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")
Het resultaat is dat onze formule een lege tekenreeks (lege cel) oplevert in plaats van de #N/A-fout indien een overeenkomstige cel in kolom B leeg is of tekst of een negatief getal bevat.
Opmerking. Net als bij geneste IF retourneert de IFS-functie van Excel een waarde die overeenkomt met de eerste voorwaarde die op TRUE uitkomt.
Voor meer informatie, zie Excel IFS functie in plaats van geneste IF.
CHOOSE in plaats van geneste IF-formule in Excel
Een andere manier om meerdere voorwaarden te testen binnen een enkele formule in Excel is het gebruik van de CHOOSE-functie, die is ontworpen om een waarde uit de lijst terug te geven op basis van een positie van die waarde.
Toegepast op onze voorbeelddataset ziet de formule er als volgt uit:
=CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)
In het eerste argument ( index_num ), evalueert u alle voorwaarden en telt u de resultaten op. Aangezien TRUE gelijk is aan 1 en FALSE aan 0, berekent u zo de positie van de terug te geven waarde.
Bijvoorbeeld, de waarde in B2 is $150. Voor deze waarde zijn de eerste 3 voorwaarden TRUE en de laatste (B2> 150) is FALSE. Dus, index_num is gelijk aan 3, wat betekent dat de 3e waarde wordt teruggegeven, namelijk 7%.
Tip. Als geen van de logische tests WAAR is, index_num is gelijk aan 0, en de formule geeft de foutmelding #VALUE! Een gemakkelijke oplossing is CHOOSE in de IFERROR-functie op deze manier op te nemen:
=IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")
Voor meer informatie, zie Excel CHOOSE functie met formulevoorbeelden.
SWITCH-functie als beknopte vorm van geneste IF in Excel
In situaties waarin u te maken hebt met een vaste reeks vooraf gedefinieerde waarden, geen schalen, kan de functie SWITCH een compact alternatief zijn voor complexe geneste IF-statements:
SWITCH(uitdrukking, waarde1, resultaat1, waarde2, resultaat2, ..., [standaard])De functie SWITCH evalueert uitdrukking tegen een lijst van waarden en geeft de resultaat die overeenkomt met de eerste gevonden overeenkomst.
Als u de commissie wilt berekenen op basis van de volgende cijfers, in plaats van op basis van de verkoopcijfers, kunt u deze compacte versie van de geneste IF-formule in Excel gebruiken:
=SWITCH(C2, "A", 10%, "B", 7%, "C", 5%, "D", 3%, "")
Of u kunt een referentietabel maken zoals in de onderstaande schermafbeelding en celverwijzingen gebruiken in plaats van gecodeerde waarden:
=SWITCH(C2, $F$2, $G$2, $F$3, $G$3, $F$4, $G$4, $F$5, $G$5, "")
Merk op dat we alle referenties behalve de eerste met het $-teken vergrendelen om te voorkomen dat ze veranderen bij het kopiëren van de formule naar andere cellen:
Opmerking. De functie SWITCH is alleen beschikbaar in Excel 2016 en hoger.
Voor meer informatie, zie SWITCH-functie - de compacte vorm van geneste IF-statements.
Meerdere IF-functies samenvoegen in Excel
Zoals vermeld in het vorige voorbeeld, werd de SWITCH-functie pas geïntroduceerd in Excel 2016. Om soortgelijke taken in oudere Excel-versies af te handelen, kunt u twee of meer IF-statements combineren door de Concatenate-operator (&) of de CONCATENATE-functie te gebruiken.
Bijvoorbeeld:
=(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Of
=CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Zoals u misschien hebt opgemerkt, vermenigvuldigen we het resultaat met 1 in beide formules. Dit wordt gedaan om een tekenreeks die door de formule Aaneenschakelen wordt geretourneerd om te zetten in een getal. Als de verwachte uitvoer tekst is, dan is de vermenigvuldigingsoperatie niet nodig.
Voor meer informatie, zie CONCATENATE functie in Excel.
U ziet dat Microsoft Excel een handvol goede alternatieven biedt voor geneste IF-formules, en hopelijk heeft deze tutorial u enkele aanwijzingen gegeven over hoe u ze kunt gebruiken in uw werkbladen. Om de voorbeelden die in deze tutorial zijn besproken nader te bekijken, kunt u onze voorbeeldwerkmap hieronder downloaden. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!
Praktijk werkboek om te downloaden
Excel genest If statement - voorbeelden (.xlsx bestand)