Obsah
V článku je uvedených niekoľko rôznych spôsobov, ako získať maximálnu hodnotu v programe Excel na základe jednej alebo viacerých zadaných podmienok.
V našom predchádzajúcom návode sme sa zaoberali bežným použitím funkcie MAX, ktorá je určená na vrátenie najväčšieho čísla v súbore údajov. V niektorých situáciách však možno budete potrebovať preniknúť do údajov hlbšie a nájsť maximálnu hodnotu na základe určitých kritérií. To možno urobiť pomocou niekoľkých rôznych vzorcov a v tomto článku sú vysvetlené všetky možné spôsoby.
Vzorec MAX IF aplikácie Excel
Až donedávna nemal Microsoft Excel zabudovanú funkciu MAX IF na získanie maximálnej hodnoty na základe podmienok. So zavedením funkcie MAXIFS v programe Excel 2019 môžeme podmienené maximum vykonať jednoduchým spôsobom.
V aplikácii Excel 2016 a starších verziách si stále musíte vytvoriť vlastné vzorec poľa kombináciou funkcie MAX s príkazom IF:
{=MAX(IF( criteria_range = kritériá , max_range ))}Ak chcete vidieť, ako tento všeobecný vzorec MAX IF funguje na skutočných údajoch, zvážte nasledujúci príklad. Predpokladajme, že máte tabuľku s výsledkami skoku do diaľky niekoľkých študentov. Tabuľka obsahuje údaje za tri kolá a hľadáte najlepší výsledok konkrétneho športovca, povedzme Jakuba. S menami študentov v A2:A10 a vzdialenosťami v C2:C10 má vzorec tento tvar:
=MAX(IF(A2:A10="Jacob", C2:C10))
Majte na pamäti, že vzorec poľa sa musí vždy zadávať súčasným stlačením klávesov Ctrl + Shift + Enter. Výsledkom je, že sa automaticky obklopí kučeravými zátvorkami, ako je znázornené na nasledujúcej snímke (ručné zadávanie zátvoriek nebude fungovať!).
V reálnych pracovných listoch je výhodnejšie zadať kritérium do niektorej bunky, aby ste mohli ľahko zmeniť podmienku bez zmeny vzorca. Do F1 teda zadáme požadovaný názov a dostaneme nasledujúci výsledok:
=MAX(IF(A2:A10=F1, C2:C10))
Ako tento vzorec funguje
V logickom teste funkcie IF porovnávame zoznam názvov (A2:A10) s cieľovým názvom (F1). Výsledkom tejto operácie je pole TRUE a FALSE, kde hodnoty TRUE predstavujú názvy, ktoré sa zhodujú s cieľovým názvom (Jacob):
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}
Pre value_ if_true poskytujeme výsledky dlhého skoku (C2:C10), takže ak sa logický test vyhodnotí ako TRUE, vráti sa príslušné číslo zo stĺpca C. value_ if_false argument je vynechaný, čo znamená, že v prípade nesplnenia podmienky bude mať hodnotu FALSE:
{FALSE;FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE;FALSE}
Toto pole sa prenesie do funkcie MAX, ktorá vráti maximálny počet, pričom ignoruje hodnoty FALSE.
Tip. Ak chcete zobraziť vyššie uvedené interné polia, vyberte príslušnú časť vzorca v pracovnom hárku a stlačte kláves F9. Ak chcete ukončiť režim vyhodnocovania vzorcov, stlačte kláves Esc.
Vzorec MAX IF s viacerými kritériami
V situácii, keď potrebujete nájsť maximálnu hodnotu na základe viac ako jednej podmienky, môžete buď:
Na zahrnutie ďalších kritérií použite vnorené príkazy IF:
{=MAX(IF( kritérium_rozsah1 = kritériá1 , IF( kritérium_rozsah2 = kritériá2 , max_range )))}Alebo spracujte viacero kritérií pomocou operácie násobenia:
{=MAX(IF(( kritérium_rozsah1 = kritériá1 ) * ( kritérium_rozsah2 = kritériá2 ), max_range ))}Povedzme, že máte výsledky chlapcov a dievčat v jednej tabuľke a chcete nájsť najdlhší skok medzi dievčatami v kole 3. Aby sme to mali hotové, zadáme prvé kritérium (žena) do G1, druhé kritérium (3) do G2 a pomocou nasledujúcich vzorcov vypočítame maximálnu hodnotu:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Keďže v oboch prípadoch ide o vzorce poľa, nezabudnite stlačiť klávesovú skratku Ctrl + Shift + Enter, aby ste ich správne vyplnili.
Ako je znázornené na snímke obrazovky nižšie, vzorce poskytujú rovnaký výsledok, takže to, ktorý z nich použijete, je vecou vašich osobných preferencií. Pre mňa je vzorec s logikou Boolean jednoduchší na čítanie a zostavenie - umožňuje pridať ľubovoľný počet podmienok bez vnorenia ďalších funkcií IF.
Ako tieto vzorce fungujú
Prvý vzorec používa dve vnorené funkcie IF na vyhodnotenie dvoch kritérií. V logickom teste prvého príkazu IF porovnávame hodnoty v stĺpci Pohlavie (B2:B16) s kritériom v G1 ("Žena"). Výsledkom je pole hodnôt TRUE a FALSE, kde TRUE predstavuje údaje, ktoré zodpovedajú kritériu:
{FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE}
Podobným spôsobom druhá funkcia IF kontroluje hodnoty v stĺpci Round (C2:C16) na základe kritéria v G2.
Pre value_if_true argument v druhom príkaze IF, dodáme výsledky dlhého skoku (D2:D16), a tak získame položky, ktoré majú v prvých dvoch poliach na príslušných pozíciách hodnotu TRUE (t. j. položky, kde je pohlavie "žena" a kolo je 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}
Toto posledné pole sa prenesie do funkcie MAX, ktorá vráti najväčšie číslo.
Druhý vzorec vyhodnocuje rovnaké podmienky v rámci jedného logického testu a operácia násobenia funguje ako operátor AND:
Keď sa hodnoty TRUE a FALSE použijú v akejkoľvek aritmetickej operácii, prevedú sa na 1, resp. 0. A keďže vynásobením 0 sa vždy získa nula, výsledné pole má hodnotu 1 len vtedy, keď sú všetky podmienky TRUE. Toto pole sa vyhodnotí v logickom teste funkcie IF, ktorý vráti vzdialenosti zodpovedajúce prvkom 1 (TRUE).
MAX IF bez poľa
Mnohí používatelia programu Excel, vrátane mňa, majú predsudky voči vzorcom na vytváranie polí a snažia sa ich zbaviť všade, kde je to možné. Našťastie má Microsoft Excel niekoľko funkcií, ktoré natívne pracujú s poľom, a my môžeme použiť jednu z takýchto funkcií, konkrétne SUMPRODUCT, ako akýsi "obal" okolo MAX.
Všeobecný vzorec MAX IF bez poľa je nasledujúci:
=SUMPRODUKT(MAX(( kritérium_rozsah1 = kritériá1 ) * ( kritériá_rozsahu2 = kritériá2 ) * max_range ))V prípade potreby môžete samozrejme pridať ďalšie dvojice rozsah/kritérium.
Aby sme videli vzorec v praxi, použijeme údaje z predchádzajúceho príkladu. Cieľom je získať maximálny skok atlétky v 3. kole:
=SUMPRODUCT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Tento vzorec sa konkuruje bežnému stlačeniu klávesu Enter a vracia rovnaký výsledok ako vzorec MAX IF:
Pri podrobnejšom pohľade na uvedený obrázok si môžete všimnúť, že neplatné skoky označené v predchádzajúcich príkladoch symbolom "x" majú teraz v riadkoch 3, 11 a 15 hodnoty 0 a v nasledujúcej časti je vysvetlené prečo.
Ako tento vzorec funguje
Podobne ako pri vzorci MAX IF vyhodnotíme dve kritériá porovnaním každej hodnoty v stĺpcoch Gender (B2:B16) a Round (C2:C16) s kritériami v bunkách G1 a G2. Výsledkom sú dve polia hodnôt TRUE a FALSE. Vynásobením prvkov polí na rovnakých pozíciách sa hodnoty TRUE a FALSE premenia na 1, resp. 0, pričom 1 predstavuje položky, ktoré spĺňajú obe kritériá. Tretí vynásobenýpole obsahuje výsledky dlhých skokov (D2:D16). A keďže vynásobením 0 dostaneme nulu, zostanú zachované len položky, ktoré majú na príslušných pozíciách hodnotu 1 (TRUE):
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
V prípade max_range obsahuje akúkoľvek textovú hodnotu, operácia násobenia vráti chybu #VALUE, kvôli ktorej nebude celý vzorec fungovať.
Funkcia MAX ho odtiaľ prevezme a vráti najväčšie číslo, ktoré spĺňa zadané podmienky. Výsledné pole pozostávajúce z jedného prvku {4,63} prejde do funkcie SUMPRODUCT a tá vypíše maximálne číslo v bunke.
Poznámka: Vzhľadom na svoju špecifickú logiku funguje vzorec s nasledujúcimi výhradami:
- Rozsah, v ktorom hľadáte najvyššiu hodnotu, musí obsahovať iba čísla. Ak sa v ňom nachádzajú nejaké textové hodnoty, vráti sa chyba #VALUE!.
- Vzorec nemôže vyhodnotiť podmienku "nerovná sa nule" v zápornom súbore údajov. Ak chcete nájsť maximálnu hodnotu bez zohľadnenia núl, použite vzorec MAX IF alebo funkciu MAXIFS.
Vzorec Excel MAX IF s logikou OR
Zistenie maximálnej hodnoty, keď akékoľvek zo zadaných podmienok je splnená, použite už známy vzorec MAX IF s logikou Boolean, ale namiesto násobenia podmienok ich sčítajte.
{=MAX(IF(( kritérium_rozsah1 = kritériá1 ) + ( kritérium_rozsah2 = kritériá2 ), max_range ))}Prípadne môžete použiť nasledujúci vzorec, ktorý nie je tabuľkou:
=SUMPRODUKT(MAX((( kritérium_rozsah1 = kritériá1 ) + ( kritérium_rozsah2 = kritériá2 )) * max_range ))Ako príklad uvedieme najlepší výsledok v kolách 2 a 3. Upozorňujeme, že v jazyku Excel je úloha formulovaná inak: vráťte maximálnu hodnotu, ak je kolo 2 alebo 3.
S kolami uvedenými v B2:B10, výsledkami v C2:C10 a kritériami v F1 a H1 je vzorec nasledovný:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Vzorec zadáte stlačením kombinácie kláves Ctrl + Shift + Enter a dostanete tento výsledok:
Maximálnu hodnotu s rovnakými podmienkami možno nájsť aj pomocou tohto vzorca, ktorý sa netýka polí:
=SUMPRODUKT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
V tomto prípade však musíme všetky hodnoty "x" v stĺpci C nahradiť nulami, pretože SUMPRODUCT MAX pracuje len s číselnými údajmi:
Ako tieto vzorce fungujú
Vzorec poľa funguje presne tak isto ako MAX IF s logikou AND s tým rozdielom, že kritériá spájate pomocou operácie sčítania namiesto násobenia. Vo vzorcoch poľa funguje sčítanie ako operátor OR:
Sčítaním dvoch polí TRUE a FALSE (ktoré sú výsledkom kontroly hodnôt v B2:B10 podľa kritérií v F1 a H1) vznikne pole 1 a 0, kde 1 predstavuje položky, pre ktoré je jedna z podmienok TRUE, a 0 predstavuje položky, pre ktoré sú obe podmienky FALSE. Výsledkom je, že funkcia IF "uchováva" všetky položky v C2:C10 ( value_if_true ), pre ktoré je niektorá z podmienok TRUE (1); ostatné položky sú nahradené FALSE, pretože value_if_false argument nie je zadaný.
Vzorec bez poľa funguje podobným spôsobom. Rozdiel je v tom, že namiesto logického testu IF vynásobíte prvky poľa 1 a 0 prvkami poľa výsledkov dlhého skoku (C2:C10) na príslušných pozíciách. Tým sa zrušia položky, ktoré nespĺňajú žiadnu podmienku (majú 0 v prvom poli), a ponechajú sa položky, ktoré spĺňajú jednu z podmienok (majú 1 v prvom polipole).
MAXIFS - jednoduchý spôsob hľadania najvyššej hodnoty pomocou podmienok
Používatelia aplikácií Excel 2019, 2021 a Excel 365 sa zbavili problémov s krotením polí pri zostavovaní vlastného vzorca MAX IF. Tieto verzie aplikácie Excel poskytujú dlho očakávanú funkciu MAXIFS, vďaka ktorej je nájdenie najväčšej hodnoty pomocou podmienok detskou hračkou.
V prvom argumente MAXIFS zadáte rozsah, v ktorom sa má nájsť maximálna hodnota (v našom prípade D2:D16), a v ďalších argumentoch môžete zadať až 126 dvojíc rozsah/kritérium. Napríklad:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Ako je znázornené na nasledujúcej snímke obrazovky, tento jednoduchý vzorec nemá problém so spracovaním rozsahu, ktorý obsahuje číselné aj textové hodnoty:
Podrobné informácie o tejto funkcii nájdete v časti Funkcia MAXIFS aplikácie Excel s príkladmi vzorcov.
Takto môžete nájsť maximálnu hodnotu pomocou podmienok v programe Excel. Ďakujem vám za prečítanie a dúfam, že sa uvidíme na našom blogu budúci týždeň!
Cvičebnica na stiahnutie
Príklady vzorcov Excel MAX IF (.xlsx súbor)