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

Почему поиск максимального значения важен в Excel

Работа с большими массивами данных в Microsoft Excel часто требует анализа числовых значений. Один из самых востребованных аналитических инструментов — поиск максимального числа в диапазоне. Это может понадобиться для определения рекордных продаж, пиковых значений температуры, максимальной нагрузки на систему или просто для проверки корректности введённых данных.

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

В этой статье мы разберём все актуальные способы: от стандартной функции МАКС до работы с условиями и динамическими массивами. Особое внимание уделим типичным ошибкам, которые допускают пользователи при поиске максимальных значений в нестандартных диапазонах.

Способ 1: Базовая функция МАКС для простых диапазонов

Самый очевидный и универсальный метод — использование встроенной функции МАКС (или MAX в английской версии). Она работает во всех версиях Excel, начиная с 2003 года, и подходит для большинства задач.

Синтаксис функции предельно прост:

=МАКС(число1; [число2]; ...)

или

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

Где число1 — обязательный аргумент (может быть числом, ссылкой на ячейку или диапазоном), а [число2] — необязательные дополнительные аргументы. Функция игнорирует пустые ячейки и текстовые значения, но учитывает логические ИСТИНА (1) и ЛОЖЬ (0).

  • 📌 Пример для статичных чисел: =МАКС(15; 32; 7; 45) вернёт 45
  • 📊 Пример для диапазона: =МАКС(A1:A100) найдёт максимум в столбце A
  • 🔄 Пример для нескольких диапазонов: =МАКС(A1:A10; C1:C10) сравнит два столбца

Способ 2: Поиск максимума с условиями (МАКСЕСЛИ и альтернативы)

Когда нужно найти максимальное значение, соответствующее определённому критерию, стандартная функция МАКС бесполезна. Здесь на помощь приходит МАКСЕСЛИ (или MAXIFS в английской версии), доступная начиная с Excel 2019 и Office 365.

Синтаксис функции:

=МАКСЕСЛИ(диапазон_максимума; диапазон_условия; условие; [диапазон_условия2; условие2]; ...)

Например, чтобы найти максимальную зарплату среди сотрудников отдела "Маркетинг" (столбец B), используйте:

=МАКСЕСЛИ(C2:C100; B2:B100; "Маркетинг")
Что делать в Excel 2016 и старше?

Для версий Excel без МАКСЕСЛИ используйте формулу массива:

=МАКС(ЕСЛИ(B2:B100="Маркетинг"; C2:C100))

Введите её, нажав Ctrl+Shift+Enter (в новых версиях работает и без этого).

Функция поддерживает до 127 пар диапазон-условие, что позволяет задавать сложные фильтры. Например, найти максимум продаж в регионе "Сибирь" за "2023 год":

=МАКСЕСЛИ(D2:D1000; B2:B1000; "Сибирь"; C2:C1000; 2023)
⚠️ Внимание: Если ни одна ячейка не удовлетворяет условиям, функция вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, оберните её в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(МАКСЕСЛИ(...); "Нет данных")

Способ 3: Максимум в динамических массивах (Excel 365)

С появлением динамических массивов в Excel 365 поиск максимальных значений стал ещё гибче. Теперь можно работать с результатами других функций, возвращающих массивы, без необходимости использовать формулы массива (Ctrl+Shift+Enter).

Пример: найдём максимальное значение среди трёх наибольших чисел в диапазоне:

=МАКС(НАИБОЛЬШИЙ(A1:A100; {1;2;3}))

Или комбинация с ФИЛЬТР для условного поиска:

=МАКС(ФИЛЬТР(B2:B100; (A2:A100="Да")*(C2:C100>1000)))

Эта формула найдёт максимум в столбце B, где в столбце A стоит "Да", а в столбце C значение больше 1000.

Функция Пример использования Результат
МАКС(ФИЛЬТР(...)) =МАКС(ФИЛЬТР(B2:B10; A2:A10="Яблоки")) Максимум цен на яблоки
НАИБОЛЬШИЙ =НАИБОЛЬШИЙ(A1:A10; 1) Первое максимальное значение
СОРТИРОВКА+МАКС =МАКС(СОРТИРОВКА(A1:A10; -1)) Максимум после сортировки по убыванию
📊 Какую версию Excel вы используете?
Excel 2010 или старше
Excel 2016-2019
Excel 365 (или 2021)
Не знаю

Способ 4: Макросы VBA для автоматизации поиска

Если вам нужно регулярно искать максимальные значения в больших или нестандартных диапазонах, стоит рассмотреть автоматизацию через VBA. Макросы позволяют:

  • 🔍 Искать максимумы в несмежных диапазонах
  • 📁 Обрабатывать данные на нескольких листах
  • 📊 Сохранять результаты в отдельном отчёте

Пример простого макроса для поиска максимального значения в выделенном диапазоне:

Sub FindMaxValue()

Dim rng As Range

Dim maxVal As Double

On Error Resume Next

Set rng = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)

On Error GoTo 0

If Not rng Is Nothing Then

maxVal = Application.WorksheetFunction.Max(rng)

MsgBox "Максимальное значение: " & maxVal, vbInformation

Else

MsgBox "В выделенном диапазоне нет числовых данных!", vbExclamation

End If

End Sub

Чтобы использовать этот макрос:

  1. Нажмите Alt+F11 для открытия редактора VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон на листе и запустите макрос через Alt+F8.

Выделить диапазон с данными|Включить макросы в настройках безопасности|Сохранить файл как .xlsm|Проверить отсутствие ошибок в коде-->

⚠️ Внимание: Макросы могут быть заблокированы настройками безопасности Excel. Чтобы разблокировать их, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы" (не рекомендуется для файлов из ненадёжных источников).

Способ 5: Поиск максимума с игнорированием ошибок и пустых ячеек

В реальных данных часто встречаются пустые ячейки, текстовые значения или ошибки (например, #Н/Д). Стандартная функция МАКС может давать некорректные результаты в таких случаях. Рассмотрим надёжные альтернативы.

Опция 1: Использовать АГРЕГАТ (или AGGREGATE):

=АГРЕГАТ(4; 6; A1:A100)

Где 4 — код функции МАКС, а 6 — параметр игнорирования ошибок и скрытых строк.

Опция 2: Комбинация ЕСЛИ + МАКС для фильтрации:

=МАКС(ЕСЛИ(ЕОШИБКА(A1:A100); ""; A1:A100))

Эта формула массива пропускает ячейки с ошибками.

Опция 3: Для игнорирования пустых ячеек и текста:

=МАКС(ЕСЛИ(ЕЧИСЛО(A1:A100); A1:A100))

Функция ЕЧИСЛО проверяет, является ли значение числом.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с проблемами при поиске максимальных значений. Рассмотрим наиболее распространённые ошибки и их решения.

Ошибка 1: Функция возвращает 0 вместо максимума

Причина: В диапазоне нет числовых значений, но есть логические ЛОЖЬ (которое Excel воспринимает как 0). Решение — использовать ЕЧИСЛО или АГРЕГАТ.

Ошибка 2: #ЗНАЧ! при использовании МАКСЕСЛИ

Причина: Размеры диапазонов максимума и условия не совпадают. Решение — проверьте, что оба диапазона имеют одинаковое количество строк и столбцов.

Ошибка 3: Макрос не находит максимум в фильтрованных данных

Причина: По умолчанию VBA работает с всеми данными, включая скрытые. Решение — используйте SpecialCells(xlCellTypeVisible):

Set rng = Selection.SpecialCells(xlCellTypeVisible)

Ошибка 4: Формула массива требует Ctrl+Shift+Enter в новых версиях Excel

Причина: В Excel 365 большинство формул массива работают без специального ввода, но в Excel 2019 и старше это обязательно. Решение — всегда проверяйте версию программы.

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

Можно ли найти максимум в несмежных диапазонах?

Да, для этого перечислите диапазоны через точку с запятой в функции МАКС:

=МАКС(A1:A10; C1:C10; E1:E10)

Или используйте АГРЕГАТ с параметром 5 для игнорирования скрытых строк.

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

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

=НАИБОЛЬШИЙ(A1:A100; 2)

В старых версиях Excel применяйте формулу массива:

=МАКС(ЕСЛИ(A1:A100<МАКС(A1:A100); A1:A100))
Почему МАКСЕСЛИ возвращает #ИМЯ?

Эта ошибка возникает в версиях Excel до 2019 года, где функции МАКСЕСЛИ нет. Используйте альтернативу:

=МАКС(ЕСЛИ(диапазон_условия=критерий; диапазон_значений))

Не забудьте ввести её как формулу массива (Ctrl+Shift+Enter).

Как найти максимум по цвету ячейки?

Стандартными функциями это невозможно. Нужно использовать VBA:

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

Dim cell As Range, maxVal As Double

maxVal = -1E+307

For Each cell In rng

If cell.Interior.Color = color.Interior.Color And IsNumeric(cell.Value) Then

If cell.Value > maxVal Then maxVal = cell.Value

End If

Next cell

MaxByColor = maxVal

End Function

Вызывайте её как =MaxByColor(A1:A10; B1), где B1 — ячейка с образцом цвета.

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

Да, но лучше делать это через поле "Значения" сводной таблицы. Добавьте поле в область значений, затем:

  1. Щёлкните по стрелке рядом с "Сумма по..." (или "Количество...").
  2. Выберите "Параметры полей значений".
  3. Вкладка "Дополнительные вычисления" → "Максимум".

Или используйте функцию ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ.