Съдържание
В статията са показани няколко различни начина за получаване на максималната стойност в Excel въз основа на едно или няколко зададени условия.
В предишния ни урок разгледахме обичайните употреби на функцията MAX, която е предназначена да връща най-голямото число в набор от данни. В някои ситуации обаче може да се наложи да се задълбочите в данните, за да намерите максималната стойност въз основа на определени критерии. Това може да стане с помощта на няколко различни формули, а в тази статия са обяснени всички възможни начини.
Excel MAX IF формула
Доскоро Microsoft Excel не разполагаше с вградена функция MAX IF за получаване на максимална стойност въз основа на условия. С въвеждането на MAXIFS в Excel 2019 можем да правим условна максимална стойност по лесен начин.
В Excel 2016 и по-ранните версии все още трябва да създавате свои собствени формула за масив чрез комбиниране на функцията MAX с оператор IF:
{=MAX(IF( criteria_range = критерии , max_range ))}За да видите как тази обща формула MAX IF работи с реални данни, разгледайте следния пример. Да предположим, че имате таблица с резултатите на няколко ученици от скока на дължина. Таблицата включва данните за три кръга и вие търсите най-добрия резултат на конкретен атлет, да речем Джейкъб. С имената на учениците в A2:A10 и разстоянията в C2:C10 формулата придобива следната форма:
=MAX(IF(A2:A10="Jacob", C2:C10))
Имайте предвид, че формулата за масив трябва винаги да се въвежда чрез едновременно натискане на клавишите Ctrl + Shift + Enter. В резултат на това тя автоматично се огражда с къдрави скоби, както е показано на снимката по-долу (ръчното въвеждане на скобите няма да работи!).
В реални работни листове е по-удобно да въведете критерия в някоя клетка, за да можете лесно да променяте условието, без да променяте формулата. Така че въвеждаме желаното име в F1 и получаваме следния резултат:
=MAX(IF(A2:A10=F1, C2:C10))
Как работи тази формула
В логическия тест на функцията IF сравняваме списъка с имена (A2:A10) с целевото име (F1). Резултатът от тази операция е масив от TRUE и FALSE, където стойностите TRUE представляват имена, които съответстват на целевото име (Jacob):
{ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ВЯРНО;ВЯРНО;ВЯРНО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО}
За value_ if_true предоставяме резултатите от дългия скок (C2:C10), така че ако логическият тест се оцени като TRUE, се връща съответното число от колона C. value_ if_false аргумент е пропуснат, което означава, че ще има само стойност FALSE, когато условието не е изпълнено:
{ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО;ФАЛШИВО}
Този масив се подава на функцията MAX, която връща максималния брой, като игнорира стойностите FALSE.
Съвет. За да видите вътрешните масиви, разгледани по-горе, изберете съответната част от формулата в работния лист и натиснете клавиша F9. За да излезете от режима за оценка на формулата, натиснете клавиша Esc.
MAX IF формула с множество критерии
В случаите, когато трябва да намерите максималната стойност въз основа на повече от едно условие, можете да:
Използвайте вложени оператори IF, за да включите допълнителни критерии:
{=MAX(IF( criteria_range1 = критерии1 , IF( criteria_range2 = критерии2 , max_range )))}Или обработете няколко критерия, като използвате операцията за умножение:
{=MAX(IF(( criteria_range1 = критерии1 ) * ( criteria_range2 = критерии2 ), max_range ))}Да речем, че имате резултатите на момчетата и момичетата в една таблица и искате да намерите най-дългия скок сред момичетата в кръг 3. За да го направите, въвеждаме първия критерий (жени) в G1, втория критерий (3) в G2 и използваме следните формули, за да изчислим максималната стойност:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Тъй като и двете формули са масиви, не забравяйте да натиснете Ctrl + Shift + Enter, за да ги изпълните правилно.
Както е показано на скрийншота по-долу, формулите дават един и същ резултат, така че коя от тях да използвате е въпрос на лично предпочитание. За мен формулата с булевата логика е по-лесна за четене и изграждане - тя позволява добавянето на толкова условия, колкото искате, без да се налага да вмъквате допълнителни функции IF.
Как работят тези формули
Първата формула използва две вложени функции IF за оценка на два критерия. В логическия тест на първата функция IF сравняваме стойностите в колоната Gender (B2:B16) с критерия в G1 ("Female"). Резултатът е масив от стойности TRUE и FALSE, където TRUE представлява данни, които отговарят на критерия:
{ФАЛШИВО; ФАЛШИВО; ФАЛШИВО; ВЯРНО; ВЯРНО; ВЯРНО; ВЯРНО; ФАЛШИВО; ФАЛШИВО; ФАЛШИВО; ФАЛШИВО; ВЯРНО; ВЯРНО; ВЯРНО; ВЯРНО}
По подобен начин втората функция IF проверява стойностите в колоната Round (C2:C16) спрямо критерия в G2.
За value_if_true аргумент във второто твърдение IF, предоставяме резултатите от дългия скок (D2:D16) и по този начин получаваме елементите, които имат TRUE в първите два масива в съответните позиции (т.е. елементите, при които полът е "жена" и кръгът е 3):
Този последен масив отива във функцията MAX и тя връща най-голямото число.
Втората формула оценява същите условия в рамките на един логически тест, а операцията умножение работи като оператора AND:
Когато стойностите TRUE (вярно) и FALSE (невярно) се използват в аритметична операция, те се преобразуват съответно в 1 и 0. И тъй като умножението по 0 винаги дава нула, полученият масив има 1 само когато всички условия са TRUE (вярно). Този масив се оценява в логическия тест на функцията IF, която връща разстоянията, съответстващи на елементите 1 (TRUE).
MAX IF без масив
Много от потребителите на Excel, включително и аз, са предубедени към формулите за масиви и се опитват да се отърват от тях, когато е възможно. За щастие Microsoft Excel разполага с няколко функции, които обработват масиви в естествен вид, и ние можем да използваме една от тези функции, а именно SUMPRODUCT, като своеобразна "обвивка" около MAX.
Общата формула MAX IF без масив е следната:
=СУМАПРОДУКТ(MAX(( criteria_range1 = критерии1 ) * ( criteria_range2 = критерии2 ) * max_range ))Естествено, при необходимост можете да добавите още двойки обхват/критерии.
За да видим формулата в действие, ще използваме данните от предишния пример. Целта е да получим максималния скок на състезателка в кръг 3:
=SUMPRODUCT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Тази формула се конкурира с обикновено натискане на клавиш Enter и връща същия резултат като формулата за масив MAX IF:
Ако разгледате внимателно горната снимка, можете да забележите, че невалидните скокове, отбелязани с "x" в предишните примери, сега имат стойности 0 в редове 3, 11 и 15, а в следващия раздел е обяснено защо.
Как работи тази формула
Както и при формулата MAX IF, оценяваме два критерия, като сравняваме всяка стойност в колоните Gender (B2:B16) и Round (C2:C16) с критериите в клетки G1 и G2. Резултатът са два масива от стойности TRUE и FALSE. Умножаването на елементите на масивите в същите позиции превръща TRUE и FALSE съответно в 1 и 0, където 1 представлява елементите, които отговарят и на двата критерия. Третото умножениеМасивът съдържа резултатите от дългия скок (D2:D16). И тъй като умножаването по 0 дава нула, оцеляват само елементите, които имат 1 (TRUE) в съответните позиции:
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
В случай че max_range съдържа каквато и да е текстова стойност, операцията умножение връща грешка #VALUE, поради което цялата формула няма да работи.
Функцията MAX го взема оттук и връща най-голямото число, което отговаря на зададените условия. Полученият масив, състоящ се от един елемент {4,63}, отива във функцията SUMPRODUCT и тя извежда максималното число в клетката.
Забележка: Поради специфичната си логика формулата работи със следните уговорки:
- Диапазонът, в който се търси най-високата стойност, трябва да съдържа само числа. Ако има текстови стойности, се връща грешка #VALUE!.
- Формулата не може да оцени условието "не е равно на нула" при отрицателен набор от данни. За да намерите максималната стойност, като игнорирате нулите, използвайте формулата MAX IF или функцията MAXIFS.
Excel MAX IF формула с OR логика
Намиране на максималната стойност, когато всеки от посочените условия е изпълнено, използвайте вече познатата формула за масиви MAX IF с логиката на Булевата логика, но добавете условията, вместо да ги умножавате.
{=MAX(IF(( criteria_range1 = критерии1 ) + ( criteria_range2 = критерии2 ), max_range ))}Като алтернатива можете да използвате следната формула, която не е масивна:
=СУМАПРОДУКТ(MAX((( criteria_range1 = критерии1 ) + ( criteria_range2 = критерии2 )) * max_range ))Като пример, нека изчислим най-добрия резултат в рундове 2 и 3. Обърнете внимание, че в езика Excel задачата е формулирана по различен начин: върнете максималната стойност, ако рундът е 2 или 3.
С кръговете, изброени в B2:B10, резултатите в C2:C10 и критериите в F1 и H1, формулата е следната:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Въведете формулата, като натиснете комбинацията от клавиши Ctrl + Shift + Enter, и ще получите този резултат:
Максималната стойност при същите условия може да бъде намерена и с помощта на тази формула, която не е масивна:
=SUMPRODUCT(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
В този случай обаче трябва да заменим всички стойности "x" в колона C с нули, тъй като SUMPRODUCT MAX работи само с числови данни:
Как работят тези формули
Формулата за масиви работи точно по същия начин като MAX IF с логиката AND, с изключение на това, че обединявате критериите, като използвате операцията събиране вместо умножение. Във формулите за масиви събирането работи като оператора OR:
Събирането на два масива от TRUE и FALSE (които са резултат от проверката на стойностите в B2:B10 спрямо критериите в F1 и H1) води до масив от 1 и 0, където 1 представлява елементите, за които някое от условията е TRUE, а 0 - елементите, за които и двете условия са FALSE. В резултат на това функцията IF "запазва" всички елементи в C2:C10 ( value_if_true ), за които някое от условията е TRUE (1); останалите елементи се заменят с FALSE, тъй като value_if_false не е посочен аргумент.
Формулата, която не е масив, работи по подобен начин. Разликата е, че вместо логическия тест на IF, умножавате елементите на масива с 1 и 0 по елементите на масива с резултати от дълъг скок (C2:C10) в съответните позиции. Това обезсилва елементите, които не отговарят на нито едно условие (имат 0 в първия масив), и запазва елементите, които отговарят на едно от условията (имат 1 в първия масив).масив).
MAXIFS - лесен начин за намиране на най-високата стойност с условия
Потребителите на Excel 2019, 2021 и Excel 365 са свободни от проблемите с опитомяването на масиви, за да създадат своя собствена формула MAX IF. Тези версии на Excel предоставят дългоочакваната функция MAXIFS, която прави намирането на най-голямата стойност с условия детска игра.
В първия аргумент на MAXIFS въвеждате диапазона, в който трябва да се намери максималната стойност (D2:D16 в нашия случай), а в следващите аргументи можете да въведете до 126 двойки диапазон/критерий. Например:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Както е показано на скрийншота по-долу, тази проста формула няма проблем с обработката на диапазон, който съдържа както цифрови, така и текстови стойности:
За подробна информация за тази функция вижте функцията MAXIFS на Excel с примери за формули.
Ето как можете да намерите максимална стойност с условия в Excel. Благодаря ви за четенето и се надявам да се видим в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Примери за формулата MAX IF на Excel (.xlsx файл)