Excel MAX IF-formel til at finde den største værdi med betingelser

  • Del Dette
Michael Brown

Artiklen viser et par forskellige måder at få den maksimale værdi i Excel på baseret på en eller flere betingelser, som du angiver.

I vores tidligere vejledning så vi på de almindelige anvendelser af MAX-funktionen, som er designet til at returnere det største tal i et datasæt. I nogle situationer kan du dog have brug for at bore yderligere ned i dine data for at finde den maksimale værdi baseret på bestemte kriterier. Dette kan gøres ved hjælp af et par forskellige formler, og denne artikel forklarer alle mulige måder.

    Excel MAX IF-formel

    Indtil for nylig havde Microsoft Excel ikke en indbygget MAX IF-funktion til at få den maksimale værdi baseret på betingelser. Med indførelsen af MAXIFS i Excel 2019 kan vi lave betinget max på en nem måde.

    I Excel 2016 og tidligere versioner skal du stadig oprette din egen array-formel ved at kombinere MAX-funktionen med en IF-erklæring:

    {=MAX(IF( criteria_range = kriterier , max_range ))}

    For at se, hvordan denne generiske MAX IF-formel fungerer på rigtige data, kan du se på følgende eksempel: Antag, at du har en tabel med resultaterne i længdespring for flere elever. Tabellen indeholder data for tre runder, og du leder efter det bedste resultat for en bestemt atlet, f.eks. Jacob. Med elevernes navne i A2:A10 og distancerne i C2:C10 får formlen denne form:

    =MAX(IF(A2:A10="Jacob", C2:C10))

    Husk, at en array-formel altid skal indtastes ved at trykke på tasterne Ctrl + Shift + Enter samtidigt. Som følge heraf er den automatisk omgivet af parenteser som vist på skærmbilledet nedenfor (det virker ikke at skrive parenteserne manuelt!).

    I virkelige regneark er det mere praktisk at indtaste kriteriet i en celle, så du nemt kan ændre betingelsen uden at ændre formlen. Så vi skriver det ønskede navn i F1 og får følgende resultat:

    =MAX(IF(A2:A10=F1, C2:C10))

    Sådan fungerer denne formel

    I den logiske test af IF-funktionen sammenligner vi listen af navne (A2:A10) med målnavnet (F1). Resultatet af denne operation er et array af TRUE og FALSE, hvor TRUE-værdierne repræsenterer navne, der passer til målnavnet (Jacob):

    {FALSK;FALSK;FALSK;FALSK;SAND;SAND;SAND;SAND;FALSK;FALSK;FALSK;FALSK;FALSK}

    For den value_ if_true argumentet angiver vi resultaterne af det lange spring (C2:C10), så hvis den logiske test giver TRUE, returneres det tilsvarende tal fra kolonne C. value_ if_false argumentet er udeladt, vil det betyde, at der bare vil være en FALSE-værdi, hvis betingelsen ikke er opfyldt:

    {FALSK;FALSK;FALSK;FALSK;5.48;5.42;5.57;FALSK;FALSK;FALSK;FALSK;FALSK}

    Dette array føres til MAX-funktionen, som returnerer det maksimale antal uden at tage højde for FALSE-værdierne.

    Tip. Hvis du vil se de interne arrays, der er beskrevet ovenfor, skal du vælge den tilsvarende del af formlen i regnearket og trykke på tasten F9. Tryk på Esc-tasten for at forlade formelevalueringstilstanden.

    MAX IF-formel med flere kriterier

    I situationer, hvor du skal finde den maksimale værdi baseret på mere end én betingelse, kan du enten:

    Brug indlejrede IF-erklæringer til at inkludere yderligere kriterier:

    {=MAX(IF( criteria_range1 = kriterier1 , IF( criteria_range2 = kriterier2 , max_range )))}

    Du kan også håndtere flere kriterier ved at bruge multiplikationsoperationen:

    {=MAX(IF((( criteria_range1 = kriterier1 ) * ( criteria_range2 = kriterier2 ), max_range ))}

    Lad os sige, at du har resultaterne for drenge og piger i en enkelt tabel, og at du ønsker at finde det længste spring blandt pigerne i runde 3. For at få det gjort indtaster vi det første kriterium (kvinde) i G1, det andet kriterium (3) i G2 og bruger følgende formler til at beregne max-værdien:

    =MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))

    =MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))

    Da begge formler er array-formler, skal du huske at trykke på Ctrl + Shift + Enter for at udfylde dem korrekt.

    Som det fremgår af skærmbilledet nedenfor, giver formlerne det samme resultat, så det er et spørgsmål om personlige præferencer, hvilken du vil bruge. For mig er formlen med boolsk logik nemmere at læse og opbygge - den giver mulighed for at tilføje så mange betingelser, som du vil, uden at du skal indlejre yderligere IF-funktioner.

    Sådan fungerer disse formler

    Den første formel anvender to IF-funktioner til at evaluere to kriterier. I den logiske test i den første IF-anvisning sammenligner vi værdierne i kolonnen Køn (B2:B16) med kriteriet i G1 ("Kvinde"). Resultatet er et array af værdierne TRUE og FALSE, hvor TRUE repræsenterer data, der svarer til kriteriet:

    {FALSK; FALSK; FALSK; FALSK; SAND; SAND; SAND; SAND; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; SAND; SAND; SAND; SAND}

    På samme måde kontrollerer den anden IF-funktion værdierne i kolonnen Round (C2:C16) i forhold til kriteriet i G2.

    For den value_if_true argumentet i den anden IF-erklæring angiver vi resultaterne af længdespring (D2:D16), og på denne måde får vi de elementer, der har TRUE i de to første arrays i de tilsvarende positioner (dvs. de elementer, hvor kønnet er "female" og runden er 3):

    {FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK; 4.52}

    Dette sidste array går til MAX-funktionen, og den returnerer det største tal.

    Den anden formel evaluerer de samme betingelser i en enkelt logisk test, og multiplikationsoperationen fungerer som AND-operatoren:

    Når værdierne TRUE og FALSE anvendes i en aritmetisk operation, omdannes de til henholdsvis 1 og 0. Og da multiplikation med 0 altid giver nul, har det resulterende array kun 1, når alle betingelser er TRUE. Dette array evalueres i den logiske test af IF-funktionen, som returnerer de afstande, der svarer til 1 (TRUE) elementerne.

    MAX IF uden array

    Mange Excel-brugere, herunder jeg selv, har fordomme om array-formler og forsøger at slippe af med dem, hvor det er muligt. Heldigvis har Microsoft Excel nogle få funktioner, der håndterer array-nativt, og vi kan bruge en af disse funktioner, nemlig SUMPRODUCT, som en slags "indpakning" omkring MAX.

    Den generiske MAX IF-formel uden array er som følger:

    =SUMPRODUKT(MAX((( criteria_range1 = kriterier1 ) * ( criteria_range2 = kriterier2 ) * max_range ))

    Du kan naturligvis tilføje flere par af intervaller/kriterier, hvis det er nødvendigt.

    For at se formlen i aktion bruger vi dataene fra det foregående eksempel. Målet er at få det maksimale spring for en kvindelig atlet i tredje runde:

    =SUMPRODUCT(MAX((((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))

    Denne formel anvendes sammen med et normalt Enter-tastetryk og returnerer det samme resultat som array MAX IF-formlen:

    Hvis du kigger nærmere på ovenstående skærmbillede, kan du se, at ugyldige spring markeret med "x" i de tidligere eksempler nu har 0-værdier i række 3, 11 og 15, og i næste afsnit forklares hvorfor.

    Sådan fungerer denne formel

    Som med MAX IF-formlen evaluerer vi to kriterier ved at sammenligne hver værdi i kolonnerne Køn (B2:B16) og Rundt (C2:C16) med kriterierne i cellerne G1 og G2. Resultatet er to arrays med værdierne TRUE og FALSE. Ved at multiplicere arrays' elementer i de samme positioner konverteres TRUE og FALSE til henholdsvis 1 og 0, hvor 1 repræsenterer de elementer, der opfylder begge kriterier. Den tredje multipliceredearray indeholder resultaterne af længdespring (D2:D16). Og da multiplikation med 0 giver nul, er det kun de elementer, der har 1 (TRUE) i de tilsvarende positioner, der overlever:

    {0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}

    I tilfælde max_range indeholder en tekstværdi, returnerer multiplikationsoperationen #VALUE-fejlen, hvilket betyder, at hele formlen ikke fungerer.

    MAX-funktionen tager det herfra og returnerer det største tal, der opfylder de angivne betingelser. Det resulterende array bestående af et enkelt element {4,63} går til SUMPRODUCT-funktionen, som udsender det maksimale tal i en celle.

    Bemærk. På grund af den særlige logik fungerer formlen med følgende forbehold:

    • Det område, hvor du søger efter den højeste værdi, må kun indeholde tal. Hvis der er tekstværdier, returneres en #VALUE!-fejl.
    • Formlen kan ikke evaluere betingelsen "ikke lig med nul" i et negativt datasæt. Hvis du vil finde den maksimale værdi uden hensyntagen til nuller, skal du bruge enten en MAX IF-formel eller MAXIFS-funktionen.

    Excel MAX IF-formel med OR-logik

    For at finde den maksimale værdi, når enhver af de angivne betingelser er opfyldt, skal du bruge den allerede velkendte array MAX IF-formel med den boolske logik, men du skal tilføje betingelserne i stedet for at gange dem.

    {=MAX(IF((( criteria_range1 = kriterier1 ) + ( criteria_range2 = kriterier2 ), max_range ))}

    Alternativt kan du bruge følgende formel, der ikke er et array:

    =SUMPRODUKT(MAX((((( criteria_range1 = kriterier1 ) + ( criteria_range2 = kriterier2 )) * max_range ))

    Lad os som eksempel beregne det bedste resultat i runde 2 og 3. Vær opmærksom på, at opgaven er formuleret anderledes i Excel-sproget: returner den maksimale værdi, hvis runde enten er 2 eller 3.

    Med runderne i B2:B10, resultaterne i C2:C10 og kriterierne i F1 og H1 lyder formlen som følger:

    =MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))

    Indtast formlen ved at trykke på tastekombinationen Ctrl + Shift + Enter, og du vil få dette resultat:

    Den maksimale værdi med de samme betingelser kan også findes ved hjælp af denne formel, der ikke er et array:

    =SUMPRODUKT(MAX((((B2:B10=F1) + (B2:B10=H1))) * C2:C10))

    Vi skal dog erstatte alle "x"-værdier i kolonne C med nuller i dette tilfælde, fordi SUMPRODUCT MAX kun fungerer med numeriske data:

    Sådan fungerer disse formler

    Arrayformlen fungerer på nøjagtig samme måde som MAX IF med AND-logik, bortset fra at du sammenføjer kriterierne ved at bruge addition i stedet for multiplikation. I arrayformler fungerer addition som OR-operatoren:

    Ved at lægge to arrays med TRUE og FALSE sammen (som er resultatet af at kontrollere værdierne i B2:B10 i forhold til kriterierne i F1 og H1) fås et array af 1'er og 0'er, hvor 1 repræsenterer de elementer, for hvilke en af betingelserne er TRUE, og 0 repræsenterer de elementer, for hvilke begge betingelser er FALSE. Som resultat heraf "beholder" IF-funktionen alle elementerne i C2:C10 ( value_if_true ), for hvilke enhver betingelse er SAND (1); de resterende punkter erstattes med FALSK, fordi value_if_false argumentet er ikke angivet.

    Formlen uden array fungerer på samme måde. Forskellen er, at du i stedet for IF's logiske test multiplicerer elementerne i arrayet med 1'er og 0'er med elementerne i arrayet med resultater af længdespring (C2:C10) i de tilsvarende positioner. Dette annullerer de elementer, der ikke opfylder nogen betingelse (har 0 i det første array), og beholder de elementer, der opfylder en af betingelserne (har 1 i det første array).array).

    MAXIFS - nem måde at finde den højeste værdi med betingelser

    Brugerne af Excel 2019, 2021 og Excel 365 er fri for besværet med at tæmme arrays for at opbygge deres egen MAX IF-formel. Disse versioner af Excel indeholder den længe ventede MAXIFS-funktion, der gør det til en leg at finde den største værdi med betingelser.

    I det første argument i MAXIFS angiver du det område, hvor den maksimale værdi skal findes (D2:D16 i vores tilfælde), og i de efterfølgende argumenter kan du angive op til 126 par af områder/kriterier. F.eks:

    =MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)

    Som vist i skærmbilledet nedenfor har denne enkle formel ingen problemer med at behandle et område, der indeholder både numeriske værdier og tekstværdier:

    Du kan finde detaljerede oplysninger om denne funktion i Excel MAXIFS-funktionen med eksempler på formler.

    Sådan kan du finde den maksimale værdi med betingelser i Excel. Jeg takker for din læsning og håber at se dig på vores blog i næste uge!

    Arbejdsbog til download

    Eksempler på Excel MAX IF-formler (.xlsx-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.