Excel Nested IF statements - exempel, bästa praxis och alternativ

  • Dela Detta
Michael Brown

I handledningen förklaras hur du använder den inbäddade IF-funktionen i Excel för att kontrollera flera villkor. Du lär dig också några andra funktioner som kan vara bra alternativ till att använda en inbäddad formel i Excel.

Hur brukar du implementera en beslutslogik i dina Excel-arbetsblad? I de flesta fall använder du en IF-formel för att testa villkoret och returnera ett värde om villkoret uppfylls och ett annat värde om villkoret inte uppfylls. För att utvärdera mer än ett villkor och returnera olika värden beroende på resultatet, bäddar du in flera IF:er i varandra.

Även om det är mycket populärt är det inbäddade IF-meddelandet inte det enda sättet att kontrollera flera villkor i Excel. I den här handledningen hittar du en handfull alternativ som definitivt är värda att utforska.

    Excel inbäddat IF-uttalande

    Här är den klassiska Excel-formeln IF i generisk form:

    IF( villkor1 , resultat1 , IF( villkor2 , resultat2 , IF( villkor3 , resultat3 , resultat4 )))

    Du kan se att varje efterföljande IF-funktion är inbäddad i value_if_false Varje IF-funktion är innesluten i en egen uppsättning parenteser, men alla avslutande parenteser finns i slutet av formeln.

    Vår generiska IF-formel utvärderar 3 villkor och returnerar 4 olika resultat (resultat 4 returneras om inget av villkoren är VARA). Översatt till ett mänskligt språk säger denna IF-formel till Excel att göra följande:

    Test villkor1 , om TRUE - returnera resultat1 , om FALSE -

    test villkor2 , om TRUE - returnera r esult2 , om FALSE -

    test villkor3 , om TRUE - returnera resultat3 , om FALSE -

    Återge . resultat4

    Låt oss till exempel ta reda på provisioner för ett antal säljare baserat på hur många försäljningar de har gjort:

    Kommissionen Försäljning
    3% $1 - $50
    5% $51 - $100
    7% $101 - $150
    10% Över 150 dollar

    I matematik ändrar inte summan om man ändrar ordningen på addenderna. I Excel ändrar IF-funktionerna resultatet om man ändrar ordningen på IF-funktionerna. Varför? Eftersom en inbäddad IF-formel returnerar ett värde som motsvarar första TRUE-villkoret. Därför är det mycket viktigt att du i dina inbäddade IF-statements ordnar villkoren i rätt riktning - från hög till låg eller från låg till hög, beroende på formelns logik. I vårt fall kontrollerar vi först det "högsta" villkoret, sedan det "näst högsta", och så vidare:

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

    Om vi placerar villkoren i omvänd ordning, från botten och uppåt, skulle resultaten bli helt fel eftersom formeln skulle stanna efter det första logiska testet (B2>=1) för alla värden som är större än 1. Låt oss säga att vi har 100 dollar i försäljning - det är större än 1, så formeln skulle inte kontrollera andra villkor och ge 3 % som resultat.

    Om du hellre vill ordna villkoren från lågt till högt använder du operatorn "mindre än" och utvärderar först det "lägsta" villkoret, sedan det "näst lägsta" och så vidare:

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

    Som du ser krävs det en hel del tankearbete för att bygga upp logiken i en inbäddad IF-angivelse på rätt sätt hela vägen till slutet. Och även om Microsoft Excel tillåter att man bäddar in upp till 64 IF-funktioner i en formel är det inte något som du egentligen vill göra i dina kalkylblad. Så om du (eller någon annan) stirrar på din inbäddade IF-formel i Excel och försöker komma på vad den faktiskt gör, är det dags attompröva din strategi och förmodligen välja ett annat verktyg i din arsenal.

    För mer information, se Excel-nested IF-meddelande.

    Nested IF med OR/AND-villkor

    Om du behöver utvärdera några uppsättningar av olika villkor kan du uttrycka dessa villkor med hjälp av OR- och AND-funktionen, bädda in funktionerna i IF-utsagor och sedan bädda in IF-utsagorna i varandra.

    Nested IF i Excel med OR-angivelser

    Genom att använda OR-funktionen kan du kontrollera två eller flera olika villkor i det logiska testet av varje IF-funktion och återge TRUE om något (minst ett) av OR-argumenten är TRUE. För att se hur det fungerar kan du ta följande exempel.

    Anta att du har två försäljningskolumner, till exempel januariförsäljningen i kolumn B och februariförsäljningen i kolumn C. Du vill kontrollera siffrorna i båda kolumnerna och beräkna provisionen utifrån en högre siffra. Med andra ord bygger du en formel med följande logik: Om försäljningen i januari eller februari är större än 150 dollar får säljaren 10 % i provision, om försäljningen i januari eller februari är större än eller lika medOm du säljer ett pris på 101 dollar får säljaren 7 % i provision, och så vidare.

    För att få det gjort skriver du några OF-satser som OR(B2>150, C2>150) och bäddar in dem i de logiska testerna av IF-funktionerna som vi diskuterat ovan. Som resultat får du den här formeln:

    =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%, ""))))

    Och få provisionen tilldelad baserat på det högre försäljningsbeloppet:

    För fler exempel på formler, se Excel IF OR-angivelse.

    Nested IF i Excel med AND-uttalanden

    Om dina logiska test innehåller flera villkor och alla dessa villkor ska vara VARA, kan du uttrycka dem med AND-funktionen.

    Om du till exempel vill tilldela provisioner baserat på ett lägre antal försäljningar tar du ovanstående formel och ersätter OR med AND-angivelser. På ett annat sätt säger du åt Excel att återge 10 % endast om försäljningen i januari och februari är större än 150 dollar, 7 % om försäljningen i januari och februari är större än eller lika med 101 dollar, och så vidare.

    =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%, ""))))

    Resultatet blir att vår inbäddade IF-formel beräknar provisionen på grundval av det lägsta talet i kolumnerna B och C. Om någon av kolumnerna är tom finns det ingen provision alls eftersom inget av AND-villkoren är uppfyllt:

    Om du vill få tillbaka 0 % i stället för tomma celler ersätter du en tom sträng ('''") i det sista argumentet med 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%))))

    Mer information finns här: Excel IF med flera AND/OR-villkor.

    VLOOKUP i stället för inbäddad IF i Excel

    När du har att göra med "skalor", dvs. kontinuerliga intervall av numeriska värden som tillsammans täcker hela intervallet, kan du i de flesta fall använda VLOOKUP-funktionen i stället för inbäddade IF:er.

    Till att börja med skapar du en referenstabell som visas i skärmbilden nedan. Sedan skapar du en Vlookup-formel med ungefärlig matchning , dvs. med den range_lookup argumentet är satt till TRUE.

    Om man antar att uppslagsvärdet finns i B2 och att referenstabellen är F2:G5, så lyder formeln som följer:

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

    Observera att vi korrigerar tabell_array med absoluta referenser ($F$2:$G$5) för att formeln ska kunna kopieras korrekt till andra celler:

    Genom att ställa in det sista argumentet i din Vlookup-formel till TRUE, säger du till Excel att söka efter den närmsta matchning - Om en exakt matchning inte hittas, återges det näst största värdet som är mindre än uppslagsvärdet. Resultatet blir att formeln inte bara matchar de exakta värdena i uppslagstabellen, utan även alla värden som ligger däremellan.

    Uppslagsvärdet i B3 är till exempel 95 dollar. Detta tal finns inte i uppslagstabellen, och Vlookup med exakt matchning skulle ge ett #N/A-fel i det här fallet. Men Vlookup med ungefärlig matchning fortsätter att söka tills den hittar det närmaste värdet som är mindre än uppslagsvärdet (vilket är 50 dollar i vårt exempel) och ger ett värde från den andra kolumnen i samma rad (vilket är 5 %).

    Men vad händer om uppslagsvärdet är mindre än det minsta talet i uppslagstabellen eller om uppslagscellen är tom? I det här fallet returnerar en Vlookup-formel felet #N/A. Om det inte är vad du egentligen vill ha, kan du placera VLOOKUP i IFERROR och ange det värde som ska skickas ut när uppslagsvärdet inte hittas. Till exempel:

    =IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Utanför intervallet")

    Viktigt att notera: För att en Vlookup-formel med ungefärlig matchning ska fungera korrekt måste den första kolumnen i lookup-tabellen vara sorterad i stigande ordning , från den minsta till den största.

    Mer information finns i Exakt matchande VLOOKUP vs. ungefärligt matchande VLOOKUP.

    IFS-meddelande som alternativ till en inbäddad IF-funktion

    I Excel 2016 och senare versioner införde Microsoft en särskild funktion för att utvärdera flera villkor - IFS-funktionen.

    En IFS-formel kan hantera upp till 127 logisk_test / value_if_true par, och det första logiska testet som utvärderas till TRUE "vinner":

    IFS(logiskt_test1, value_if_true1, [logiskt_test2, value_if_true2]...)

    I enlighet med ovanstående syntax kan vår inbäddade IF-formel rekonstrueras på följande sätt:

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

    Observera att IFS-funktionen returnerar felet #N/A om inget av de angivna villkoren är uppfyllda. För att undvika detta kan du lägga till ytterligare en logisk_test / value_if_true i slutet av formeln som returnerar 0 eller en tom sträng ("") eller vilket värde som helst om inget av de tidigare logiska testerna är VARA:

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

    Resultatet blir att vår formel returnerar en tom sträng (tom cell) i stället för felet #N/A om en motsvarande cell i kolumn B är tom eller innehåller text eller ett negativt tal.

    Observera: Precis som i inbäddade IF återger Excels IFS-funktion ett värde som motsvarar det första villkoret som utvärderas till TRUE, vilket är anledningen till att ordningsföljden för de logiska testerna i en IFS-formel spelar roll.

    Mer information finns i Excel IFS-funktionen i stället för inbäddad IF.

    Välj i stället för en inbäddad IF-formel i Excel

    Ett annat sätt att testa flera villkor i en enda formel i Excel är att använda CHOOSE-funktionen, som är utformad för att returnera ett värde från listan baserat på en position för det värdet.

    Om man tillämpar formeln på vårt exempel på data ser den ut på följande sätt:

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

    I det första argumentet ( index_num ) utvärderar du alla villkor och summerar resultaten. Eftersom TRUE är lika med 1 och FALSE är lika med 0, beräknar du på detta sätt positionen för det värde som ska returneras.

    Värdet i B2 är till exempel 150 dollar. För detta värde är de tre första villkoren VARA och det sista (B2> 150) är FALSK. Så, index_num är lika med 3, vilket innebär att det tredje värdet returneras, dvs. 7 %.

    Tips: Om inget av de logiska testerna är VARA, index_num är lika med 0, och formeln returnerar felet #VALUE!. En enkel lösning är att sätta in CHOOSE i IFERROR-funktionen på följande sätt:

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

    Mer information finns i Excel CHOOSE-funktionen med formelexempel.

    SWITCH-funktionen som en kortfattad form av inbäddad IF i Excel

    I situationer där du har att göra med en fast uppsättning fördefinierade värden, inte skalor, kan SWITCH-funktionen vara ett kompakt alternativ till komplexa inbäddade IF-satser:

    SWITCH(uttryck, värde1, resultat1, värde2, resultat2, ..., [standard])

    Funktionen SWITCH utvärderar uttryck mot en förteckning över värden och returnerar den resultat som motsvarar den första matchningen som hittats.

    Om du vill beräkna provisionen baserat på följande betyg, snarare än försäljningsbelopp, kan du använda den här kompakta versionen av en inbäddad IF-formel i Excel:

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

    Du kan också skapa en referenstabell som visas i skärmbilden nedan och använda cellreferenser i stället för hårdkodade värden:

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

    Observera att vi låser alla referenser utom den första med $-tecknet för att förhindra att de ändras när du kopierar formeln till andra celler:

    Observera: Funktionen SWITCH är endast tillgänglig i Excel 2016 och senare.

    För mer information, se SWITCH-funktionen - den kompakta formen av en inbäddad IF-angivelse.

    Sammanfoga flera IF-funktioner i Excel

    Som vi nämnde i det föregående exemplet infördes funktionen SWITCH först i Excel 2016. För att hantera liknande uppgifter i äldre Excel-versioner kan du kombinera två eller flera IF-statements genom att använda operatorn Concatenate (&) eller funktionen CONCATENATE.

    Till exempel:

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

    Eller

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

    Som du kanske har märkt multiplicerar vi resultatet med 1 i båda formlerna. Det görs för att konvertera en sträng som returneras av formeln Concatenate till ett tal. Om det förväntade resultatet är text behövs inte multiplikationen.

    Mer information finns i CONCATENATE-funktionen i Excel.

    Du kan se att Microsoft Excel erbjuder en handfull bra alternativ till inbäddade IF-formler, och förhoppningsvis har den här handledningen gett dig några ledtrådar om hur du kan utnyttja dem i dina kalkylblad. Om du vill titta närmare på de exempel som diskuteras i den här handledningen är du välkommen att ladda ner vår exempelarbetsbok nedan. Jag tackar dig för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Arbetsbok för övning för nedladdning

    Excel-nästad If-angivelse - exempel (.xlsx-fil)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.