Поиск максимальных и минимальных значений в Microsoft Excel — одна из самых востребованных задач при анализе данных. Без этих базовых операций невозможно построить отчёты, выявить тренды или принять обоснованные решения. Однако даже опытные пользователи часто ограничиваются стандартными функциями МАКС и МИН, упуская более гибкие методы: условный поиск, динамические массивы или инструменты Power Query.
В этой статье мы разберём 7 практических способов — от элементарных до продвинутых, — включая малоизвестные приёмы для работы с фильтрами, сводными таблицами и даже VBA. Вы узнаете, как найти экстремумы не только в столбце, но и с учётом критериев, игнорируя ошибки или скрытые строки. А в конце — бонус: как автоматизировать процесс с помощью Office Scripts для Excel Online.
Неважно, анализируете ли вы финансовые отчёты, научные данные или списки товаров — умение быстро находить максимальные и минимальные значения сэкономит часы ручной работы. Начнём с самого простого и постепенно перейдём к техникам, которые используют профессионалы.
1. Стандартные функции МАКС и МИН: базовый уровень
Самый очевидный способ — использовать встроенные функции =МАКС() и =МИН(). Они работают во всех версиях Excel (начиная с Excel 2003) и поддерживают до 255 аргументов — это могут быть как отдельные числа, так и ссылки на диапазоны ячеек.
Пример формулы для поиска максимального значения в столбце A (с 1 по 100 строку):
=МАКС(A1:A100)
Аналогично для минимального:
=МИН(A1:A100)
- ✅ Плюсы: простота, скорость выполнения, совместимость со всеми версиями.
- ❌ Минусы: игнорирует текстовые значения, но учитывает
0и ошибки (например,#ДЕЛ/0!). - 🔄 Альтернатива: в Excel 365 можно использовать
=МАКС(A:A)для анализа всего столбца.
⚠️ Внимание: Если в диапазоне есть пустые ячейки, функцииМАКС/МИНих автоматически игнорируют. Но если ячейка содержит формулу, возвращающую пустую строку (""), она будет воспринята как0!
Для удобства можно присвоить функции имя диапазона. Например, выделите столбец A1:A100, в поле имен (слева от строки формул) введите Данные, а затем используйте:
=МАКС(Данные)
2. Поиск с учётом условий: МАКСЕСЛИ и МИНЕСЛИ
Что делать, если нужно найти максимальную цену среди товаров определённой категории или минимальную зарплату в конкретном отделе? Здесь на помощь приходят функции МАКСЕСЛИ и МИНЕСЛИ (доступны с Excel 2019).
Синтаксис:
=МАКСЕСЛИ(диапазон_значений; диапазон_условий; условие)
Пример: найдём максимальную продажу в регионе "Москва" (столбец B — суммы, столбец C — регионы):
=МАКСЕСЛИ(B2:B100; C2:C100; "Москва")
- 📌 Важно: Диапазоны
значенийиусловийдолжны быть одинакового размера. - 🔍 Секрет: Можно использовать подстановочные знаки:
=МАКСЕСЛИ(B2:B100; C2:C100; "Мос*")найдёт все регионы, начинающиеся на "Мос". - 🚀 Продвинутый уровень: В Excel 365 поддерживаются несколько условий:
=МАКСЕСЛИ(B2:B100; C2:C100; "Москва"; D2:D100; ">1000")
Для старых версий Excel (2016 и ранее) используйте комбинацию МАКС + ЕСЛИ как формулу массива (завершайте ввод Ctrl+Shift+Enter):
=МАКС(ЕСЛИ(C2:C100="Москва"; B2:B100))
Как работает формула массива?
Формула =МАКС(ЕСЛИ(C2:C100="Москва"; B2:B100)) сначала проверяет каждое значение в C2:C100 на соответствие условию "Москва". Для совпадений возвращает соответствующие значения из B2:B100, а для остальных — ЛОЖЬ. Затем МАКС игнорирует ЛОЖЬ и находит максимум среди оставшихся чисел.
3. Использование фильтров и сортировки: визуальный метод
Если вам нужно не только найти экстремумы, но и увидеть строки, которым они соответствуют, проще всего воспользоваться инструментами сортировки или фильтрации.
Способ 1: Сортировка
- Выделите диапазон с заголовками.
- Перейдите на вкладку
Главная → Сортировка и фильтр. - Выберите
Сортировка от максимального к минимальному(или наоборот).
Первая и последняя строки после сортировки будут содержать искомые значения.
Способ 2: Фильтр по условию
- Примените фильтр (
Ctrl+Shift+Lили кнопкаФильтрна ленте). - Откройте выпадающий список в столбце с числами.
- Выберите
Числовые фильтры → Первые 10.... - Укажите
1элемент инаибольших/наименьших.
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Сортировка | Быстро, наглядно | Меняет порядок данных | Для одноразового анализа |
| Фильтр "Первые 10" | Не меняет исходные данные | Работает только с видимыми строками | Для больших таблиц |
| Условное форматирование | Выделяет экстремумы визуально | Не показывает точные значения | Для дашбордов |
⚠️ Внимание: Если в таблице есть скрытые строки (через фильтр или вручную), функцииМАКС/МИНих учитывают, а сортировка и визуальные фильтры — нет! Чтобы включить скрытые данные, используйтеПараметры сортировки → Мои данные содержат заголовки.
Убедитесь, что нет объединённых ячеек|Проверьте наличие заголовков|Сохраните резервную копию таблицы|Удалите пустые строки в диапазоне-->
4. Условное форматирование: выделение экстремумов
Чтобы максимальные и минимальные значения были заметны с первого взгляда, используйте условное форматирование. Этот метод не заменяет расчёты, но дополняет их визуальной подсказкой.
Как настроить:
- Выделите диапазон с данными (например,
B2:B100). - Перейдите на вкладку
Главная → Условное форматирование → Правила выделения ячеек → Первые и последние.... - Выберите
10 наибольших элементови укажите формат (например, зелёный фон). - Повторите для
10 наименьших элементов(красный фон).
Для более точной настройки используйте Создать правило → Использовать формулу:
- Для максимума:
=B2=МАКС($B$2:$B$100) - Для минимума:
=B2=МИН($B$2:$B$100)
Критичный нюанс: если в диапазоне несколько одинаковых максимальных/минимальных значений, условное форматирование выделит все их, а функции МАКС/МИН вернут только первое встреченное.
5. Продвинутые формулы: игнорирование ошибок и пустых ячеек
Реальные данные редко бывают идеальными: в них попадаются ошибки (#Н/Д, #ЗНАЧ!), пустые ячейки или текст. Стандартные МАКС/МИН в таких случаях могут давать некорректные результаты. Решение — комбинировать функции.
1. Игнорирование ошибок:
=МАКС(ЕСЛИОШИБКА(B2:B100; ""))
Эта формула заменяет все ошибки на пустые строки, которые МАКС автоматически игнорирует.
2. Игнорирование пустых ячеек и текста:
=МАКС(ЕСЛИ(ЕЧИСЛО(B2:B100); B2:B100))
Здесь ЕЧИСЛО проверяет, является ли значение числом. Вводите как формулу массива (Ctrl+Shift+Enter в старых версиях).
3. Комбинация условий:
Найдём максимальное значение в столбце B, но только для строк, где в столбце A указан "Да":
=МАКС(ЕСЛИ(A2:A100="Да"; ЕСЛИ(ЕЧИСЛО(B2:B100); B2:B100)))
- 🔹 Для Excel 365: Используйте
ФИЛЬТР+МАКС:=МАКС(ФИЛЬТР(B2:B100; (A2:A100="Да")*(ЕЧИСЛО(B2:B100)))) - 📊 Для динамических массивов: Результат автоматически обновится при изменении данных.
6. Сводные таблицы: анализ экстремумов по группам
Если вам нужно найти максимальные/минимальные значения в разрезе категорий (например, максимальная продажа по каждому менеджеру), сводные таблицы — идеальный инструмент.
Пошаговая инструкция:
- Выделите исходные данные (включая заголовки).
- Нажмите
Вставка → Сводная таблица. - В поле
Строкиперетащите столбец с категориями (например, "Менеджер"). - В поле
Значенияперетащите столбец с числами (например, "Продажи"). - Щёлкните по полю в
Значения→Параметры полей значений → Дополнительные вычисления → Максимум(илиМинимум).
Преимущество этого метода — возможность одновременно видеть экстремумы по всем группам, а также добавлять фильтры (например, по датам).
- 📅 Динамический анализ: Добавьте в сводную таблицу срез (
Анализ → Вставить срез) для интерактивной фильтрации. - 🔄 Обновление: Данные в сводной таблице не обновляются автоматически. Используйте
ПКМ → Обновитьили настройтеПараметры → Данные → Обновлять при открытии файла.
⚠️ Внимание: Если в исходных данных есть пустые ячейки или текст, сводная таблица по умолчанию проигнорирует их при расчёте максимума/минимума. Чтобы включить их в анализ, замените пустые значения на0с помощьюНАЙТИ и ЗАМЕНИТЬ(Ctrl+H).
7. Автоматизация: VBA и Office Scripts
Для повторяющихся задач (например, еженедельного поиска экстремумов в отчётах) имеет смысл автоматизировать процесс с помощью макросов или Office Scripts.
Пример макроса на VBA:
Следующий код найдёт максимальное значение в выделенном диапазоне и выведет его в отдельную ячейку:
Sub FindMaxValue()
Dim rng As Range
Dim maxCell As Range
Set rng = Selection
Set maxCell = rng.Cells(rng.Cells.Count)
' Поиск максимума
On Error Resume Next
Set maxCell = rng.Cells(rng.Find(What:=WorksheetFunction.Max(rng), _
LookIn:=xlValues, _
LookAt:=xlWhole).Address)
On Error GoTo 0
' Вывод результата
If Not maxCell Is Nothing Then
Range("D1").Value = "Максимум: " & maxCell.Value & " (ячейка " & maxCell.Address & ")"
Else
Range("D1").Value = "Максимум не найден"
End If
End Sub
Office Scripts для Excel Online:
В веб-версии Excel запишите скрипт для поиска минимума:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getUsedRange();
let values = range.getValues();
// Поиск минимума (игнорируем текст и ошибки)
let min = Number.MAX_VALUE;
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
if (typeof values[i][j] === 'number' && values[i][j] < min) {
min = values[i][j];
}
}
}
// Вывод результата
sheet.getRange("E1").setValue(`Минимум: ${min}`);
}
- 🤖 Преимущества VBA: Работает офлайн, поддерживает сложную логику.
- ☁️ Преимущества Office Scripts: Интеграция с Power Automate, облачное выполнение.
- 🔒 Безопасность: Макросы могут быть заблокированы политиками безопасности. Используйте цифровую подпись для корпоративных файлов.
FAQ: Частые вопросы по поиску экстремумов в Excel
Можно ли найти второе по величине максимальное значение?
Да! Используйте функцию =НАИБОЛЬШИЙ(диапазон; 2) для второго максимума или =НАИМЕНЬШИЙ(диапазон; 2) для второго минимума. Например:
=НАИБОЛЬШИЙ(A1:A100; 2)
В Excel 365 можно комбинировать с ФИЛЬТР для условного поиска.
Как найти максимум по цвету ячейки?
Стандартными функциями это невозможно. Решения:
- VBA: Написать макрос, который проверяет
Interior.Colorячеек. - Power Query: Экспортировать данные с цветами в столбец (требуется предварительная разметка).
Пример VBA-кода для поиска максимума среди красных ячеек:
Function MaxByColor(rng As Range, color As Long) As Variant
Dim cell As Range, maxVal As Double
maxVal = -1.79E+308 ' Начальное значение (минимальное число в Excel)
For Each cell In rng
If cell.Interior.Color = color And IsNumeric(cell.Value) Then
If cell.Value > maxVal Then maxVal = cell.Value
End If
Next cell
If maxVal = -1.79E+308 Then MaxByColor = CVErr(xlErrNA) Else MaxByColor = maxVal
End Function
Почему МАКС возвращает 0, если в данных нет нулей?
Скорее всего, в диапазоне есть:
- Пустые ячейки с формулами, возвращающими
""(Excel воспринимает их как0). - Ячейки с форматированием "Общий", где введён текст, который Excel интерпретирует как число (например, " 5" с пробелом).
Решение: используйте =МАКС(ЕСЛИ(A1:A100<>0; A1:A100)) (формула массива).
Как найти максимум в фильтрованном диапазоне?
Стандартные функции игнорируют скрытые строки. Варианты:
- Промежуточные итоги:
Данные → Структура → Промежуточные итоги(выберите "Максимум"). - Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4; A1:A100)где
4— код операции "Максимум".
Можно ли найти максимум в Google Sheets?
Да, синтаксис идентичен Excel:
=MAX(A1:A100)— максимум.=QUERY(A1:B100; "SELECT MAX(B) WHERE A = 'Москва'")— условный максимум.=MAXIFS(B1:B100; C1:C100; "Да")— аналогичноМАКСЕСЛИ.
Отличие: в Google Sheets нет ограничения на 255 аргументов.