Exceli MAX IF-valem suurima väärtuse leidmiseks tingimustega

  • Jaga Seda
Michael Brown

Artiklis on näidatud mõned erinevad viisid, kuidas saada Excelis maksimaalne väärtus ühe või mitme määratud tingimuse alusel.

Eelmises õpetuses vaatlesime funktsiooni MAX tavalisi kasutusvõimalusi, mis on mõeldud andmekogumi suurima arvu tagastamiseks. Mõnes olukorras võib aga olla vaja andmeid põhjalikumalt analüüsida, et leida teatud kriteeriumide alusel maksimaalne väärtus. Seda saab teha mitme erineva valemi abil ja selles artiklis selgitatakse kõiki võimalikke viise.

    Exceli MAX IF valem

    Kuni viimase ajani ei olnud Microsoft Excelil sisseehitatud funktsiooni MAX IF, et saada maksimaalne väärtus tingimuste alusel. MAXIFS-i kasutuselevõtuga Excel 2019-is saame teha tingimusliku maksimumi lihtsal viisil.

    Excel 2016 ja varasemates versioonides peate endiselt looma omaenda massiivi valem kombineerides funktsiooni MAX ja IF avalduse:

    {=MAX(IF( kriteeriumid_vahemik = kriteeriumid , max_range ))}

    Et näha, kuidas see üldine MAX IF valem töötab reaalsete andmete puhul, vaadake järgmist näidet. Oletame, et teil on tabel mitme õpilase kaugushüppe tulemustega. Tabel sisaldab kolme vooru andmeid ja te otsite ühe konkreetse sportlase, näiteks Jacobi, parimat tulemust. Kui õpilaste nimed on A2:A10 ja kaugused C2:C10, võtab valem sellise kuju:

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

    Pidage meeles, et massiivi valem tuleb alati sisestada, vajutades samaaegselt klahve Ctrl + Shift + Enter. Selle tulemusena ümbritsetakse see automaatselt kõverate sulgudega, nagu on näidatud alloleval ekraanipildil (käsitsi sulgude sisestamine ei toimi!).

    I reaalse töölehti, see on mugavam sisestada kriteeriumi mõnes lahtris, nii et saate kergesti muuta tingimust ilma valemit muutmata. Nii, me sisestame soovitud nime F1 ja saame järgmise tulemuse:

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

    Kuidas see valem töötab

    IF-funktsiooni loogilises testis võrdleme nimede nimekirja (A2:A10) sihtnimega (F1). Selle operatsiooni tulemuseks on massiivi TRUE ja FALSE, kus TRUE väärtused tähistavad nimesid, mis vastavad sihtnimele (Jacob):

    {VALE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}

    Sest value_ if_true argumendiga anname pika hüppe tulemused (C2:C10), nii et kui loogiline test annab tulemuseks TRUE, siis tagastatakse vastav number veerust C. value_ if_false argument on välja jäetud, mis tähendab, et kui tingimus ei ole täidetud, on väärtus FALSE:

    {FALSE;FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE;FALSE;FALSE}

    See massiivi sisestatakse funktsioonile MAX, mis tagastab maksimaalse arvu, ignoreerides FALSE väärtusi.

    Vihje. Eespool käsitletud sisemiste massiividega tutvumiseks valige oma töölehel vastav valemi osa ja vajutage klahvi F9. Valemi hindamisrežiimist väljumiseks vajutage klahvi Esc.

    MAX IF valem mitme kriteeriumiga

    Kui teil on vaja leida maksimaalne väärtus rohkem kui ühe tingimuse alusel, saate kas:

    Kasutage sisseehitatud IF-avaldusi, et lisada täiendavaid kriteeriume:

    {=MAX(IF( kriteeriumid_vahemik1 = kriteeriumid1 , IF( kriteeriumid_vahemik2 = kriteeriumid2 , max_range )))}

    Või käsitsege mitut kriteeriumi, kasutades korrutamisoperatsiooni:

    {=MAX(IF(( kriteeriumid_vahemik1 = kriteeriumid1 ) * ( kriteeriumid_vahemik2 = kriteeriumid2 ), max_range ))}

    Oletame, et teil on poiste ja tüdrukute tulemused ühes tabelis ja te soovite leida kõige pikema hüppe tüdrukute seas 3. voorus. Selleks sisestame esimese kriteeriumi (naine) tabelisse G1, teise kriteeriumi (3) tabelisse G2 ja kasutame järgmisi valemeid, et välja arvutada maksimaalne väärtus:

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

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

    Kuna mõlemad on massiivi valemid, ärge unustage vajutada Ctrl + Shift + Enter, et neid korrektselt täita.

    Nagu on näidatud allpool oleval ekraanipildil, annavad need valemid sama tulemuse, nii et kumba neist kasutada, on teie isikliku eelistuse küsimus. Minu jaoks on Boole'i loogikaga valemit lihtsam lugeda ja koostada - see võimaldab lisada nii palju tingimusi kui soovite, ilma täiendavate IF-funktsioonide pesitsuseta.

    Kuidas need valemid toimivad

    Esimeses valemis kasutatakse kahte sisseehitatud IF-funktsiooni kahe kriteeriumi hindamiseks. Esimese IF-lause loogilises testis võrdleme veerus Gender (B2:B16) olevaid väärtusi kriteeriumiga G1 ("Female"). Tulemuseks on TRUE ja FALSE väärtuste massiivi, kus TRUE tähistab andmeid, mis vastavad kriteeriumile:

    {VALE; VALE; VALE; VALE; TÕSI; TÕSI; TÕSI; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; TÕSI; TÕSI; TÕSI; TÕSI; TÕSI}

    Sarnaselt kontrollib teine IF-funktsioon veerus Round (C2:C16) olevaid väärtusi G2 kriteeriumi suhtes.

    Sest value_if_true argument teises IF avalduses, anname pika hüppe tulemused (D2:D16), ja nii saame elemendid, mille kahe esimese massiivi vastavatel positsioonidel on TRUE (st elemendid, mille sugu on "naine" ja ring on 3):

    {VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; VALE; 4.52}

    See lõplik massiivi läheb funktsioonile MAX ja see tagastab suurima arvu.

    Teine valem hindab samu tingimusi ühe loogilise testi raames ja korrutamisoperatsioon toimib nagu AND-operaator:

    Kui TRUE ja FALSE väärtusi kasutatakse mis tahes aritmeetilises operatsioonis, teisendatakse need vastavalt 1 ja 0. Ja kuna 0-ga korrutamine annab alati nulli, on saadud massiivi väärtus 1 ainult siis, kui kõik tingimused on TRUE. Seda massiivi hinnatakse IF-funktsiooni loogilises testis, mis tagastab 1 (TRUE) elemendile vastavad vahekaugused.

    MAX IF ilma massiivita

    Paljud Exceli kasutajad, kaasa arvatud mina, on eelarvamustega massiivi valemite suhtes ja püüavad neist võimaluse korral vabaneda. Õnneks on Microsoft Excelil mõned funktsioonid, mis käsitsevad massiive algselt ja me saame kasutada ühte sellist funktsiooni, nimelt SUMPRODUCT, omamoodi "mähisena" MAXi ümber.

    Üldine MAX IF valem ilma massiivita on järgmine:

    =SUMPRODUCT(MAX(( kriteeriumid_vahemik1 = kriteeriumid1 ) * ( kriteeriumid_vahemik2 = kriteeriumid2 ) * max_range ))

    Loomulikult saate vajadusel lisada rohkem vahemiku/kriteeriumi paare.

    Et näha valemit töös, kasutame eelmise näite andmeid. Eesmärgiks on saada naissportlase maksimaalne hüpe 3. voorus:

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

    See valem konkureerib tavalise Enter-klahvivajutusega ja annab sama tulemuse kui massiivi MAX IF valem:

    Vaadates ülaltoodud ekraanipilti lähemalt, võite märgata, et eelmistes näidetes "x"-ga märgitud kehtetute hüpete väärtused on nüüd ridades 3, 11 ja 15 0. Järgnevalt selgitatakse, miks.

    Kuidas see valem töötab

    Nagu MAX IF valemi puhul, hindame kahte kriteeriumi, võrreldes iga väärtust veergudes Gender (B2:B16) ja Round (C2:C16) lahtrites G1 ja G2 olevate kriteeriumidega. Tulemuseks on kaks TRUE ja FALSE väärtuste massiivi. Korrutades massiivi elemente samades positsioonides, muudetakse TRUE ja FALSE vastavalt 1 ja 0, kus 1 tähistab mõlemale kriteeriumile vastavaid elemente. Kolmas korrutatudmassiiv sisaldab pika hüppe tulemusi (D2:D16). Ja kuna korrutamine 0-ga annab nulli, jäävad alles ainult need elemendid, mille vastavates positsioonides on 1 (TRUE):

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

    Juhul kui max_range sisaldab mis tahes tekstiväärtust, annab korrutamisoperatsioon tagasi vea #VALUE, mille tõttu kogu valem ei tööta.

    Funktsioon MAX võtab selle siit ja tagastab suurima arvu, mis vastab määratud tingimustele. Saadud ühe elemendi {4,63} sisaldav massiivi läheb funktsioonile SUMPRODUCT ja see väljastab lahtrisse maksimaalse arvu.

    Märkus. Selle erilise loogika tõttu töötab valem järgmiste hoiatustega:

    • Vahemik, kus otsite suurimat väärtust, peab sisaldama ainult numbreid. Kui seal on tekstiväärtusi, saadetakse tagasi viga #VALUE!.
    • Valem ei saa hinnata tingimust "ei ole võrdne nulliga" negatiivse andmekogumi korral. Nullidega mittearvestava maksimaalse väärtuse leidmiseks kasutage kas valemit MAX IF või funktsiooni MAXIFS.

    Exceli MAX IF-valem OR-loogikaga

    Maksimaalse väärtuse leidmiseks, kui mis tahes määratud tingimustest on täidetud, kasutage juba tuttavat massiivi MAX IF valemit koos bool'i loogikaga, kuid korrutamise asemel lisage tingimused.

    {=MAX(IF(( kriteeriumid_vahemik1 = kriteeriumid1 ) + ( kriteeriumid_vahemik2 = kriteeriumid2 ), max_range ))}

    Teise võimalusena võite kasutada järgmist mitte-mustrilist valemit:

    =SUMPRODUCT(MAX(((( kriteeriumid_vahemik1 = kriteeriumid1 ) + ( kriteeriumid_vahemik2 = kriteeriumid2 )) * max_range ))

    Näitena töötame välja parima tulemuse voorudes 2 ja 3. Pöörake tähelepanu, et Exceli keeles on ülesanne sõnastatud teisiti: tagastage maksimaalne väärtus, kui voor on kas 2 või 3.

    Kui voorud on loetletud B2:B10, tulemused C2:C10 ja kriteeriumid F1 ja H1, siis valem on järgmine:

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

    Sisestage valem, vajutades klahvikombinatsiooni Ctrl + Shift + Enter, ja te saate selle tulemuse:

    Samade tingimustega maksimaalse väärtuse saab leida ka selle mitte-massiivse valemi abil:

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

    Siiski peame sel juhul asendama kõik "x" väärtused veerus C nullidega, sest SUMPRODUCT MAX töötab ainult numbriliste andmetega:

    Kuidas need valemid toimivad

    Massiivivalem töötab täpselt samamoodi nagu MAX IF AND-loogikaga, välja arvatud see, et kriteeriumid ühendatakse, kasutades korrutamise asemel liitmisoperatsiooni. Massiivivalemites toimib liitmine nagu OR-operaator:

    Kui liita kokku kaks massiivi TRUE ja FALSE (mis tulenevad B2:B10 väärtuste kontrollimisest F1 ja H1 kriteeriumide suhtes), saadakse massiivi 1 ja 0, kus 1 tähistab elemente, mille puhul üks tingimus on TRUE ja 0 tähistab elemente, mille puhul mõlemad tingimused on FALSE. Selle tulemusena "hoiab" IF-funktsioon kõik C2:C10 elemendid ( value_if_true ), mille puhul mis tahes tingimus on TRUE (1); ülejäänud elemendid asendatakse FALSE-ga, sest value_if_false argumenti ei ole määratud.

    Mitte-massiivi valem töötab sarnaselt. Erinevus seisneb selles, et IF-i loogilise testi asemel korrutatakse 1 ja 0 massiivi elemendid pikahüppe tulemuste massiivi (C2:C10) elementidega vastavatel positsioonidel. See nullab elemendid, mis ei vasta ühelegi tingimusele (on 0 esimeses massiivis) ja säilitab elemendid, mis vastavad ühele tingimusele (on 1 esimesesmassiivi).

    MAXIFS - lihtne viis kõrgeima väärtuse leidmiseks koos tingimustega

    Excel 2019, 2021 ja Excel 365 kasutajad on vabastatud massiivi taltsutamise vaevast, et koostada oma MAX IF valem. Need Exceli versioonid pakuvad kauaoodatud funktsiooni MAXIFS, mis teeb suurima väärtuse leidmise tingimustega lapsemänguks.

    MAXIFS-i esimeses argumendis sisestate vahemiku, milles maksimaalne väärtus tuleks leida (meie puhul D2:D16), ja järgnevates argumentides saate sisestada kuni 126 vahemiku/kriteeriumi paari. Näiteks:

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

    Nagu on näidatud allpool oleval ekraanipildil, ei ole sellel lihtsal valemil probleeme nii arv- kui ka tekstiväärtusi sisaldava vahemiku töötlemisega:

    Üksikasjalikku teavet selle funktsiooni kohta leiate Exceli MAXIFS-funktsioonist koos valemite näidetega.

    Nii saab Excelis tingimuste abil leida maksimaalse väärtuse. Tänan teid lugemast ja loodan, et näeme teid järgmisel nädalal meie blogis!

    Praktiline töövihik allalaadimiseks

    Exceli MAX IF-valemi näited (.xlsx fail)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.