Как найти максимальное значение в Excel: от базовых функций до скрытых приёмов

Почему поиск максимума в Excel — это не только про функцию MAX

На первый взгляд, задача найти самое большое число в таблице кажется тривиальной: вбил функцию MAX, указал диапазон — и готово. Но на практике пользователи сталкиваются с десятками нюансов: игнорирование пустых ячеек, поиск максимума по условию, работа с динамическими массивами или даже извлечение всей строки, где находится максимальное значение. Опытные аналитики знают, что одной функцией MAX здесь не обойтись.

В этой статье мы разберём 7 способов поиска максимальных значений — от элементарных до продвинутых, которые выходят за рамки стандартных руководств. Вы узнаете, как:

  • 🔍 Находить максимум с учётом фильтров и скрытых строк
  • 📊 Извлекать не только значение, но и его положение в таблице
  • 🤖 Автоматизировать поиск с помощью Power Query и VBA
  • ⚡ Работать с максимальными значениями в сводных таблицах

Все примеры протестированы в Excel 2019, 2021, 365 и адаптированы для Google Sheets (где это возможно). Если вы работаете со старыми версиями (2010–2016), обращайте внимание на пометки о совместимости.

📊 Как часто вы используете поиск максимальных значений в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда не приходилось

Способ 1: Классическая функция MAX — когда она работает, а когда подводит

Функция =MAX(диапазон) — это первый инструмент, к которому прибегают пользователи. Она действительно универсальна для большинства задач, но имеет критические ограничения:

  • 🚫 Игнорирует текстовые значения (например, если в диапазоне есть слово "Итого")
  • 🚫 Пропускает ячейки с ошибками (#ДЕЛ/0!, #Н/Д)
  • 🚫 Не учитывает скрытые строки или отфильтрованные данные

Пример базового использования:

=MAX(B2:B100)  // Найдёт максимальное число в столбце B с 2 по 100 строку

А теперь ключевой нюанс, о котором не пишут в справочниках: если в диапазоне есть хотя бы одна ячейка с ошибкой, функция MAX вернёт ошибку, даже если остальные данные корректны. Чтобы обойти это, комбинируйте MAX с функцией ЕСЛИОШИБКА:

=MAX(ЕСЛИОШИБКА(B2:B100;""))

Эта формула заменит все ошибки пустыми строками, и MAX проигнорирует их.

Способ 2: MAXA — почему её почти никто не использует (а зря)

Функция MAXA (MAX с буквой "A" на конце) — это скрытая жемчужина Excel, которая умеет то, чего не может классический MAX. Она:

  • 📝 Учитывает текстовые значения (присваивая им значение 0)
  • 🔄 Работает с логическими значениями (ИСТИНА=1, ЛОЖЬ=0)
  • ⚠️ Но по-прежнему игнорирует ячейки с ошибками

Пример, где MAXA незаменима:

=MAXA(A2:A10)  // Если в диапазоне есть текст "Высокий", "Средний", "Низкий" — они будут проигнорированы как 0

Однако будьте осторожны:

⚠️ Внимание: Если в ваших данных текстовые метки кодируют числовые значения (например, "Высокий" = 3, "Средний" = 2), MAXA их не распознает. В этом случае лучше использовать ВПР или XLOOKUP для предварительного преобразования текста в числа.
Функция Учитывает текст Учитывает ошибки Учитывает скрытые строки Требует Ctrl+Shift+Enter
MAX ❌ Нет ❌ Нет (ошибка) ✅ Да ❌ Нет
MAXA ✅ Да (как 0) ❌ Нет (ошибка) ✅ Да ❌ Нет
АГРЕГАТ(4;...) ❌ Нет ✅ Да (игнорирует) ✅ Да/❌ Нет (настраивается) ❌ Нет

Способ 3: АГРЕГАТ — когда нужно игнорировать ошибки и скрытые строки

Функция АГРЕГАТ — это швейцарский нож для работы с максимальными значениями в сложных сценариях. Она позволяет:

  • 🔍 Игнорировать скрытые строки (параметр 5)
  • 🚫 Пропускать ячейки с ошибками (параметр 6)
  • 📋 Комбинировать оба подхода (параметр 7)

Синтаксис:

=АГРЕГАТ(4; параметр_игнорирования; диапазон)

Где 4 — это код функции MAX (да, АГРЕГАТ может эмулировать и другие функции, например, СРЗНАЧ или СЧЁТ).

Примеры:

=АГРЕГАТ(4; 5; B2:B100)  // Максимум, игнорируя скрытые строки

=АГРЕГАТ(4; 6; B2:B100) // Максимум, игнорируя ошибки

=АГРЕГАТ(4; 7; B2:B100) // Максимум, игнорируя и скрытые строки, и ошибки

Важно для Power Query: Если вы импортируете данные через Power Query, функция АГРЕГАТ не будет работать с динамически обновляемыми диапазонами. В этом случае используйте Table.Max в редакторе Power Query.

Убедиться, что в диапазоне нет текстовых меток, которые должны учитываться как числа|

Проверить, нужны ли скрытые строки в расчёте (параметр 5 их исключит)|

Оценить, критичны ли ошибки в данных (параметр 6 их проигнорирует)|

Тестировать формулу на небольшом диапазоне перед применением ко всей таблице-->

Способ 4: MAXIFS — поиск максимума по условию (Excel 2019+)

Функция MAXIFS (введена в Excel 2019) решает задачу поиска максимального значения с учётом одного или нескольких условий. Это аналог СУММЕСЛИМН, но для максимума.

Синтаксис:

=MAXIFS(диапазон_поиска; диапазон_условия1; условие1; [диапазон_условия2; условие2]; ...)

Пример: Найдём максимальную продажу в регионе "Центр" за 2023 год:

=MAXIFS(D2:D100; B2:B100; "Центр"; C2:C100; "2023")

Ключевые особенности:

  • 🔄 Можно задавать до 127 пар условий (в теории; на практике хватит и 3–5)
  • 📌 Диапазоны условий должны быть того же размера, что и диапазон поиска
  • ⚠️ В Excel 2016 и старше этой функции нет — используйте формулу массива с МАКС и ЕСЛИ

Для старых версий Excel альтернатива:

=МАКС(ЕСЛИ(B2:B100="Центр"; ЕСЛИ(C2:C100="2023"; D2:D100)))

Вводится как формула массива (Ctrl+Shift+Enter в Excel 2016 и ниже).

Как работает MAXIFS с пустыми ячейками?

Если в диапазоне поиска есть пустые ячейки, MAXIFS их игнорирует (как и классический MAX). Однако если пустые ячейки находятся в диапазонах условий, они трактуются как 0. Это может привести к неожиданным результатам, если вы, например, ищете максимум по датам, а некоторые даты не заполнены. В этом случае используйте конструкцию ЕСЛИ(диапазон_даты<>""; диапазон_даты) внутри формулы массива.

Способ 5: Поиск позиции максимального значения (INDEX + MATCH)

Часто недостаточно знать какое значение максимальное — нужно понять, где оно находится. Например, чтобы извлечь всю строку с рекордным показателем. Для этого комбинируют функции ИНДЕКС и ПОИСКПОЗ (или MATCH в английской версии).

Пример: Найдём номер строки с максимальным значением в столбце B:

=ПОИСКПОЗ(MAX(B2:B100); B2:B100; 0)

А теперь извлечём всё содержимое этой строки (например, из диапазона A2:D100):

=ИНДЕКС(A2:D100; ПОИСКПОЗ(MAX(B2:B100); B2:B100; 0); 0)

Здесь 0 в конце означает "вернуть всю строку".

Если максимальных значений несколько, эта формула вернёт позицию первого из них. Чтобы получить все позиции, используйте:

=ТЕКСТСОЕДИНИТЬ("; "; 1; ЕСЛИ(B2:B100=MAX(B2:B100); СТРОКА(B2:B100)-1; ""))

Вернёт строку вида "5; 12; 45", если максимумы находятся в строках 5, 12 и 45.

⚠️ Внимание: Если в ваших данных есть дубликаты максимального значения, а вам нужна последняя позиция (а не первая), используйте ПОИСКПОЗ(MAX(...); ...; 1) вместо 0. Параметр 1 заставит функцию искать с конца диапазона.

Способ 6: Динамические массивы и LAMBDA (Excel 365)

В Excel 365 и Excel 2021 появились динамические массивы и функция LAMBDA, которые открывают новые возможности для работы с максимальными значениями. Например, можно создать кастомную функцию, которая будет возвращать не только максимум, но и связанные с ним данные.

Пример: Создадим функцию, которая возвращает максимум и его позицию:

=LAMBDA(диапазон;

ЛЕВСИМВ(ТЕКСТСОЕДИНИТЬ("|";

1;

МАКС(диапазон);

ТЕКСТСОЕДИНИТЬ(";";

1;

ЕСЛИ(диапазон=МАКС(диапазон);

СТРОКА(диапазон)-МИН(СТРОКА(диапазон))+1;

""

)

)

);

2

)(B2:B100)

Эта формула вернёт строку вида 150|3;8;12, где 150 — максимум, а 3, 8, 12 — номера строк, где он встречается.

Для работы с динамическими массивами также полезны функции:

  • 🔹 СОРТПОУБЫВ — для сортировки данных по убыванию (максимум будет первым)
  • 🔹 УНИК — для поиска уникальных максимальных значений
  • 🔹 ФИЛЬТР — для отбора строк с максимальными значениями

Пример с ФИЛЬТР:

=ФИЛЬТР(A2:D100; B2:B100=МАКС(B2:B100))

Вернёт все строки, где значение в столбце B равно максимальному.

Способ 7: Power Query и VBA — автоматизация для больших данных

Если вы работаете с десятками тысяч строк, стандартные функции Excel могут тормозить. В этом случае стоит перенести поиск максимума в:

  • 📊 Power Query — для одноразовой обработки больших файлов
  • 🤖 VBA — для создания пользовательских функций или макросов

Пример на Power Query:

  1. Импортируйте данные в Power Query (Данные → Получить данные → Из таблицы/диапазона).
  2. Добавьте пользовательский столбец с формулой = Table.Max(#"Предыдущий шаг"[ВашСтолбец]).
  3. Отфильтруйте строки, где значение столбца равно максимуму.

Пример на VBA: Создайте функцию, которая возвращает максимум с учётом цвета ячейки:

Function MaxByColor(rng As Range, color As Long) As Double

Dim cell As Range

Dim maxVal As Double

maxVal = -1.79769313486231E+308 ' Минимальное значение Double

For Each cell In rng

If cell.Interior.Color = color And cell.Value > maxVal Then

maxVal = cell.Value

End If

Next cell

MaxByColor = maxVal

End Function

Используйте в Excel как =MaxByColor(B2:B100; RGB(255, 0, 0)) для поиска максимума среди ячеек красного цвета.

⚠️ Внимание: VBA-решения требуют включённой поддержки макросов и могут конфликтовать с политиками безопасности корпоративных сетей. Всегда тестируйте макросы на копии данных перед применением к оригинальным файлам.

FAQ: Ответы на частые вопросы о поиске максимума в Excel

Можно ли найти максимум по нескольким листам одновременно?

Да, используйте трёхмерные ссылки. Например, =MAX(Лист1:Лист3!B2:B100) найдёт максимум в диапазоне B2:B100 на всех листах от Лист1 до Лист3.

Если листы имеют разную структуру, лучше использовать ПОИСКПОЗ + ИНДЕКС с динамически формируемым диапазоном.

Как найти максимум в сводной таблице?

В сводных таблицах максимум автоматически рассчитывается при добавлении поля в область Значения с функцией Максимум.

Если нужно найти максимум по группе, используйте ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ:

=ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Максимум"; $A$3)
Почему MAX возвращает 0, хотя в данных есть положительные числа?

Это типичная ошибка, когда:

  • В диапазоне есть текстовые значения, а вы используете MAXA (она присваивает тексту 0).
  • Числа хранятся как текст (например, после импорта из CSV). Используйте =ЗНАЧЕН(B2) для преобразования.
  • Ячейки отформатированы как даты/время, но Excel воспринимает их как числа.

Проверьте формат ячеек (Ctrl+1) и при необходимости преобразуйте данные.

Как найти второе по величине значение?

Используйте функцию БОЛЬШОЙ:

=БОЛЬШОЙ(B2:B100; 2)

Для поиска уникального второго максимума (если первый повторяется) комбинируйте с УНИК:

=БОЛЬШОЙ(УНИК(B2:B100); 2)
Можно ли найти максимум в Google Sheets?

Да, все описанные функции работают в Google Sheets, за исключением:

  • АГРЕГАТ — заменяется на QUERY или комбинацию FILTER + MAX.
  • LAMBDA — доступна, но синтаксис может отличаться.
  • Динамические массивы — поддерживаются, но некоторые функции (например, СОРТПОУБЫВ) называются иначе (SORT).

Пример для Google Sheets:

=MAX(FILTER(B2:B100; C2:C100="Да"))