Innholdsfortegnelse
Artikkelen viser noen forskjellige måter å få maksverdien i Excel basert på en eller flere betingelser som du spesifiserer.
I vår forrige veiledning så vi på vanlige bruksområder av MAX-funksjonen som er designet for å returnere det største tallet i et datasett. I noen situasjoner kan det imidlertid hende at du må gå videre ned i dataene dine for å finne maksverdien basert på visse kriterier. Dette kan gjøres ved å bruke noen forskjellige formler, og denne artikkelen forklarer alle mulige måter.
Excel MAX IF-formel
Inntil nylig hadde ikke Microsoft Excel en innebygd MAX IF-funksjon for å få maksimal verdi basert på forhold. Med introduksjonen av MAXIFS i Excel 2019 kan vi gjøre betinget maks på en enkel måte.
I Excel 2016 og tidligere versjoner må du fortsatt lage din egen matriseformel ved å kombinere MAX funksjon med en IF-setning:
{=MAX(IF( criteria_range= criteria, max_range))}For å se hvordan denne generiske MAX HVIS formelen fungerer på ekte data, bør du vurdere følgende eksempel. Anta at du har en tabell med lengdehoppresultatene til flere elever. Tabellen inkluderer data for tre runder, og du ser etter det beste resultatet til en bestemt idrettsutøver, sier Jacob. Med elevnavnene i A2:A10 og avstander i C2:C10, har formelen denne formen:
=MAX(IF(A2:A10="Jacob", C2:C10))
Vennligst husk at en matriseformelmå alltid legges inn ved å trykke Ctrl + Shift + Enter-tastene samtidig. Som et resultat blir den automatisk omgitt av krøllete parenteser som vist i skjermbildet nedenfor (det vil ikke fungere å skrive parentesene manuelt!).
I virkelige regneark er det mer praktisk å legge inn kriteriet i noen celle, slik at du enkelt kan endre betingelsen uten å endre formelen. Så vi skriver inn ønsket navn i F1 og får følgende resultat:
=MAX(IF(A2:A10=F1, C2:C10))
Hvordan denne formelen fungerer
I den logiske test av IF-funksjonen, sammenligner vi listen over navn (A2:A10) med målnavnet (F1). Resultatet av denne operasjonen er en matrise med TRUE og FALSE, der TRUE-verdiene representerer navn som samsvarer med målnavnet (Jacob):
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE}
For verdien_ hvis_sann argument, leverer vi lengdehoppresultatene (C2:C10), så hvis den logiske testen evalueres til TRUE, returneres det tilsvarende tallet fra kolonne C. Argumentet value_ if_false er utelatt, noe som betyr at det bare vil ha en FALSE-verdi der betingelsen ikke er oppfylt:
{FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE}
Denne matrisen mates til MAX-funksjonen, som returnerer det maksimale antallet og ignorerer FALSE-verdiene.
Tips. For å se de interne matrisene som er omtalt ovenfor, velg den tilsvarende delen av formelen i regnearket og trykk på F9-tasten. For å avslutte formelevalueringsmodusen, trykk på Esc-tasten.
MAX IF-formel med flerekriterier
I situasjoner hvor du trenger å finne maksverdien basert på mer enn én betingelse, kan du enten:
Bruk nestede IF-setninger for å inkludere flere kriterier:
{=MAX( HVIS( kriterieområde1 = kriterium1 , HVIS( kriterieområde2 = kriterium2 , maks_område )))}Eller håndter flere kriterier ved å bruke multiplikasjonsoperasjonen:
{=MAX(IF(( criteria_range1 = criteria1 ) * ( criteria_range2 = criteria2 ), max_range ))}La oss si at du har resultatene til gutter og jenter i en enkelt tabell og du ønsker å finne det lengste hoppet blant jenter i runde 3. For å få det gjort , legger vi inn det første kriteriet (kvinne) i G1, det andre kriteriet (3) i G2, og bruker følgende formler for å regne ut maksverdien:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Siden begge er matriseformler, husk å trykke Ctrl + Shift + Enter for å fullføre dem riktig.
Som vist på skjermbildet nedenfor gir formlene det samme resultatet, så hvilken du skal bruke er en spørsmål om deg din personlige preferanse. For meg er formelen med den boolske logikken lettere å lese og bygge – den gjør det mulig å legge til så mange betingelser du vil uten å neste IF-funksjoner.
Hvordan disse formlene fungerer.
Den første formelen bruker to nestede HVIS-funksjoner for å evaluere to kriterier. I den logiske testen av den første IF-setningen sammenligner vi verdiene i kolonnen Kjønn(B2:B16) med kriteriet i G1 ("Kvinne"). Resultatet er en matrise med TRUE og FALSE-verdier der TRUE representerer data som samsvarer med kriteriet:
{FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE}
På lignende måte sjekker den andre HVIS-funksjonen verdiene i Round-kolonnen (C2) :C16) mot kriteriet i G2.
For value_if_true -argumentet i den andre IF-setningen, leverer vi lengdehoppresultatene (D2:D16), og på denne måten får vi elementene som har TRUE i de to første matrisene i tilsvarende posisjoner (dvs. elementene der kjønnet er "kvinne" og runden er 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; 4.63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}
Denne siste matrisen går til MAX-funksjonen og den returnerer det største tallet.
Den andre formelen evaluerer de samme betingelsene innenfor en enkelt logisk test, og multiplikasjonsoperasjonen fungerer som OG-operatoren:
Når TRUE- og FALSE-verdiene brukes i alle aritmetiske operasjoner blir de omgjort til henholdsvis 1-er og 0-er. Og fordi multiplisering med 0 alltid gir null, har den resulterende matrisen 1 bare når alle betingelsene er SANN. Denne matrisen blir evaluert i den logiske testen av IF-funksjonen, som returnerer avstandene som tilsvarer 1 (TRUE) elementene.
MAX IF uten array
Mange Excel-brukere, inkludert meg, er fordommer mot matriseformler og prøver å bli kvitt dem der det er mulig. Heldigvis har Microsoft Excel noen funksjoner som håndterer array native, og vi kan bruke enav slike funksjoner, nemlig SUMPRODUKT, som en slags "innpakning" rundt MAX.
Den generiske MAX IF-formelen uten matrise er som følger:
=SUMPRODUKT(MAX(( criteria_range1 = criteria1 ) * ( criteria_range2 = criteria2 ) * max_range ))Du kan naturligvis legge til flere område/kriterie-par hvis nødvendig.
For å se formelen i aksjon, bruker vi dataene fra forrige eksempel. Målet er å få det maksimale hoppet til en kvinnelig idrettsutøver i runde 3:
=SUMPRODUCT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Denne formelen konkurreres med et normalt Enter-tastetrykk og returnerer samme resultat som array MAX IF-formelen:
Når du ser nærmere på skjermbildet ovenfor, kan du legge merke til at ugyldige hopp merket med "x" i de forrige eksemplene nå har 0 verdier i rad 3, 11 og 15 , og neste avsnitt forklarer hvorfor.
Hvordan denne formelen fungerer
Som med MAX IF-formelen, evaluerer vi to kriterier ved å sammenligne hver verdi i Kjønn (B2:B16) og Runde ( C2:C16) kolonner med kriteriene i cellene G1 og G2. Resultatet er to matriser med TRUE og FALSE-verdier. Å multiplisere matrisens elementer i de samme posisjonene konverterer TRUE og FALSE til henholdsvis 1 og 0, hvor 1 representerer elementene som oppfyller begge kriteriene. Den tredje multipliserte matrisen inneholder lengdehoppresultatene (D2:D16). Og fordi multiplisering med 0 gir null, er det bare elementene som har 1 (SANN) i de tilsvarende posisjoneneoverleve:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
Hvis maks_område inneholder en tekstverdi, returnerer multiplikasjonsoperasjonen #VALUE-feilen på grunn av at hele formelen ikke vil fungere.
MAX-funksjonen tar den herfra og returnerer det største tallet som oppfyller de angitte betingelsene. Den resulterende matrisen som består av et enkelt element {4.63} går til SUMPRODUKT-funksjonen og sender ut maks. antall i en celle.
Merk. På grunn av sin spesifikke logikk fungerer formelen med følgende forbehold:
- Området der du søker etter den høyeste verdien må kun inneholde tall. Hvis det er noen tekstverdier, en #VALUE! feil returneres.
- Formelen kan ikke evaluere tilstanden "ikke lik null" i et negativt datasett. For å finne maksverdi som ignorerer nuller, bruk enten en MAX IF-formel eller MAXIFS-funksjon.
Excel MAX IF-formel med OR-logikk
For å finne maksverdien når enhver av de angitte betingelsene er oppfylt, bruk den allerede kjente matrisen MAX IF-formelen med den boolske logikken, men legg til betingelsene i stedet for å multiplisere dem.
{=MAX(IF(( criteria_range1 = criteria1 ) + ( criteria_range2 = criteria2 ), max_range ))}Alternativt kan du bruke følgende ikke-matriseformel :
=SUMPRODUKT(MAX((( kriterieområde1 = kriterium1 ) + ( kriterieområde2 = kriterium2 )) * max_range ))Som et eksempel, la oss finne utdet beste resultatet i runde 2 og 3. Vær oppmerksom på at i Excel-språket er oppgaven formulert annerledes: returner maksverdien hvis runde er enten 2 eller 3.
Med rundene oppført i B2:B10 , resultatene i C2:C10 og kriteriene i F1 og H1, formelen går som følger:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Skriv inn formelen ved å trykke på Ctrl + Shift + Enter tastekombinasjonen og du får dette resultatet:
Maksverdien med de samme betingelsene kan også bli funnet ved å bruke denne ikke-matriseformelen:
=SUMPRODUCT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
Vi må imidlertid erstatte alle "x"-verdier i kolonne C med nuller i dette tilfellet fordi SUMPRODUCT MAX bare fungerer med numeriske data:
Hvordan disse formlene fungerer
Matriseformelen fungerer på nøyaktig samme måte som MAKS HVIS med OG-logikk, bortsett fra at du slår sammen kriteriene ved å bruke addisjonsoperasjonen i stedet for multiplikasjon. I matriseformler fungerer addisjon som OR-operatoren:
Å legge sammen to matriser med TRUE og FALSE (som er resultatet av å kontrollere verdiene i B2:B10 mot kriteriene i F1 og H1) gir en matrise med 1-er og 0-er hvor 1 representerer elementene der en av betingelsene er SANN, og 0 representerer elementene der begge betingelsene er FALSE. Som et resultat "beholder" HVIS-funksjonen alle elementene i C2:C10 ( verdi_hvis_sann ) for hvilke en hvilken som helst betingelse er TRUE (1); de resterende elementene erstattes med FALSE fordiArgumentet verdi_hvis_falsk er ikke spesifisert.
Ikke-matriseformelen fungerer på lignende måte. Forskjellen er at i stedet for IFs logiske test, multipliserer du elementene i 1- og 0-matrisen med elementene i lengdehoppresultatmatrisen (C2:C10) i de tilsvarende posisjonene. Dette annullerer elementene som ikke oppfyller noen betingelse (har 0 i den første matrisen) og beholder elementene som oppfyller en av betingelsene (har 1 i den første matrisen).
MAXIFS – enkel måte å finne høyest verdi med betingelser
Brukerne av Excel 2019, 2021 og Excel 365 slipper bryet med å temme arrays for å bygge sin egen MAX IF-formel. Disse versjonene av Excel gir den etterlengtede MAXIFS-funksjonen som gjør det lett å finne den største verdien med betingelser.
I det første argumentet til MAXIFS angir du området der maksimalverdien skal finnes (D2: D16 i vårt tilfelle), og i de påfølgende argumentene kan du legge inn opptil 126 rekkevidde/kriteriepar. For eksempel:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Som vist i skjermbildet nedenfor, har denne enkle formelen ingen problemer med å behandle området som inneholder både numeriske og tekstverdier:
For detaljert informasjon om denne funksjonen, se Excel MAXIFS-funksjon med formeleksempler.
Slik kan du finne maksverdi med betingelser i Excel. Jeg takker for at du leser og håper å se deg på bloggen vår neste ganguke!
Øvningsarbeidsbok for nedlasting
Excel MAX IF-formeleksempler (.xlsx-fil)