Как посчитать количество ошибок в Excel: формулы, фильтры и скрытые возможности

Работа с ошибками в Microsoft Excel — неизбежная часть анализа данных. Даже в идеально структурированных таблицах рано или поздно появляются #ДЕЛ/0!, #Н/Д или #ЗНАЧ!, которые портят результаты вычислений и мешают принимать решения. Но что, если вместо ручного поиска нужно автоматически посчитать количество ошибок в диапазоне? Или выделить их цветом? Или даже заменить на нули для корректных расчётов?

Эта статья не просто перечислит способы подсчёта ошибок — она научит вас отделять критические сбои от "ложных срабатываний" (например, когда #Н/Д используется как часть логики формулы), работать с массивами данных и интегрировать проверку ошибок в автоматизированные отчёты. Мы разберём методы от базовых до продвинутых, включая малоизвестные функции вроде ЕОШИБКА и ЕПУСТО, а также покажем, как обойти ограничения стандартных инструментов.

Вы удивитесь, но даже опытные пользователи часто не знают, что в Excel есть встроенные инструменты для мониторинга ошибок — например, Проверка ошибок на вкладке Формулы. А между тем, они экономят часы работы при анализе больших datasets. Готовы оптимизировать свою работу?

📊 Как часто вы сталкиваетесь с ошибками в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Очень редко

1. Базовый метод: функция ЕОШИБКА + СЧЁТЕСЛИ

Начнём с самого простого и универсального способа — комбинации функций ЕОШИБКА и СЧЁТЕСЛИ. Этот дуэт работает во всех версиях Excel (начиная с 2007 года) и не требует знания массивов или Power Query.

Функция ЕОШИБКА(значение) возвращает ИСТИНА, если в ячейке любая ошибка (включая #ДЕЛ/0!, #Н/Д, #ИМЯ?), и ЛОЖЬ — если ошибок нет. А СЧЁТЕСЛИ подсчитывает количество ячеек, соответствующих критерию.Together они дают мощный инструмент:

=СЧЁТЕСЛИ(диапазон; ИСТИНА) - СЧЁТЕСЛИ(диапазон; ЛОЖЬ)

Но есть нюанс: этот метод считает все типы ошибок вместе. Если вам нужно разделить #ДЕЛ/0! и #Н/Д, придётся использовать более сложные формулы (о них — в следующем разделе).

  • Плюсы: работает в любых версиях Excel, не требует надстроек.
  • Минусы: не различает типы ошибок, может тормозить на больших диапазонах (100K+ строк).

2. Продвинутый подсчёт: ЕТИПОШ и массивы

Когда требуется разделить ошибки по типам (например, посчитать только #ДЕЛ/0! или только #ССЫЛ!), на помощь приходит функция ЕТИПОШ(значение; тип_ошибки). Она проверяет, относится ли ошибка к конкретному типу, где тип_ошибки — это число от 1 до 8:

Код ошибкиТип ошибкиПример
1#Н/Д=ПОИСКПОЗ(999;A1:A10)
2#ЗНАЧ!=A1+"текст"
3#ДЕЛ/0!=10/0
4#ССЫЛ!=СУММ(Лист2!A1) (если Лист2 удалён)
7#ЧИСЛО!=КОРЕНЬ(-1)

Чтобы посчитать, например, только ошибки #ДЕЛ/0! в диапазоне A1:A100, используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях Excel):

=СУММ(--(ЕТИПОШ(A1:A100;3)))

Для подсчёта всех ошибок кроме #Н/Д (полезно, если #Н/Д используется как часть логики в формулах вроде ВПР), комбинируйте ЕОШИБКА и ЕТИПОШ:

=СУММ(--(ЕОШИБКА(A1:A100)))-СУММ(--(ЕТИПОШ(A1:A100;1)))
Почему формулы массива тормозят Excel?

Формулы массива (вводимые через Ctrl+Shift+Enter) пересчитывают весь диапазон за раз, что нагружает процессор. В Excel 365 и 2021 эту проблему решили динамические массивы, но в старых версиях лучше ограничивать диапазон до 10-50K строк.

3. Условное форматирование: визуализация ошибок

Иногда достаточно не посчитать, а выделить ошибки цветом — это ускоряет их поиск и анализ. Для этого:

  1. Выделите диапазон (например, B2:B1000).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =ЕОШИБКА(B2).
  5. Задайте формат (например, красный фон или шрифт).

Для выделения конкретных типов ошибок используйте ЕТИПОШ:

  • 🔴 =ЕТИПОШ(B2;3) — выделит #ДЕЛ/0!.
  • 🟡 =ЕТИПОШ(B2;1) — выделит #Н/Д.
  • 🟣 =ЕОШИБКА(B2) — выделит все ошибки.

Совет: если ошибок много, добавьте фильтр по цвету (вкладка Данные → Фильтр), чтобы быстро переключаться между ними.

Выделить диапазон данных|Создать правило с формулой =ЕОШИБКА(первая_ячейка)|Задать контрастный цвет (красный/жёлтый)|Применить фильтр по цвету для удобной навигации-->

4. Фильтрация и сортировка ошибок

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

  1. Выделите заголовок столбца с данными.
  2. Нажмите Данные → Фильтр.
  3. Раскройте выпадающий список в заголовке столбца.
  4. Снимите все галочки, кроме (Пусто) и (Ошибки).

Excel отобразит только строки с ошибками. Чтобы посчитать их количество, посмотрите номер последней видимой строки в столбце с номерами (слева от таблицы).

Для сортировки по ошибкам:

  1. Примените фильтр (как описано выше).
  2. Нажмите Данные → Сортировка.
  3. В поле Сортировать по выберите столбец с ошибками.
  4. В поле Порядок укажите По значению и выберите Настраиваемый список.
  5. Добавьте в список значения #Н/Д, #ДЕЛ/0! и т.д. в нужном порядке.

5. Power Query: обработка ошибок в больших данных

Если вы работаете с большими datasets (100K+ строк), обычные формулы Excel будут тормозить. Здесь на помощь приходит Power Query — инструмент для трансформации данных, встроенный в Excel 2016+.

Чтобы посчитать ошибки с помощью Power Query:

  1. Выделите диапазон и нажмите Данные → Из таблицы/диапазона (в Excel 2016+) или Power Query → Из таблицы (в Excel 2013).
  2. В открывшемся редакторе Power Query добавьте настраиваемый столбец:
    = if [ВашСтолбец] is error then "Ошибка" else null
  3. Отфильтруйте новый столбец по значению "Ошибка".
  4. В строке состояния (внизу окна) вы увидите количество отфильтрованных строк — это и есть число ошибок.

Преимущества Power Query:

  • 🚀 Обрабатывает миллионы строк без тормозов.
  • 🔄 Позволяет заменять ошибки на нули или другие значения прямо в процессе загрузки данных.
  • 🔗 Можно создать шаблон и применять его к новым данным автоматически.

Пример кода для замены всех ошибок на 0 в Power Query:

= Table.ReplaceErrorValues(ИсходнаяТаблица, {{"Столбец1", 0}, {"Столбец2", 0}})

6. VBA: автоматизация поиска ошибок

Для продвинутых пользователей, которые хотят полностью автоматизировать процесс, подойдёт VBA (Visual Basic for Applications). Скрипт ниже подсчитает ошибки в выбранном диапазоне и выведет результат в сообщении:

Sub CountErrors()

Dim rng As Range

Dim cell As Range

Dim errorCount As Long

Set rng = Selection ' Выделенный диапазон

errorCount = 0

For Each cell In rng

If IsError(cell.Value) Then

errorCount = errorCount + 1

End If

Next cell

MsgBox "Найдено ошибок: " & errorCount, vbInformation, "Результат"

End Sub

Чтобы запустить этот код:

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

Для раздельного подсчёта типов ошибок модифицируйте код:

If IsError(cell.Value) Then

Select Case cell.Text

Case "#Н/Д": ndCount = ndCount + 1

Case "#ДЕЛ/0!": divCount = divCount + 1

' Добавьте другие случаи

End Select

End If

Как ускорить VBA для больших диапазонов?

Отключите обновление экрана в начале кода (Application.ScreenUpdating = False) и включите в конце (= True).

Используйте массивы вместо поэлементного перебора ячеек.

Применяйте Application.Calculation = xlCalculationManual перед циклом и возвращайте xlCalculationAutomatic после.

7. Скрытые ошибки: как найти то, что не видно

Не все ошибки в Excel видны невооружённым глазом. Например:

  • 👻 Скрытые строки/столбцы могут содержать ошибки, которые не отображаются на экране.
  • 📊 Ошибки в сводных таблицах иногда маскируются под пустые ячейки.
  • 🔗 Внешние ссылки на удалённые файлы возвращают #ССЫЛ!, но их не всегда заметно.

Чтобы найти такие ошибки:

  1. Покажите все скрытые строки/столбцы: выделите весь лист (Ctrl + A) → правая кнопка → Показать.
  2. Проверьте сводные таблицы:
    =ЕОШИБКА(ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Имя_поля"))
  3. Используйте Специальную вставку → Пропуски для выделения пустых ячеек, которые могут быть ошибками.

Особое внимание уделите ошибкам в именованных диапазонах. Чтобы их проверить:

  1. Перейдите на вкладку Формулы → Диспетчер имён.
  2. Выделите имя и посмотрите на поле Диапазон — если там #ССЫЛ!, имя ссылается на несуществующий диапазон.

FAQ: Частые вопросы о подсчёте ошибок в Excel

Можно ли посчитать ошибки в Google Sheets теми же формулами?

Да, синтаксис функций ISERROR (аналог ЕОШИБКА) и COUNTIF в Google Sheets идентичен Excel. Например:

=COUNTIF(A1:A100; "=#N/A")

подсчитает количество #Н/Д. Однако в Sheets нет функции ЕТИПОШ — для раздельного подсчёта типов ошибок придётся использовать регулярные выражения:

=ARRAYFORMULA(SUM(IF(REGEXMATCH(TO_TEXT(A1:A100); "#DIV/0!"); 1; 0)))

Почему СЧЁТЕСЛИ не считает ошибки, если использовать критерий "#Н/Д"?

Потому что СЧЁТЕСЛИ ищет точные совпадения текста, а ошибки в Excel — это не текст, а специальный тип данных. Используйте комбинацию ЕОШИБКА + СУММПРОИЗВ:

=СУММПРОИЗВ(--(ЕОШИБКА(A1:A100)))

Как заменить все ошибки на ноль в большом диапазоне?

Три способа:

  1. Формула: =ЕСЛИОШИБКА(исходная_ячейка; 0).
  2. Power Query: = Table.ReplaceErrorValues(Source, {{"Column1", 0}}).
  3. Найти и заменить: нажмите Ctrl + H, в поле Найти введите #Н/Д, в поле Заменить на0. Повторите для других типов ошибок.
⚠️ Внимание: Замена через Найти и заменить преобразует ошибки в статические значения. Если исходные данные изменятся, ошибки не вернутся автоматически.

Можно ли посчитать ошибки в защищённом листе?

Да, но с ограничениями:

  • 🔓 Формулы (вроде СЧЁТЕСЛИ + ЕОШИБКА) будут работать, если ячейки не заблокированы для чтения.
  • 🔒 VBA не сработает, если макросы отключены в настройках защиты.
  • 📊 Условное форматирование применится только если правила были созданы до защиты листа.

Чтобы разблокировать возможности, временно снимите защиту (Рецензирование → Снять защиту листа).

Как посчитать ошибки в динамическом массиве (Excel 365)?

В Excel 365 с динамическими массивами используйте ФИЛЬТР + СТРОКА:

=СТРОКА(ФИЛЬТР(ЕОШИБКА(A1:A100); A1:A100; "Ошибка"))

Эта формула вернёт массив номеров строк с ошибками. Чтобы посчитать их количество:

=СЧЁТ(ФИЛЬТР(ЕОШИБКА(A1:A100); A1:A100; "Ошибка"))