Turinys
Straipsnyje pateikiami keli skirtingi būdai, kaip "Excel" programoje gauti didžiausią vertę pagal vieną ar kelias nurodytas sąlygas.
Ankstesnėje pamokoje apžvelgėme, kaip dažniausiai naudojama funkcija MAX, skirta didžiausiam duomenų aibės skaičiui grąžinti. Tačiau tam tikrais atvejais gali prireikti giliau panagrinėti duomenis ir rasti didžiausią reikšmę pagal tam tikrus kriterijus. Tai galima padaryti naudojant kelias skirtingas formules, o šiame straipsnyje paaiškinami visi galimi būdai.
"Excel" MAX IF formulė
Iki šiol "Microsoft Excel" neturėjo integruotos funkcijos MAX IF, kad pagal sąlygas gautume didžiausią reikšmę. 2019 m. "Excel" įdiegus funkciją MAXIFS, galime lengvai atlikti sąlyginį maksimumą.
"Excel 2016" ir ankstesnėse versijose vis dar turite sukurti savo masyvo formulė derinant funkciją MAX su teiginiu IF:
{=MAX(IF( kriterijų_diapazonas = kriterijai , max_range ))}Norėdami pamatyti, kaip ši bendroji MAX IF formulė veikia realius duomenis, panagrinėkite toliau pateiktą pavyzdį. Tarkime, turite lentelę su kelių mokinių šuolio į tolį rezultatais. Lentelėje yra trijų rungčių duomenys, o jūs ieškote geriausio konkretaus sportininko, tarkime, Jokūbo, rezultato. Kai mokinių vardai yra A2:A10, o atstumai - C2:C10, formulė įgauna tokią formą:
=MAX(IF(A2:A10="Jacob", C2:C10))
Atminkite, kad masyvo formulę visada reikia įvesti vienu metu spaudžiant klavišus Ctrl + Shift + Enter. Dėl to ji automatiškai apsupama lenktiniais skliaustais, kaip parodyta toliau pateiktoje ekrano nuotraukoje (rankiniu būdu skliaustų įvesti nepavyks!).
Realiuose darbalapiuose patogiau kriterijų įvesti į tam tikrą langelį, kad galėtumėte lengvai pakeisti sąlygą nekeisdami formulės. Taigi, į F1 įrašome norimą pavadinimą ir gauname tokį rezultatą:
=MAX(IF(A2:A10=F1, C2:C10))
Kaip veikia ši formulė
Atliekant funkcijos IF loginį testą, vardų sąrašas (A2:A10) lyginamas su tiksliniu vardu (F1). Šio veiksmo rezultatas yra TRUE ir FALSE masyvų masyvas, kuriame TRUE reikšmės reiškia vardus, atitinkančius tikslinį vardą (Jacob):
{FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}
Dėl value_ if_true argumentas, pateikiame ilgojo šuolio rezultatus (C2:C10), todėl, jei loginis testas įvertinamas TRUE, grąžinamas atitinkamas skaičius iš C stulpelio. value_ if_false argumentas praleistas, tai reiškia, kad bus tiesiog FALSE reikšmė, jei sąlyga neįvykdyta:
{NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA;NETIKRA}
Šis masyvas perduodamas funkcijai MAX, kuri grąžina didžiausią skaičių, neatsižvelgdama į reikšmes FALSE.
Patarimas. Norėdami pamatyti pirmiau aptartus vidinius masyvus, darbalapyje pasirinkite atitinkamą formulės dalį ir paspauskite klavišą F9. Norėdami išeiti iš formulės vertinimo režimo, paspauskite klavišą Esc.
MAX IF formulė su keliais kriterijais
Jei reikia rasti didžiausią reikšmę pagal daugiau nei vieną sąlygą, galite:
Norėdami įtraukti papildomus kriterijus, naudokite įterptinius IF teiginius:
{=MAX(IF( kriterijus_range1 = kriterijai1 , IF( kriterijai_diapazonas2 = kriterijai2 , max_range )))}Arba tvarkykite kelis kriterijus naudodami daugybos operaciją:
{=MAX(IF(( kriterijus_range1 = kriterijai1 ) * ( kriterijai_diapazonas2 = kriterijai2 ), max_range ))}Tarkime, vienoje lentelėje turite berniukų ir mergaičių rezultatus ir norite rasti ilgiausią šuolį tarp mergaičių 3 rungtyje. Norėdami tai padaryti, pirmąjį kriterijų (mergaitės) įrašome į G1, antrąjį kriterijų (3) - į G2, o didžiausią reikšmę nustatome pagal šias formules:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Kadangi abi formulės yra masyvo formulės, nepamirškite paspausti Ctrl + Shift + Enter, kad jas teisingai užbaigtumėte.
Kaip parodyta toliau pateiktoje ekrano nuotraukoje, formulės duoda tą patį rezultatą, todėl kurią iš jų naudoti, priklauso nuo jūsų asmeninių pageidavimų. Man formulę su logine logika yra lengviau skaityti ir kurti, nes ji leidžia pridėti tiek sąlygų, kiek norite, be papildomų IF funkcijų.
Kaip veikia šios formulės
Pirmoje formulėje dviem kriterijams įvertinti naudojamos dvi įterptos IF funkcijos. Pirmojo IF teiginio loginio testo metu lyginamos stulpelio "Gender" (B2:B16) reikšmės su G1 ("Female") kriterijumi. Rezultatas yra TRUE ir FALSE reikšmių masyvas, kuriame TRUE reiškia duomenis, atitinkančius kriterijų:
{FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE; TRUE}
Panašiai antroji IF funkcija tikrina apvalaus stulpelio (C2:C16) reikšmes pagal G2 kriterijų.
Dėl value_if_true argumentas antrajame IF teiginyje pateikiame šuolio į tolį rezultatus (D2:D16) ir taip gauname elementus, kurių pirmųjų dviejų masyvų atitinkamose pozicijose yra TRUE (t. y. elementus, kurių lytis yra "moteris", o raundas - 3):
Šis galutinis masyvas perduodamas MAX funkcijai, kuri grąžina didžiausią skaičių.
Antrojoje formulėje tos pačios sąlygos įvertinamos vienu loginiu testu, o daugybos operacija veikia kaip operatorius AND:
Kai TRUE ir FALSE reikšmės naudojamos atliekant bet kokią aritmetinę operaciją, jos paverčiamos atitinkamai 1 ir 0. Kadangi dauginant iš 0 visada gaunamas nulis, gautame masyve 1 yra tik tada, kai visos sąlygos yra TRUE. Šis masyvas įvertinamas funkcijos IF loginiu testu, kuris grąžina atstumus, atitinkančius 1 (TRUE) elementus.
MAX IF be masyvo
Daugelis "Excel" naudotojų, įskaitant ir mane, yra nusistatę prieš masyvų formules ir stengiasi jų atsikratyti, kur tik įmanoma. Laimei, "Microsoft Excel" turi keletą funkcijų, kurios natūraliai apdoroja masyvus, ir vieną iš tokių funkcijų, būtent SUMPRODUCT, galime naudoti kaip tam tikrą "apvalkalą" aplink MAX.
Bendroji MAX IF formulė be masyvo yra tokia:
=SUMPRODUKTAS(MAX(( kriterijus_range1 = kriterijai1 ) * ( kriterijų_diapazonas2 = kriterijai2 ) * max_range ))Žinoma, prireikus galite pridėti daugiau diapazono ir kriterijų porų.
Norėdami pamatyti, kaip formulė veikia, naudosime ankstesnio pavyzdžio duomenis. Tikslas - gauti didžiausią sportininkės šuolį 3 rungtyje:
=SUMPRODUKT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Ši formulė konkuruoja su įprastu klavišo Enter paspaudimu ir grąžina tą patį rezultatą kaip ir masyvo MAX IF formulė:
Atidžiau pažvelgę į pirmiau pateiktą ekrano nuotrauką, galite pastebėti, kad ankstesniuose pavyzdžiuose "x" pažymėti negaliojantys šuoliai 3, 11 ir 15 eilutėse dabar turi 0 reikšmes, o kitame skyriuje paaiškinama, kodėl.
Kaip veikia ši formulė
Kaip ir formulėje MAX IF, vertiname du kriterijus, lygindami kiekvieną Gender (B2:B16) ir Round (C2:C16) stulpelių reikšmę su G1 ir G2 langeliuose esančiais kriterijais. Rezultatas - du TRUE ir FALSE reikšmių masyvai. Dauginant masyvų elementus tose pačiose pozicijose, TRUE ir FALSE paverčiami atitinkamai 1 ir 0, kur 1 reiškia elementus, atitinkančius abu kriterijus. Trečiasis daugiklismasyvą sudaro ilgojo šuolio rezultatai (D2:D16). Kadangi padauginus iš 0 gaunamas nulis, išlieka tik tie elementai, kurių atitinkamose pozicijose yra 1 (TRUE):
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
Jei max_range yra bet kokia teksto reikšmė, daugybos operacija grąžina #VALUE klaidą, dėl kurios visa formulė neveiks.
Funkcija MAX iš čia jį perima ir grąžina didžiausią skaičių, atitinkantį nurodytas sąlygas. Gautas masyvas, sudarytas iš vieno elemento {4,63}, patenka į funkciją SUMPRODUCT, o ji ląstelėje išveda didžiausią skaičių.
Pastaba. Dėl specifinės logikos formulė veikia su šiomis išlygomis:
- Intervale, kuriame ieškote didžiausios reikšmės, turi būti tik skaičiai. Jei yra kokių nors teksto reikšmių, grąžinama klaida #VALUE!.
- Formulė negali įvertinti sąlygos "nelygu nuliui" neigiamame duomenų rinkinyje. Norėdami rasti didžiausią reikšmę neatsižvelgdami į nulius, naudokite MAX IF formulę arba MAXIFS funkciją.
"Excel" MAX IF formulė su OR logika
Norėdami rasti didžiausią vertę, kai bet kuris iš nurodytų sąlygų yra įvykdyta, naudokite jau pažįstamą masyvo MAX IF formulę su logine logika, tačiau sąlygas ne dauginkite, o sudėkite.
{=MAX(IF(( kriterijus_range1 = kriterijai1 ) + ( kriterijų_diapazonas2 = kriterijai2 ), max_range ))}Taip pat galite naudoti šią ne masyvų formulę:
=SUMPRODUKTAS(MAX((( kriterijus_range1 = kriterijai1 ) + ( kriterijai_diapazonas2 = kriterijai2 )) * max_range ))Kaip pavyzdį galime pateikti geriausią rezultatą 2 ir 3 raunduose. Atkreipkite dėmesį, kad "Excel" kalboje užduotis suformuluota kitaip: grąžinkite didžiausią reikšmę, jei raundas yra 2 arba 3.
Turint B2:B10 išvardytus raundus, C2:C10 išvardytus rezultatus ir F1 bei H1 kriterijus, formulė yra tokia:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Įveskite formulę spausdami Ctrl + Shift + Enter klavišų kombinaciją ir gausite šį rezultatą:
Didžiausią reikšmę, esant toms pačioms sąlygoms, taip pat galima rasti naudojant šią ne masyvų formulę:
=SUMPRODUKTAS(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
Tačiau šiuo atveju visas "x" reikšmes C stulpelyje turime pakeisti nuliais, nes SUMPRODUCT MAX veikia tik su skaitiniais duomenimis:
Kaip veikia šios formulės
Masyvo formulė veikia lygiai taip pat, kaip ir MAX IF su AND logika, išskyrus tai, kad kriterijus sujungiate naudodami sudėties, o ne daugybos operaciją. Masyvo formulėse sudėtis veikia kaip OR operatorius:
Sudėjus du masyvus TRUE ir FALSE (kurie gaunami patikrinus B2:B10 reikšmes pagal F1 ir H1 kriterijus), gaunamas 1 ir 0 masyvų masyvas, kuriame 1 reiškia elementus, kurių bet kuri sąlyga yra TRUE, o 0 - elementus, kurių abi sąlygos yra FALSE. Todėl funkcija IF "išsaugo" visus C2:C10 elementus ( value_if_true ), kurių bet kuri sąlyga yra TRUE (1); kiti elementai pakeičiami FALSE, nes value_if_false argumentas nenurodytas.
Formulė, kurioje nėra masyvo, veikia panašiai. Skirtumas tas, kad vietoj IF loginio testo 1 ir 0 masyvų elementus dauginate iš ilgojo šuolio rezultatų masyvo (C2:C10) elementų atitinkamose pozicijose. Taip panaikinami elementai, kurie neatitinka jokios sąlygos (pirmajame masyve yra 0), ir išsaugomi elementai, kurie atitinka vieną iš sąlygų (pirmajame masyve yra 1).masyvas).
MAXIFS - paprastas būdas rasti didžiausią vertę su sąlygomis
"Excel 2019", 2021 ir "Excel 365" naudotojams nebereikia vargti su masyvų sutramdymu kuriant savo MAX IF formulę. Šiose "Excel" versijose pateikiama ilgai laukta MAXIFS funkcija, kuri leidžia lengvai rasti didžiausią reikšmę su sąlygomis.
Pirmuoju MAXIFS argumentu įveskite intervalą, kuriame reikia rasti didžiausią vertę (mūsų atveju D2:D16), o tolesniais argumentais galite įvesti iki 126 intervalų ir kriterijų porų. Pavyzdžiui:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Kaip parodyta toliau pateiktoje ekrano nuotraukoje, ši paprasta formulė be problemų apdoroja diapazoną, kuriame yra ir skaitinių, ir tekstinių reikšmių:
Išsamesnės informacijos apie šią funkciją rasite "Excel" funkcijos MAXIFS pavyzdžiuose su formulėmis.
Štai kaip "Excel" programoje galite rasti didžiausią vertę su sąlygomis. Dėkoju, kad perskaitėte, ir tikiuosi, kad kitą savaitę susitiksime mūsų tinklaraštyje!
Atsisiųsti praktikos sąsiuvinį
"Excel" MAX IF formulės pavyzdžiai (.xlsx failas)