Cuprins
Articolul prezintă câteva modalități diferite de a obține valoarea maximă în Excel pe baza uneia sau mai multor condiții pe care le specificați.
În tutorialul nostru anterior, am analizat utilizările obișnuite ale funcției MAX, care este concepută pentru a returna cel mai mare număr dintr-un set de date. În unele situații, însă, este posibil să fie nevoie să detaliați mai mult datele pentru a găsi valoarea maximă pe baza anumitor criterii. Acest lucru poate fi realizat prin utilizarea câtorva formule diferite, iar acest articol explică toate modalitățile posibile.
Formula Excel MAX IF
Până de curând, Microsoft Excel nu a avut o funcție MAX IF încorporată pentru a obține valoarea maximă pe baza condițiilor. Odată cu introducerea MAXIFS în Excel 2019, putem face max condițional într-un mod simplu.
În Excel 2016 și în versiunile anterioare, trebuie în continuare să vă creați propria dvs. formula matricei prin combinarea funcției MAX cu o instrucțiune IF:
{=MAX(IF( interval_criteriu = criterii , max_range ))}Pentru a vedea cum funcționează această formulă generică MAX IF pe date reale, vă rugăm să luați în considerare următorul exemplu. Să presupunem că aveți un tabel cu rezultatele la săritura în lungime ale mai multor elevi. Tabelul include datele pentru trei runde și căutați cel mai bun rezultat al unui anumit atlet, să spunem Iacob. Cu numele elevilor în A2:A10 și distanțele în C2:C10, formula are următoarea formă:
=MAX(IF(A2:A10="Jacob", C2:C10))
Vă rugăm să rețineți că o formulă de matrice trebuie introdusă întotdeauna prin apăsarea simultană a tastelor Ctrl + Shift + Enter. Ca urmare, aceasta este înconjurată automat cu paranteze curbe, așa cum se arată în captura de ecran de mai jos (nu va funcționa dacă introduceți manual parantezele!).
În foile de lucru din viața reală, este mai convenabil să introduceți criteriul într-o celulă, astfel încât să puteți schimba cu ușurință condiția fără a modifica formula. Deci, introducem numele dorit în F1 și obținem următorul rezultat:
=MAX(IF(A2:A10=F1, C2:C10))
Cum funcționează această formulă
În testul logic al funcției IF, comparăm lista de nume (A2:A10) cu numele țintă (F1). Rezultatul acestei operații este un tablou de TRUE și FALSE, unde valorile TRUE reprezintă nume care se potrivesc cu numele țintă (Jacob):
{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}
Pentru valoare_ if_true furnizăm rezultatele săriturii în lungime (C2:C10), astfel încât, dacă testul logic este evaluat la TRUE, se returnează numărul corespunzător din coloana C. În cazul în care se utilizează argumentul valoare_ if_false este omis, ceea ce înseamnă că va avea doar o valoare FALSE în cazul în care condiția nu este îndeplinită:
{FALSE;FALSE;FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE;FALSE}
Această matrice este transmisă funcției MAX, care returnează numărul maxim, ignorând valorile FALSE.
Sfat. Pentru a vedea matricele interne discutate mai sus, selectați partea corespunzătoare a formulei din foaia de calcul și apăsați tasta F9. Pentru a ieși din modul de evaluare a formulei, apăsați tasta Esc.
Formula MAX IF cu criterii multiple
În situația în care trebuie să găsiți valoarea maximă pe baza mai multor condiții, puteți fie:
Utilizați instrucțiuni IF imbricate pentru a include criterii suplimentare:
{=MAX(IF( intervalul_criteriu1 = criterii1 , IF( criterii_gama2 = criterii2 , max_range )))}Sau gestionați mai multe criterii prin utilizarea operației de multiplicare:
{=MAX(IF((( intervalul_criteriu1 = criterii1 ) * ( criterii_gama2 = criterii2 ), max_range ))}Să presupunem că aveți rezultatele băieților și fetelor într-un singur tabel și doriți să găsiți cea mai lungă săritură dintre fete în runda 3. Pentru a face acest lucru, introducem primul criteriu (feminin) în G1, al doilea criteriu (3) în G2 și folosim următoarele formule pentru a calcula valoarea maximă:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Deoarece ambele sunt formule de tip array, nu uitați să apăsați Ctrl + Shift + Enter pentru a le completa corect.
După cum se arată în captura de ecran de mai jos, formulele produc același rezultat, astfel încât care dintre ele să fie utilizată este o chestiune de preferință personală. Pentru mine, formula cu logică booleană este mai ușor de citit și de construit - permite adăugarea a câte condiții doriți fără a anina funcții IF suplimentare.
Cum funcționează aceste formule
Prima formulă utilizează două funcții IF imbricate pentru a evalua două criterii. În testul logic al primei declarații IF, comparăm valorile din coloana Gender (B2:B16) cu criteriul din G1 ("Female"). Rezultatul este o matrice de valori TRUE și FALSE, unde TRUE reprezintă datele care corespund criteriului:
{FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE}
În mod similar, cea de-a doua funcție IF verifică valorile din coloana Round (C2:C16) în raport cu criteriul din G2.
Pentru value_if_true în cea de-a doua instrucțiune IF, furnizăm rezultatele săriturii în lungime (D2:D16), iar în acest fel obținem elementele care au TRUE în primele două matrici în pozițiile corespunzătoare (de exemplu, elementele în care sexul este "feminin" și runda este 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}
Această ultimă matrice este transmisă funcției MAX, care returnează cel mai mare număr.
Cea de-a doua formulă evaluează aceleași condiții într-un singur test logic, iar operația de multiplicare funcționează ca operatorul AND:
Atunci când valorile TRUE și FALSE sunt utilizate în orice operație aritmetică, ele sunt convertite în 1 și, respectiv, 0. Și deoarece înmulțirea cu 0 dă întotdeauna zero, matricea rezultată are 1 numai atunci când toate condițiile sunt TRUE. Această matrice este evaluată în testul logic al funcției IF, care returnează distanțele corespunzătoare elementelor 1 (TRUE).
MAX IF fără matrice
Mulți utilizatori de Excel, inclusiv eu, au prejudecăți împotriva formulelor de matrice și încearcă să scape de ele ori de câte ori este posibil. Din fericire, Microsoft Excel are câteva funcții care gestionează matricea în mod nativ, iar noi putem folosi una dintre aceste funcții, și anume SUMPRODUCT, ca un fel de "înveliș" în jurul MAX.
Formula generică MAX IF fără matrice este următoarea:
=SUMPRODUCT(MAX((( intervalul_criteriu1 = criterii1 ) * ( criterii_gama2 = criterii2 ) * max_range ))Firește, puteți adăuga mai multe perechi de intervale/criterii, dacă este necesar.
Pentru a vedea formula în acțiune, vom folosi datele din exemplul anterior. Scopul este de a obține săritura maximă a unei atlete în runda 3:
=SUMPRODUCT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Această formulă se execută cu o apăsare normală a tastei Enter și returnează același rezultat ca și formula MAX IF:
Dacă vă uitați mai atent la captura de ecran de mai sus, puteți observa că salturile invalide marcate cu "x" în exemplele anterioare au acum valori 0 în rândurile 3, 11 și 15, iar în secțiunea următoare se explică de ce.
Cum funcționează această formulă
Ca și în cazul formulei MAX IF, evaluăm două criterii comparând fiecare valoare din coloanele Gender (B2:B16) și Round (C2:C16) cu criteriile din celulele G1 și G2. Rezultă două matrici de valori TRUE și FALSE. Înmulțirea elementelor matricelor în aceleași poziții convertește TRUE și FALSE în 1 și, respectiv, 0, unde 1 reprezintă elementele care îndeplinesc ambele criterii. A treia valoare multiplicatăarray conține rezultatele saltului lung (D2:D16). Și pentru că înmulțirea cu 0 dă zero, supraviețuiesc doar elementele care au 1 (TRUE) în pozițiile corespunzătoare:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
În cazul în care max_range conține orice valoare text, operația de multiplicare returnează eroarea #VALUE, din cauza căreia întreaga formulă nu va funcționa.
Funcția MAX preia de aici și returnează cel mai mare număr care îndeplinește condițiile specificate. Matricea rezultată, formată dintr-un singur element {4.63}, ajunge la funcția SUMPRODUCT, care produce numărul maxim într-o celulă.
Notă: Din cauza logicii sale specifice, formula funcționează cu următoarele atenționări:
- Intervalul în care căutați cea mai mare valoare trebuie să conțină numai numere. Dacă există valori text, se trimite o eroare #VALUE!
- Formula nu poate evalua condiția "nu este egal cu zero" într-un set de date negative. Pentru a găsi valoarea maximă ignorând zerourile, utilizați fie o formulă MAX IF, fie funcția MAXIFS.
Formula Excel MAX IF cu logica OR
Pentru a găsi valoarea maximă atunci când orice dintre condițiile specificate este îndeplinită, utilizați formula deja cunoscută a matricei MAX IF cu logica booleană, dar adăugați condițiile în loc să le multiplicați.
{=MAX(IF((( intervalul_criteriu1 = criterii1 ) + ( criterii_gama2 = criterii2 ), max_range ))}Alternativ, puteți utiliza următoarea formulă fără matrice:
=SUMPRODUS(MAX((((( intervalul_criteriu1 = criterii1 ) + ( criterii_gama2 = criterii2 )) * max_range ))Ca exemplu, să calculăm cel mai bun rezultat în rundele 2 și 3. Vă rugăm să acordați atenție faptului că în limbajul Excel, sarcina este formulată diferit: returnează valoarea maximă dacă runda este fie 2, fie 3.
Cu rundele enumerate în B2:B10, rezultatele în C2:C10 și criteriile în F1 și H1, formula este următoarea:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Introduceți formula apăsând combinația de taste Ctrl + Shift + Enter și veți obține acest rezultat:
Valoarea maximă în aceleași condiții poate fi găsită și cu ajutorul acestei formule care nu este o matrice:
=SUMPRODUCT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10)))
Cu toate acestea, trebuie să înlocuim toate valorile "x" din coloana C cu zerouri în acest caz, deoarece SUMPRODUCT MAX funcționează numai cu date numerice:
Cum funcționează aceste formule
Formula array funcționează exact la fel ca MAX IF cu logica AND, cu excepția faptului că uniți criteriile folosind operația de adunare în loc de cea de înmulțire. În formulele array, adunarea funcționează ca operatorul OR:
Adăugarea a două tablouri de TRUE și FALSE (care rezultă din verificarea valorilor din B2:B10 în raport cu criteriile din F1 și H1) produce un tablou de 1 și 0, unde 1 reprezintă elementele pentru care oricare dintre condiții este TRUE, iar 0 reprezintă elementele pentru care ambele condiții sunt FALSE. Ca urmare, funcția IF "păstrează" toate elementele din C2:C10 ( value_if_true ) pentru care orice condiție este TRUE (1); restul elementelor sunt înlocuite cu FALSE, deoarece value_if_false nu este specificat.
Formula fără matrice funcționează în mod similar. Diferența constă în faptul că, în locul testului logic al lui IF, se înmulțesc elementele din matricea 1 și 0 cu elementele din matricea rezultatelor săriturii în lungime (C2:C10) în pozițiile corespunzătoare. Astfel, se anulează elementele care nu îndeplinesc nicio condiție (au 0 în prima matrice) și se păstrează elementele care îndeplinesc una dintre condiții (au 1 în prima matrice).array).
MAXIFS - modalitate ușoară de a găsi cea mai mare valoare cu condiții
Utilizatorii de Excel 2019, 2021 și Excel 365 au scăpat de necazul de a îmblânzi array-uri pentru a-și construi propria formulă MAX IF. Aceste versiuni de Excel oferă mult așteptata funcție MAXIFS care face ca găsirea celei mai mari valori cu condiții să fie o joacă de copii.
În primul argument al MAXIFS, introduceți intervalul în care trebuie găsită valoarea maximă (D2:D16 în cazul nostru), iar în argumentele următoare puteți introduce până la 126 de perechi interval/criterii. De exemplu:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
După cum se arată în captura de ecran de mai jos, această formulă simplă nu are nicio problemă cu procesarea intervalului care conține atât valori numerice, cât și text:
Pentru informații detaliate despre această funcție, consultați funcția Excel MAXIFS cu exemple de formule.
Iată cum puteți găsi valoarea maximă cu ajutorul condițiilor în Excel. Vă mulțumesc pentru lectură și sper să ne revedem pe blog săptămâna viitoare!
Caietul de practică pentru descărcare
Exemple de formule Excel MAX IF (fișier .xlsx)