Функция AVERAGE в Microsoft Excel возвращает ошибку #DIV/0!, если вы пытаетесь рассчитать среднее значение для пустого диапазона ячеек или столбца с текстовыми данными. Это самая распространенная проблема при работе с формулой, но её легко исправить — достаточно добавить хотя бы одно числовое значение в выбранный диапазон или использовать модификацию AVERAGEA для игнорирования текста. В 90% случаев пользователи ошибочно применяют AVERAGE к некорректным данным, не проверяя предварительно тип содержимого ячеек.
Среднее арифметическое в Excel рассчитывается автоматически: функция суммирует все числовые значения в указанном диапазоне и делит результат на количество этих значений. Однако если в диапазоне есть пустые ячейки, они игнорируются — это ключевое отличие от ручного подсчета, где пустые поля часто воспринимаются как нули. Например, для диапазона A1:A5 с числами 10, 20, , 30, 40 (где одна ячейка пустая) формула =AVERAGE(A1:A5) вернет 25, а не 20, как могли бы ожидать новички.
В этой статье разберем не только базовый синтаксис AVERAGE, но и скрытые нюансы: как обрабатываются логические значения, почему функция может возвращать неожиданные результаты при работе с датами, и как обойти ограничение на 255 аргументов. Также покажем альтернативные способы расчета среднего через SUM и COUNT для сложных сценариев.
Базовый синтаксис функции AVERAGE
Формула AVERAGE в Excel имеет простой синтаксис, но поддерживает до 255 аргументов — отдельных чисел, ссылок на ячейки или диапазонов. Основная структура:
=AVERAGE(число1; [число2]; ...)
Где:
- 📌
число1— обязательный аргумент (может быть числом, ссылкой на ячейку или диапазоном, напримерA1:A10) - 📌
[число2]— необязательные дополнительные аргументы (до 254)
Примеры корректного использования:
- 🔢
=AVERAGE(5; 10; 15)→ вернет 10 - 📊
=AVERAGE(B2:B10)→ среднее значений в ячейках с B2 по B10 - 🔄
=AVERAGE(A1:A5; C1:C5)→ среднее по двум несмежным диапазонам
⚠️ Внимание: Если аргумент содержит текст (например, "Н/Д"), AVERAGE вернет ошибку#VALUE!. Для игнорирования текста используйтеAVERAGEA.
Чем AVERAGE отличается от AVERAGEA и AVERAGEIF
В Excel есть три похожие функции для расчета среднего, но каждая решает свои задачи:
| Функция | Обрабатывает тексты | Учитывает логические значения | Поддерживает условия | Пример использования |
|---|---|---|---|---|
| AVERAGE | ❌ Игнорирует | ❌ Игнорирует | ❌ Нет | =AVERAGE(A1:A10) |
| AVERAGEA | ✅ Преобразует в 0 | ✅ ИСТИНА=1, ЛОЖЬ=0 |
❌ Нет | =AVERAGEA(A1:A10) |
| AVERAGEIF | ❌ Игнорирует | ❌ Игнорирует | ✅ Да | =AVERAGEIF(B2:B10; ">50") |
AVERAGEA полезна, когда в данных есть текстовые пометки (например, "Отсутствует"), которые не должны ломать расчет. Например, для диапазона с числами 10, 20, "Н/Д", 30 формула =AVERAGEA(A1:A4) вернет 15 (так как "Н/Д" приравнивается к 0), а =AVERAGE(A1:A4) — ошибку.
AVERAGEIF позволяет учитывать только значения, соответствующие условию. Например, =AVERAGEIF(C2:C10; ">100"; C2:C10) посчитает среднее только для чисел больше 100 в диапазоне C2:C10.
Типичные ошибки при работе с AVERAGE и как их исправить
Даже опытные пользователи Excel сталкиваются с ошибками при расчете среднего. Вот самые распространенные:
#DIV/0!— возникает, если в диапазоне нет числовых значений или все ячейки пустые. Решение: добавьте хотя бы одно число или используйтеIFERROR:=IFERROR(AVERAGE(A1:A10); "Нет данных")#VALUE!— появляется, если в диапазоне есть текст, который нельзя преобразовать в число. Решение: очистите данные или замените AVERAGE на AVERAGEA.- Неожиданный результат — часто связан с скрытыми символами (например, пробелами) или форматом ячеек. Решение: используйте функцию
TRIMдля удаления пробелов или проверьте формат черезФормат ячеек → Число.
Еще одна ловушка — даты. Excel хранит даты как числа (например, 01.01.2023 = 44927), поэтому если в диапазоне есть даты, AVERAGE вернет их числовое представление, а не осмысленное значение. Чтобы посчитать среднюю дату, используйте:
=TEXT(AVERAGE(A1:A5); "дд.мм.гггг")
⚠️ Внимание: Если вы копируете формулу с AVERAGE в другую книгу, проверьте, не изменились ли ссылки на диапазоны. Относительные ссылки (например, A1:A10) автоматически сдвигаются, что может исказить результат.
Как проверить, почему AVERAGE возвращает ошибку?
1. Выделите диапазон, по которому считаете среднее.
2. Нажмите Ctrl+Shift+~ (тильда) — это отобразит реальное содержимое ячеек (включая скрытые символы).
3. Проверьте, нет ли в данных:
- Текста, маскирующегося под числа (например, "10 " с пробелом)
- Логических значений (ИСТИНА/ЛОЖЬ)
- Формул, возвращающих пустую строку (="")
4. Используйте =ISTEXT(A1) или =ISNUMBER(A1) для проверки типа данных в проблемных ячейках.
Практические примеры использования AVERAGE
Рассмотрим реальные задачи, где AVERAGE экономит время:
1. Средняя зарплата по отделу
Допустим, в столбце B указаны зарплаты сотрудников (B2:B20), а в столбце A — их отделы. Чтобы посчитать среднюю зарплату для отдела "Маркетинг":
=AVERAGEIF(A2:A20; "Маркетинг"; B2:B20)
2. Средний балл студента с игнорированием пропусков
Если в таблице с оценками есть пустые ячейки (пропущенные экзамены), используйте:
=AVERAGE(СТРОКА_С_ОЦЕНКАМИ)
Пустые ячейки будут проигнорированы автоматически.
3. Среднее значение с учетом весов
Для взвешенного среднего (например, оценки с разным весом) используйте SUMPRODUCT:
=SUMPRODUCT(B2:B5; C2:C5)/SUM(C2:C5)
Где B2:B5 — значения, а C2:C5 — их веса.
Выделите диапазон данных|Проверьте формат ячеек (должен быть "Общий" или "Числовой")|Удалите лишние пробелы функцией TRIM|Замените тексты типа "Н/Д" на 0 или используйте AVERAGEA|Убедитесь, что нет скрытых строк/столбцов с данными-->
Как ускорить расчеты с AVERAGE в больших таблицах
При работе с диапазонами более 10 000 строк AVERAGE может замедлять пересчет книги. Оптимизируйте формулы так:
- 🚀 Используйте именованные диапазоны: Создайте имя для диапазона через
Формулы → Диспетчер имени ссылайтесь на него в формуле (например,=AVERAGE(Зарплаты)). Это ускоряет пересчет на 15-20%. - 🔄 Отключите автоматический пересчет: Перейдите в
Формулы → Параметры вычислений → Вручнуюи обновляйте данные поF9только когда нужно. - 📊 Разбивайте большие диапазоны: Вместо
=AVERAGE(A1:A10000)используйте=AVERAGE(A1:A5000; A5001:A10000)— это снижает нагрузку.
Для динамических диапазонов (где данные постоянно добавляются) используйте TABLE (Excel-таблицы). Формула автоматически расширится при добавлении новых строк:
=AVERAGE(Таблица1[Столбец1])
⚠️ Внимание: Если в книге много формул AVERAGE с пересекающимися диапазонами, Excel может создавать избыточные зависимости, что замедляет работу. Проверьте зависимости через Формулы → Влияющие ячейки.
Альтернативные способы расчета среднего без AVERAGE
Иногда AVERAGE не подходит — например, когда нужно учитывать только видимые ячейки после фильтра или игнорировать ошибки. В таких случаях используйте:
| Задача | Формула | Пример |
|---|---|---|
| Среднее только видимых ячеек (после фильтра) | SUBTOTAL(1; диапазон) |
=SUBTOTAL(1; B2:B100) |
| Среднее с игнорированием ошибок | AGGREGATE(1; 6; диапазон) |
=AGGREGATE(1; 6; A1:A50) |
| Среднее с несколькими условиями | AVERAGEIFS |
=AVERAGEIFS(B2:B10; A2:A10; "Да"; C2:C10; ">100") |
SUBTOTAL особенно полезен в отчетах: если применить фильтр к таблице, формула автоматически пересчитает среднее только по видимым строкам. Например, для диапазона B2:B100:
=SUBTOTAL(1; B2:B100)
AGGREGATE — самая гибкая функция: второй аргумент (6) игнорирует ошибки, скрытые строки и другие проблемы. Синтаксис:
AGGREGATE(номер_функции; параметры; диапазон)
Где номер_функции=1 для среднего, а параметры=6 для игнорирования ошибок.
Расширенные приемы: AVERAGE с массивами и LAMBDA
Для опытных пользователей Excel 365 доступны продвинутые техники:
1. Среднее по нескольким условиям без AVERAGEIFS
Используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях):
=AVERAGE(IF((A2:A10="Да")*(B2:B10>50); C2:C10))
Эта формула посчитает среднее по столбцу C, где в столбце A стоит "Да", а в B — число >50.
2. Среднее с пользовательской функцией (LAMBDA)
В Excel 365 можно создать собственную функцию для нестандартных расчетов. Например, среднее без учета 10% самых больших и маленьких значений:
=LAMBDA(диапазон;
LET(
отсортировано; SORT(диапазон);
обрезано; DROP(отсортировано; ROUNDUP(COUNT(диапазон)*0.1; 0); -ROUNDUP(COUNT(диапазон)*0.1; 0));
AVERAGE(обрезано)
)
)(A1:A20)
3. Среднее по цвету ячейки
Для расчета среднего только по ячейкам определенного цвета потребуется VBA-макрос. Пример кода:
Function AverageByColor(rng As Range, color As Range) As Double
Dim cell As Range, sum As Double, count As Integer
For Each cell In rng
If cell.Interior.Color = color.Interior.Color Then
sum = sum + cell.Value
count = count + 1
End If
Next cell
AverageByColor = sum / count
End Function
Используйте в формуле как =AverageByColor(A1:A10; B1), где B1 — ячейка с нужным цветом.
Как вставить LAMBDA-функцию в старых версиях Excel?
К сожалению, LAMBDA доступна только в Excel 365 и Excel 2021. Для старых версий используйте альтернативы:
1. Создайте пользовательскую функцию на VBA (как в примере с цветом).
2. Разбейте логику на несколько столбцов с промежуточными расчетами.
3. Используйте AGGREGATE или SUMPRODUCT для сложных условий.
FAQ: Частые вопросы по функции AVERAGE
Можно ли посчитать среднее по нескольким листам?
Да, используйте 3D-ссылки. Например, =AVERAGE(Лист1:Лист3!A1) посчитает среднее по ячейке A1 на трех листах. Для диапазонов: =AVERAGE(Лист1:Лист3!A1:A10).
Почему AVERAGE игнорирует мои данные?
Скорее всего, ваши данные хранятся как текст. Проверьте:
- Выделите ячейку и посмотрите на строку формул — если слева зеленый треугольник, это текст.
- Используйте
=VALUE(A1)для преобразования в число. - Или примените формат "Общий" через
Главная → Формат → Формат ячеек.
Как посчитать среднее без учета нулей?
Используйте формулу массива:
=AVERAGE(IF(A1:A10<>0; A1:A10))
В Excel 365 достаточно нажать Enter, в старых версиях — Ctrl+Shift+Enter.
Можно ли в AVERAGE использовать условия, как в SUMIF?
Да, для этого есть отдельная функция AVERAGEIF (одно условие) или AVERAGEIFS (несколько условий). Пример:
=AVERAGEIF(B2:B10; ">50")
посчитает среднее только для значений >50.
Как посчитать среднее по времени (например, среднее время выполнения задачи)?summary>
Excel хранит время как доли суток (например, 12:00 = 0.5). Чтобы посчитать среднее время:
- Убедитесь, что ячейки с временем отформатированы как "Время".
- Используйте
=AVERAGE(A1:A10) — результат будет в формате времени.
- Примените формат "ч:мм" к ячейке с формулой.
Пример: для времен 10:00, 12:00, 14:00 среднее будет 12:00.
=AVERAGE(A1:A10) — результат будет в формате времени.