Spis treści
Artykuł pokazuje kilka różnych sposobów na uzyskanie wartości maksymalnej w Excelu na podstawie jednego lub kilku określonych przez użytkownika warunków.
W naszym poprzednim tutorialu przyjrzeliśmy się powszechnym zastosowaniom funkcji MAX, która została zaprojektowana w celu zwrócenia największej liczby w zbiorze danych. W niektórych sytuacjach jednak, możesz potrzebować drążyć dane dalej, aby znaleźć maksymalną wartość w oparciu o określone kryteria. Można to zrobić za pomocą kilku różnych formuł, a ten artykuł wyjaśnia wszystkie możliwe sposoby.
Formuła Excel MAX IF
Do niedawna Microsoft Excel nie miał wbudowanej funkcji MAX IF, aby uzyskać maksymalną wartość na podstawie warunków. Wraz z wprowadzeniem MAXIFS w Excelu 2019, możemy zrobić warunkowy max łatwy sposób.
W Excelu 2016 i wcześniejszych wersjach nadal trzeba tworzyć własne formuła macierzowa poprzez połączenie funkcji MAX z instrukcją IF:
{=MAX(IF( kryteria_zakresu = kryteria , maksymalny zakres ))}Aby zobaczyć, jak ta ogólna formuła MAX IF działa na rzeczywistych danych, rozważ następujący przykład. Załóżmy, że masz tabelę z wynikami długiego skoku kilku studentów. Tabela zawiera dane dla trzech rund, a ty szukasz najlepszego wyniku konkretnego zawodnika, powiedzmy Jakuba. Z nazwiskami studentów w A2:A10 i odległościami w C2:C10, formuła przyjmuje taki kształt:
=MAX(IF(A2:A10="Jacob", C2:C10))
Należy pamiętać, że formuła tablicowa musi być zawsze wprowadzona przez jednoczesne naciśnięcie klawiszy Ctrl + Shift + Enter. W rezultacie jest ona automatycznie otoczona nawiasami klamrowymi, jak pokazano na poniższym zrzucie ekranu (ręczne wpisanie nawiasów nie zadziała!).
I prawdziwych arkuszy, to jest bardziej wygodne, aby wprowadzić kryterium w jakiejś komórce, dzięki czemu można łatwo zmienić warunek bez zmiany formuły. Tak więc, wpisujemy żądaną nazwę w F1 i otrzymujemy następujący wynik:
=MAX(IF(A2:A10=F1, C2:C10))
Jak działa ta formuła
W teście logicznym funkcji JEŻELI porównujemy listę nazw (A2:A10) z nazwą docelową (F1). Wynikiem tej operacji jest tablica TRUE i FALSE, gdzie wartości TRUE reprezentują nazwy pasujące do nazwy docelowej (Jakub):
{FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE}
Dla wartość_jeśli_true podajemy wyniki długiego skoku (C2:C10), więc jeśli test logiczny zakończy się TRUE, zwrócona zostanie odpowiednia liczba z kolumny C. wartość_jeśli_false argument jest pominięty, co oznacza, że będzie miał tylko wartość FALSE, gdy warunek nie jest spełniony:
{FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE}
Ta tablica jest podawana do funkcji MAX, która zwraca maksymalną liczbę ignorując wartości FALSE.
Wskazówka Aby zobaczyć omówione powyżej tablice wewnętrzne, należy zaznaczyć w arkuszu odpowiednią część formuły i nacisnąć klawisz F9. Aby wyjść z trybu oceny formuły, należy nacisnąć klawisz Esc.
Formuła MAX IF z wieloma kryteriami
W sytuacji, gdy trzeba znaleźć wartość max na podstawie więcej niż jednego warunku, można albo:
Użyj zagnieżdżonych instrukcji IF, aby uwzględnić dodatkowe kryteria:
{=MAX(IF( kryteria_zakresu1 = kryteria1 , IF( kryteria_zakresu2 = kryteria2 , maksymalny zakres )))}Lub obsługuj wiele kryteriów za pomocą operacji mnożenia:
{=MAX(IF(( kryteria_zakresu1 = kryteria1 ) * ( kryteria_zakresu2 = kryteria2 ), maksymalny zakres ))}Załóżmy, że masz wyniki chłopców i dziewcząt w jednej tabeli i chcesz znaleźć najdłuższy skok wśród dziewcząt w rundzie 3. Aby to zrobić, wprowadzamy pierwsze kryterium (kobieta) w G1, drugie kryterium (3) w G2 i używamy następujących formuł do opracowania wartości maksymalnej:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Ponieważ obie są formułami tablicowymi, pamiętaj, aby nacisnąć Ctrl + Shift + Enter, aby wypełnić je poprawnie.
Jak widać na poniższym zrzucie ekranu, formuły dają ten sam wynik, więc to, której z nich użyć, jest kwestią twoich osobistych preferencji. Dla mnie formuła z logiką boolowską jest łatwiejsza do odczytania i zbudowania - pozwala na dodanie dowolnej liczby warunków bez zagnieżdżania dodatkowych funkcji IF.
Jak działają te formuły
Pierwsza formuła wykorzystuje dwie zagnieżdżone funkcje IF do oceny dwóch kryteriów. W teście logicznym pierwszej instrukcji IF porównujemy wartości w kolumnie Płeć (B2:B16) z kryterium w G1 ("Kobieta"). Wynikiem jest tablica wartości TRUE i FALSE, gdzie TRUE reprezentuje dane pasujące do kryterium:
{FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE}.
W podobny sposób druga funkcja IF sprawdza wartości w kolumnie Round (C2:C16) względem kryterium w G2.
Dla wartość_jeśli_true argument w drugiej instrukcji IF, dostarczamy wyniki długiego skoku (D2:D16) i w ten sposób otrzymujemy pozycje, które mają TRUE w dwóch pierwszych tablicach na odpowiednich pozycjach (czyli pozycje, w których płeć to "female", a runda to 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; 4,63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4,52}.
Ta ostatnia tablica trafia do funkcji MAX, a ona zwraca największą liczbę.
Druga formuła ocenia te same warunki w ramach jednego testu logicznego, a operacja mnożenia działa jak operator AND:
Gdy wartości TRUE i FALSE są używane w jakiejkolwiek operacji arytmetycznej, są zamieniane odpowiednio na 1 i 0. A ponieważ mnożenie przez 0 zawsze daje zero, wynikowa tablica ma 1 tylko wtedy, gdy wszystkie warunki są TRUE. Tablica ta jest oceniana w teście logicznym funkcji IF, która zwraca odległości odpowiadające elementom 1 (TRUE).
MAX IF bez tablicy
Wielu użytkowników Excela, w tym ja, jest uprzedzonych do formuł tablicowych i stara się ich pozbyć wszędzie, gdzie to tylko możliwe. Na szczęście Microsoft Excel posiada kilka funkcji, które natywnie obsługują tablice i jedną z takich funkcji, a mianowicie SUMPRODUCT, możemy wykorzystać jako swego rodzaju "wrapper" wokół MAX.
Ogólna formuła MAX IF bez tablicy jest następująca:
=SUMA(MAX(( kryteria_zakresu1 = kryteria1 ) * ( kryteria_zakresu2 = kryteria2 ) * maksymalny zakres ))Oczywiście w razie potrzeby można dodać więcej par zakresów/kryteriów.
Aby zobaczyć formułę w działaniu, użyjemy danych z poprzedniego przykładu. Celem jest uzyskanie maksymalnego skoku zawodniczki w rundzie 3:
=SUMA(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Formuła ta konkuruje z normalnym naciśnięciem klawisza Enter i zwraca taki sam wynik jak formuła Array MAX IF:
Rzucając okiem na powyższy zrzut ekranu, można zauważyć, że nieważne skoki oznaczone "x" w poprzednich przykładach mają teraz wartości 0 w wierszach 3, 11 i 15, a następna sekcja wyjaśnia dlaczego.
Jak działa ta formuła
Podobnie jak w przypadku formuły MAX IF, oceniamy dwa kryteria porównując każdą wartość w kolumnach Gender (B2:B16) i Round (C2:C16) z kryteriami w komórkach G1 i G2. W rezultacie otrzymujemy dwie tablice wartości TRUE i FALSE. Mnożenie elementów tablic w tych samych pozycjach zamienia TRUE i FALSE odpowiednio na 1 i 0, gdzie 1 reprezentuje pozycje spełniające oba kryteria.Trzecie mnożenieTablica zawiera wyniki długiego skoku (D2:D16). A ponieważ mnożenie przez 0 daje zero, przetrwały tylko te pozycje, które mają 1 (TRUE) na odpowiednich pozycjach:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
W przypadku maksymalny zakres zawiera dowolną wartość tekstową, operacja mnożenia zwraca błąd #VALUE, z powodu którego cała formuła nie będzie działać.
Funkcja MAX przejmuje ją stąd i zwraca największą liczbę, która spełnia określone warunki. Wynikowa tablica składająca się z pojedynczego elementu {4,63} trafia do funkcji SUMPRODUCT, a ta wyprowadza w komórce liczbę maksymalną.
Uwaga. Ze względu na specyficzną logikę, formuła działa z następującymi zastrzeżeniami:
- Zakres, w którym szukasz najwyższej wartości, musi zawierać tylko liczby. Jeśli istnieją jakiekolwiek wartości tekstowe, zwracany jest błąd #VALUE!
- Formuła nie może ocenić warunku "nie równa się zero" w ujemnym zestawie danych. Aby znaleźć maksymalną wartość ignorując zera, użyj formuły MAX IF lub funkcji MAXIFS.
Formuła Excel MAX IF z logiką OR
Aby znaleźć wartość maksymalną, gdy każdy z podanych warunków jest spełniony, użyj znanej już formuły tablicowej MAX IF z logiką Booleana, ale dodaj warunki zamiast je mnożyć.
{=MAX(IF(( kryteria_zakresu1 = kryteria1 ) + ( kryteria_zakresu2 = kryteria2 ), maksymalny zakres ))}Alternatywnie możesz użyć następującej formuły bez tablic:
=SUMA(MAX(( kryteria_zakresu1 = kryteria1 ) + ( kryteria_zakresu2 = kryteria2 )) * maksymalny zakres ))Jako przykład opracujmy najlepszy wynik w rundach 2 i 3. Zwróć uwagę, że w języku Excela zadanie jest sformułowane inaczej: zwróć wartość max, jeśli runda to 2 lub 3.
Mając rundy wymienione w B2:B10, wyniki w C2:C10 i kryteria w F1 i H1, formuła przebiega następująco:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Wprowadź formułę, naciskając kombinację klawiszy Ctrl + Shift + Enter, a otrzymasz ten wynik:
Wartość max z tymi samymi warunkami można również znaleźć za pomocą tego wzoru bez tablic:
=SUMPRODUKT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
Musimy jednak w tym przypadku zastąpić wszystkie wartości "x" w kolumnie C zerami, ponieważ SUMPRODUCT MAX działa tylko z danymi liczbowymi:
Jak działają te formuły
Formuła tablicowa działa dokładnie tak samo jak MAX IF z logiką AND, z tym że do kryteriów dołączasz operację dodawania zamiast mnożenia. W formułach tablicowych dodawanie działa jak operator OR:
Sumując dwie tablice TRUE i FALSE (które wynikają ze sprawdzenia wartości w B2:B10 pod kątem kryteriów w F1 i H1) otrzymujemy tablicę 1 i 0, gdzie 1 reprezentuje pozycje, dla których któryś z warunków jest TRUE, a 0 reprezentuje pozycje, dla których oba warunki są FALSE. W rezultacie funkcja JEŻELI "zachowuje" wszystkie pozycje w C2:C10 ( wartość_jeśli_true ), dla których każdy warunek jest TRUE (1); pozostałe pozycje są zastępowane FALSE, ponieważ. wartość_jeśli_false argument nie jest określony.
Formuła bez tablicy działa w podobny sposób. Różnica polega na tym, że zamiast testu logicznego IF, mnożymy elementy tablicy 1's i 0's przez elementy tablicy wyników długich skoków (C2:C10) w odpowiednich pozycjach. W ten sposób unieważniamy elementy, które nie spełniają żadnego warunku (mają 0 w pierwszej tablicy) i zachowujemy elementy, które spełniają jeden z warunków (mają 1 w pierwszejarray).
MAXIFS - łatwy sposób na znalezienie najwyższej wartości z warunkami
Użytkownicy Excela 2019, 2021 i Excela 365 są wolni od kłopotów z oswajaniem tablic w celu zbudowania własnej formuły MAX IF. Te wersje Excela udostępniają długo oczekiwaną funkcję MAXIFS, dzięki której znalezienie największej wartości z warunkami jest dziecinnie proste.
W pierwszym argumencie MAXIFS podajemy zakres, w którym ma być znaleziona wartość maksymalna (w naszym przypadku D2:D16), a w kolejnych argumentach możemy podać do 126 par zakres/kryterium. Na przykład:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Jak widać na poniższym zrzucie ekranu, ta prosta formuła nie ma problemu z przetwarzaniem zakresu, który zawiera zarówno wartości liczbowe, jak i tekstowe:
Szczegółowe informacje na temat tej funkcji można znaleźć w artykule Excel MAXIFS funkcja z przykładami formuł.
Tak właśnie można znaleźć wartość max z warunkami w Excelu. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!
Zeszyt ćwiczeń do pobrania
Przykłady formuły Excel MAX IF (plik .xlsx)