Работа с отрицательными значениями в Microsoft Excel часто вызывает вопросы у пользователей, особенно когда требуется вычислить их среднее арифметическое, игнорируя положительные или нулевые данные. Стандартная функция =СРЗНАЧ() учитывает все числа в диапазоне, что не всегда удобно для анализа убытков, долгов или других отрицательных показателей. В этой статье разберём три надёжных метода, которые помогут точно рассчитать среднее только по отрицательным ячейкам — от простых формул до массивов и пользовательских функций.
Особенность задачи в том, что отрицательные числа в Excel могут храниться как в виде чисел (например, -1500), так и в формате текста или дат с отрицательным значением. Мы рассмотрим универсальные решения, которые работают в Excel 2010–2023 и Excel Online, а также укажем на типичные ошибки, из-за которых формулы возвращают неверный результат или #ДЕЛ/0!. Если вам нужно не просто среднее, а медиану или стандартное отклонение по отрицательным значениям — в конце статьи есть бонусный раздел с этими расчётами.
Почему стандартная функция СРЗНАЧ не подходит для отрицательных чисел
Функция =СРЗНАЧ(диапазон) в Excel рассчитывает среднее арифметическое всех числовых значений в указанном диапазоне, включая положительные, отрицательные и ноль. Например, для массива {-10; 5; -20; 15} она вернёт 0, хотя среднее только отрицательных (-10 и -20) должно быть -15.
Основные проблемы при использовании СРЗНАЧ:
- 🔢 Игнорирование условия: функция не умеет фильтровать данные по знаку.
- 📉 Искажение результата: положительные значения «разбавляют» среднее отрицательных, делая его менее точным для анализа убытков.
- ❌ Ошибки при пустых ячейках: если в диапазоне есть текст или пустые клетки,
СРЗНАЧможет вернуть#ДЕЛ/0!.
Чтобы обойти эти ограничения, потребуются условные функции или формулы массива. Далее разберём каждый метод с примерами.
Способ 1: Формула массива с условием (для Excel 2019 и старше)
Самый универсальный метод — использование формулы массива с функцией СРЗНАЧЕСЛИ (или её аналогами). Она позволяет задать критерий отбора данных. Для отрицательных чисел формула будет такой:
=СРЗНАЧЕСЛИ(диапазон; "<0")
Пример: если ваши данные находятся в ячейках A1:A10, введите:
=СРЗНАЧЕСЛИ(A1:A10; "<0")
Как это работает:
- Функция проверяет каждую ячейку в
A1:A10на условие «меньше 0». - Складывает только те значения, которые удовлетворяют условию.
- Делит сумму на количество отрицательных чисел.
Если в диапазоне нет отрицательных значений, формула вернёт #ДЕЛ/0!. Чтобы избежать ошибки, оберните её в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(СРЗНАЧЕСЛИ(A1:A10; "<0"); "Нет отрицательных значений")
Способ 2: Комбинация СУММЕСЛИ и СЧЁТЕСЛИ (работает во всех версиях Excel)
Этот метод подходит для Excel 2007–2016 и не требует знания формул массива. Мы разобьём задачу на два шага:
- Посчитаем сумму всех отрицательных чисел с помощью
СУММЕСЛИ. - Посчитаем количество отрицательных чисел с помощью
СЧЁТЕСЛИ. - Разделим сумму на количество, чтобы получить среднее.
Формула будет выглядеть так:
=СУММЕСЛИ(A1:A10; "<0") / СЧЁТЕСЛИ(A1:A10; "<0")
Пример с данными:
| Ячейка | Значение |
|---|---|
| A1 | -150 |
| A2 | 200 |
| A3 | -50 |
| A4 | 0 |
| A5 | -30 |
Результат формулы: (-150 + -50 + -30) / 3 = -76,67.
1. Убедитесь, что в диапазоне нет текста (например, "Н/Д").
2. Проверьте формат ячеек — они должны быть "Общий" или "Числовой".
3. Если результат #ДЕЛ/0!, добавьте обработку ошибок с ЕСЛИОШИБКА.
-->
Способ 3: Пользовательская функция на VBA для сложных расчётов
Если вам часто приходится работать с отрицательными значениями, имеет смысл создать пользовательскую функцию на VBA. Она позволит гибко настраивать условия (например, игнорировать нули или учитывать только числа меньше -1000).
Откройте редактор VBA (Alt + F11) и вставьте следующий код в модуль:
Function СреднееОтрицательных(рнг As Range) As Double
Dim клетка As Range
Dim сумма As Double, количество As Integer
сумма = 0
количество = 0
For Each клетка In рнг
If IsNumeric(клетка.Value) And клетка.Value < 0 Then
сумма = сумма + клетка.Value
количество = количество + 1
End If
Next клетка
If количество > 0 Then
СреднееОтрицательных = сумма / количество
Else
СреднееОтрицательных = CVErr(xlErrDiv0) ' Возвращает #ДЕЛ/0!
End If
End Function
Теперь в любой ячейке можно использовать функцию:
=СреднееОтрицательных(A1:A10)
Преимущества этого метода:
- 🔄 Гибкость: можно модифицировать код для дополнительных условий (например, игнорировать значения от
-10до0). - 📊 Производительность: работает быстрее формул массива на больших диапазонах.
- 🛠 Обработка ошибок: корректно обрабатывает текстовые и пустые ячейки.
Как модифицировать функцию для игнорирования нулей?
Замените строку If IsNumeric(клетка.Value) And клетка.Value < 0 Then на:
If IsNumeric(клетка.Value) And клетка.Value < -0.0001 Then
Это исключит нули и значения, близкие к нулю (с учётом погрешности вычислений).
Типичные ошибки и как их избежать
Даже с правильными формулами пользователи часто сталкиваются с неожиданными результатами. Вот самые распространённые ошибки и их решения:
⚠️ Внимание: Если в диапазоне есть ячейки с текстом (например, "Нет данных"), функцииСУММЕСЛИиСЧЁТЕСЛИпроигнорируют их, ноСРЗНАЧЕСЛИможет вернуть ошибку. ИспользуйтеЕСЛИОШИБКАдля защиты.
Частые проблемы:
| Ошибка | Причина | Решение |
|---|---|---|
#ДЕЛ/0! | Нет отрицательных чисел в диапазоне | Добавьте ЕСЛИОШИБКА или проверьте данные |
#ЗНАЧ! | В диапазоне есть текст или логические значения (ИСТИНА/ЛОЖЬ) | Используйте ЕОШИБКА для фильтрации: |
| Неверное среднее | Ячейки отформатированы как текст (например, '-100) | Примените формат "Числовой" или используйте ЗНАЧЕН() |
Если формула возвращает 0 вместо ожидаемого отрицательного числа, проверьте:
- 🔍 Формат ячеек: выделите диапазон и нажмите
Ctrl + 1, выберите "Числовой". - 📌 Скрытые символы: иногда перед числом стоит пробел или апостроф (например,
' -100). ИспользуйтеПЕЧСИМВ(A1)для проверки. - 🔄 Автоматический пересчёт: если формулы не обновляются, перейдите в
Формулы → Параметры вычислений → Автоматически.
Бонус: Расчёт медианы и стандартного отклонения для отрицательных чисел
Если вам нужно не только среднее, но и другие статистические показатели по отрицательным значениям, используйте комбинацию функций:
Медиана отрицательных чисел:
=МЕДИАНА(ЕСЛИ(A1:A10<0; A1:A10))
Введите эту формулу как формулу массива (Ctrl + Shift + Enter в старых версиях Excel).
Стандартное отклонение отрицательных чисел:
=СТАНДОТКЛОН.В(ЕСЛИ(A1:A10<0; A1:A10))
Для Excel 2019 и новее можно использовать ФИЛЬТР:
=МЕДИАНА(ФИЛЬТР(A1:A10; A1:A10<0))
FAQ: Частые вопросы по расчёту среднего отрицательных чисел
Можно ли посчитать среднее отрицательных чисел без VBA?
Да, используйте СРЗНАЧЕСЛИ (для Excel 2019+) или комбинацию СУММЕСЛИ/СЧЁТЕСЛИ (для всех версий). Примеры есть в разделах выше.
Почему моя формула возвращает #ЗНАЧ! вместо результата?
Скорее всего, в диапазоне есть текстовые значения или ячейки с ошибками. Используйте ЕСЛИОШИБКА или проверьте данные функцией ТИП().
Как посчитать среднее только по ячейкам красного цвета (отрицательные числа)?
Цвет ячейки — это формат, а не значение, поэтому стандартными формулами это сделать нельзя. Используйте VBA или надстройку Power Query для анализа по цвету.
Можно ли использовать эти методы в Google Таблицах?
Да, в Google Sheets работают аналогичные функции: =AVERAGEIF, =SUMIF/=COUNTIF. Синтаксис идентичен Excel.
Как посчитать среднее по модулю отрицательных чисел?
Используйте формулу массива:
=СРЗНАЧ(ЕСЛИ(A1:A10<0; АБС(A1:A10))) (не забудьте Ctrl+Shift+Enter в старых версиях).