Innehållsförteckning
Artikeln visar några olika sätt att få fram maxvärdet i Excel baserat på ett eller flera villkor som du anger.
I vår tidigare handledning tittade vi på vanliga användningsområden för MAX-funktionen, som är utformad för att återge det största talet i en datamängd. I vissa situationer kan du dock behöva gå djupare ner i dina data för att hitta maxvärdet baserat på vissa kriterier. Detta kan göras med hjälp av några olika formler, och i den här artikeln förklaras alla möjliga sätt.
Excel MAX IF-formel
Tills nyligen hade Microsoft Excel ingen inbyggd funktion MAX IF för att få fram det högsta värdet baserat på villkor. Med MAXIFS i Excel 2019 kan vi göra villkorliga maxvärden på ett enkelt sätt.
I Excel 2016 och tidigare versioner måste du fortfarande skapa din egen formel för matris genom att kombinera MAX-funktionen med ett IF-uttalande:
{=MAX(IF( kriterier_intervall = kriterier , max_range ))}För att se hur denna generiska MAX IF-formel fungerar på riktiga data kan du ta följande exempel: Anta att du har en tabell med resultaten i längdhopp för flera elever. Tabellen innehåller data för tre omgångar och du letar efter det bästa resultatet för en viss idrottare, låt oss säga Jacob. Med elevernas namn i A2:A10 och avstånden i C2:C10 får formeln följande form:
=MAX(IF(A2:A10="Jacob", C2:C10))
Tänk på att en arrayformel alltid måste skrivas in genom att trycka på tangenterna Ctrl + Shift + Enter samtidigt, vilket gör att den automatiskt omges av hängande parenteser som visas i skärmdumpen nedan (det fungerar inte att skriva in parenteserna manuellt!).
I verkliga arbetsblad är det bekvämare att ange kriteriet i en cell, så att du enkelt kan ändra villkoret utan att ändra formeln. Vi skriver det önskade namnet i F1 och får följande resultat:
=MAX(IF(A2:A10=F1, C2:C10))
Hur denna formel fungerar
I det logiska testet av IF-funktionen jämför vi listan med namn (A2:A10) med målnamnet (F1). Resultatet av denna operation är en matris med TRUE och FALSE, där TRUE-värdena representerar namn som matchar målnamnet (Jacob):
{FALSK;FALSKT;FALSKT;FALSKT;SANT;SANT;SANT;SANT;FALSKT;FALSKT;FALSKT;FALSKT}
För value_ if_true argumentet, anger vi resultaten för längdhopp (C2:C10), så om det logiska testet utvärderar till TRUE returneras motsvarande nummer från kolumn C. value_ if_false Om argumentet utelämnas kommer det att betyda att värdet bara blir FALSE om villkoret inte uppfylls:
{FALSK;FALSK;FALSK;FALSK;5.48;5.42;5.57;FALSK;FALSK;FALSK;FALSK}
Denna matris matas till MAX-funktionen, som returnerar det högsta antalet utan att ta hänsyn till FALSE-värdena.
Tips: Om du vill se de interna matriser som diskuterats ovan markerar du motsvarande del av formeln i arbetsbladet och trycker på F9. Tryck på Esc-tangenten om du vill avsluta utvärderingsläget för formeln.
MAX IF-formel med flera kriterier
Om du behöver hitta maxvärdet baserat på fler än ett villkor kan du antingen:
Använd inbäddade IF-satser för att inkludera ytterligare kriterier:
{=MAX(IF( kriterier_område1 = kriterier1 , IF( kriterier_område2 = kriterier2 , max_range )))}Du kan också hantera flera kriterier genom att använda multiplikationen:
{=MAX(IF(( kriterier_område1 = kriterier1 ) * ( kriterier_område2 = kriterier2 ), max_range ))}Låt oss säga att du har resultaten för pojkar och flickor i en enda tabell och att du vill hitta det längsta hoppet bland flickorna i omgång 3. För att få det gjort skriver vi in det första kriteriet (kvinna) i G1, det andra kriteriet (3) i G2 och använder följande formler för att räkna ut maxvärdet:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Eftersom båda formlerna är matrisformler, kom ihåg att trycka på Ctrl + Shift + Enter för att fylla i dem på rätt sätt.
Som framgår av skärmbilden nedan ger formlerna samma resultat, så vilken du ska använda beror på dina personliga preferenser. För mig är formeln med boolesk logik lättare att läsa och bygga - den gör det möjligt att lägga till så många villkor som du vill utan att behöva lägga in ytterligare IF-funktioner.
Hur dessa formler fungerar
I den första formeln används två inbäddade IF-funktioner för att utvärdera två kriterier. I det logiska testet i det första IF-satsen jämförs värdena i kolumnen Kön (B2:B16) med kriteriet i G1 ("Kvinna"). Resultatet är en matris med värden som är TRUE och FALSE, där TRUE representerar data som motsvarar kriteriet:
{FALSK; FALSKT; FALSKT; FALSKT; SANT; SANT; SANT; FALSKT; FALSKT; FALSKT; FALSKT; FALSKT; FALSKT; FALSKT; FALSKT; SANT; SANT; SANT; SANT}
På samma sätt kontrollerar den andra IF-funktionen värdena i kolumnen Round (C2:C16) mot kriteriet i G2.
För value_if_true argumentet i det andra IF-satsen, ger vi resultaten för längdhopp (D2:D16), och på detta sätt får vi de objekt som har TRUE i de två första matriserna i motsvarande positioner (dvs. de objekt där könet är "female" och rundan är 3):
{FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; 4.63}
Denna sista matris går till MAX-funktionen och den returnerar det största talet.
Den andra formeln utvärderar samma villkor i ett enda logiskt test och multiplikationen fungerar som AND-operatorn:
När värdena TRUE och FALSE används i en aritmetisk operation omvandlas de till 1 respektive 0. Eftersom multiplikation med 0 alltid ger noll har den resulterande matrisen 1 endast när alla villkor är TRUE. Denna matris utvärderas i det logiska testet i IF-funktionen, som returnerar de avstånd som motsvarar 1 (TRUE).
MAX IF utan matris
Många Excel-användare, inklusive jag själv, har fördomar mot matrisformler och försöker bli av med dem när det är möjligt. Som tur är har Microsoft Excel några funktioner som hanterar matriser på egen hand, och vi kan använda en av dessa funktioner, nämligen SUMPRODUCT, som ett slags "omslag" kring MAX.
Den generiska MAX IF-formeln utan matris är följande:
=SUMMAPRODUKT(MAX((( kriterier_område1 = kriterier1 ) * ( kriterier_område2 = kriterier2 ) * max_range ))Naturligtvis kan du lägga till fler intervall/kriteriepar om det behövs.
För att se hur formeln fungerar använder vi uppgifterna från föregående exempel. Målet är att få fram det maximala hoppet för en kvinnlig idrottare i omgång 3:
=SUMPRODUKT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Denna formel används med ett normalt Enter-tangenttryck och ger samma resultat som matrisen MAX IF-formeln:
Om du tittar närmare på skärmdumpen ovan kan du se att ogiltiga hopp markerade med "x" i de tidigare exemplen nu har 0-värden i raderna 3, 11 och 15, och i nästa avsnitt förklaras varför.
Hur denna formel fungerar
Precis som med MAX IF-formeln utvärderar vi två kriterier genom att jämföra varje värde i kolumnerna Gender (B2:B16) och Round (C2:C16) med kriterierna i cellerna G1 och G2. Resultatet är två matriser med TRUE- och FALSE-värden. Genom att multiplicera matrisens element i samma positioner omvandlas TRUE och FALSE till 1 respektive 0, där 1 representerar de objekt som uppfyller båda kriterierna. Den tredje multipliceradearray innehåller resultaten av längdhoppet (D2:D16). Eftersom multiplicering med 0 ger noll, är det bara de objekt som har 1 (TRUE) i motsvarande positioner som överlever:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
Om max_range innehåller ett textvärde, returnerar multiplikationen felet #VALUE, vilket gör att hela formeln inte fungerar.
MAX-funktionen tar över och returnerar det största talet som uppfyller de angivna villkoren. Den resulterande matrisen som består av ett enda element {4,63} går till SUMPRODUCT-funktionen som ger ut det högsta talet i en cell.
Observera: På grund av dess särskilda logik fungerar formeln med följande förbehåll:
- Det område där du söker efter det högsta värdet får endast innehålla siffror. Om det finns textvärden returneras felmeddelandet #VALUE!
- Formeln kan inte utvärdera villkoret "inte lika med noll" i en negativ datauppsättning. För att hitta maxvärdet utan hänsyn till nollor använder du antingen en MAX IF-formel eller MAXIFS-funktionen.
Excel MAX IF-formel med OR-logik
För att hitta maxvärdet när alla av de angivna villkoren är uppfyllda, använder du den redan välkända formeln array MAX IF med boolesk logik, men adderar villkoren i stället för att multiplicera dem.
{=MAX(IF(( kriterier_område1 = kriterier1 ) + ( kriterier_område2 = kriterier2 ), max_range ))}Alternativt kan du använda följande formel som inte är en arraysformel:
=SUMMAPRODUKT(MAX(((( kriterier_område1 = kriterier1 ) + ( kriterier_område2 = kriterier2 )) * max_range ))Som exempel kan vi räkna ut det bästa resultatet i omgångarna 2 och 3. Observera att uppgiften är annorlunda formulerad i Excel: återge maxvärdet om omgången är antingen 2 eller 3.
Med de rundor som anges i B2:B10, resultaten i C2:C10 och kriterierna i F1 och H1, kan formeln användas på följande sätt:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Skriv in formeln genom att trycka på tangentkombinationen Ctrl + Shift + Enter och du får detta resultat:
Det maximala värdet med samma villkor kan också hittas med hjälp av denna formel som inte är en arraysformel:
=SUMPRODUKT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
Vi måste dock ersätta alla "x"-värden i kolumn C med nollor i det här fallet eftersom SUMPRODUCT MAX endast fungerar med numeriska data:
Hur dessa formler fungerar
Formeln för matriser fungerar på exakt samma sätt som MAX IF med AND-logik, förutom att du förenar kriterierna genom att använda addition i stället för multiplikation. I formler för matriser fungerar addition som OR-operatorn:
Genom att lägga ihop två matriser med TRUE och FALSE (som är resultatet av att kontrollera värdena i B2:B10 mot kriterierna i F1 och H1) får man en matris med 1:or och 0:or där 1 representerar de objekt för vilka något av villkoren är TRUE och 0 representerar de objekt för vilka båda villkoren är FALSE. Som ett resultat av detta "behåller" IF-funktionen alla objekt i C2:C10 ( value_if_true ) för vilka alla villkor är sanna (1); de återstående posterna ersätts med FALSE eftersom value_if_false argumentet inte har angetts.
Formeln som inte är en matris fungerar på liknande sätt. Skillnaden är att istället för IF:s logiska test multiplicerar du elementen i matrisen med 1:or och 0:or med elementen i matrisen med längdhoppsresultat (C2:C10) i motsvarande positioner. Detta upphäver de objekt som inte uppfyller något villkor (har 0 i den första matrisen) och behåller de objekt som uppfyller ett av villkoren (har 1 i den första matrisen).array).
MAXIFS - enkelt sätt att hitta högsta värde med villkor
Användarna av Excel 2019, 2021 och Excel 365 slipper besväret med att tämja matriser för att bygga sin egen MAX IF-formel. Dessa versioner av Excel innehåller den efterlängtade MAXIFS-funktionen som gör det enkelt att hitta det största värdet med villkor.
I det första argumentet för MAXIFS anger du det intervall inom vilket det maximala värdet ska hittas (D2:D16 i vårt fall), och i de efterföljande argumenten kan du ange upp till 126 intervall/kriteriepar. Till exempel:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Som framgår av skärmbilden nedan har den här enkla formeln inga problem med att bearbeta ett intervall som innehåller både numeriska värden och textvärden:
Detaljerad information om den här funktionen finns i Excel MAXIFS-funktionen med formelexempel.
Så kan du hitta maxvärdet med villkor i Excel. Tack 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
Exempel på Excel MAX IF-formler (.xlsx-fil)