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

Работа с отфильтрованными данными в Microsoft Excel — рутинная задача для аналитиков, бухгалтеров и менеджеров. Но когда нужно быстро узнать, сколько строк осталось после применения фильтра, многие сталкиваются с неожиданными трудностями. Стандартная функция СЧЁТ или COUNTA возвращает общее количество ячеек, игнорируя скрытые фильтром записи. А вручную пересчитывать сотни строк — нерационально.

В этой статье вы найдёте 5 рабочих методов подсчёта видимых строк после фильтрации, включая малоизвестные приёмы с функциями ПРОМЕЖУТОЧНЫЕ.ИТОГИ, АГРЕГАТ, а также способы без формул — через строку состояния и макросы. Мы разберём нюансы для разных версий Excel (2010–2023) и покажем, как избежать типичных ошибок при работе с большими массивами данных.

Особое внимание уделим динамическим диапазонам и таблицам Excel, где подсчёт после фильтра имеет свои особенности. А для любителей автоматизации — бонусный раздел с VBA-скриптом, который сделает всю работу за вас в один клик.

Прежде чем перейти к инструкциям, проверьте: ваши данные действительно отфильтрованы? Иногда пользователи путают фильтрацию с ручным скрытием строк (ПКМ → Скрыть). В последнем случае большинство описанных ниже методов не сработают — потребуются другие подходы.

📊 Как часто вы используете фильтры в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

1. Способ: Строка состояния — самый быстрый метод без формул

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

Алгоритм действий:

  1. Выделите диапазон ячеек с отфильтрованными данными (например, столбец A от первой до последней строки).
  2. Посмотрите вниз экрана на строку состояния (серую панель внизу окна Excel).
  3. Там отобразится количество выделенных (видимых) ячеек. Например: "Выделено: 45 из 120", где 45 — искомое значение.

⚠️ Внимание: Если в строке состояния отображается только общее количество ячеек (например, "120"), кликните по ней правой кнопкой мыши и поставьте галочку напротив пункта "Количество". Это включит отображение статистики.

Преимущества метода:

  • 🔹 Мгновенный результат без формул
  • 🔹 Работает в Excel 2010–2023 и Excel Online
  • 🔹 Не зависит от структуры данных (подходит для таблиц и обычных диапазонов)

Недостатки:

  • 🚫 Не подходит для автоматизации (нельзя использовать в формулах или отчётах)
  • 🚫 Показывает количество ячеек, а не строк. Если выделили несколько столбцов, значение нужно делить на их число.

2. Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTAL) — универсальное решение

Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ (или SUBTOTAL в английской версии) специально разработана для работы с отфильтрованными данными. Она игнорирует скрытые строки и возвращает результат только для видимых ячеек.

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

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(функция_номер; диапазон)

где:

  • функция_номер — код операции (например, 3 для СЧЁТ, 103 для СЧЁТЗ).
  • дипазон — столбец или массив ячеек для подсчёта.

Примеры использования:

Задача Формула Результат
Подсчёт видимых строк в столбце A =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A:A) Количество непустых видимых ячеек
Подсчёт всех видимых строк (включая пустые) =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; A:A) Количество видимых строк в столбце
Сумма видимых значений в столбце B =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; B:B) Сумма только видимых чисел

⚠️ Внимание: Если в вашей таблице есть пустые ячейки, функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; ...) их проигнорирует. Чтобы учесть все видимые строки (даже с пустыми ячейками), используйте номер функции 103 (аналог СЧЁТЗ).

Преимущества метода:

  • 🔹 Работает в динамических таблицах и обычных диапазонах
  • 🔹 Автоматически обновляется при изменении фильтра
  • 🔹 Поддерживает 11 типов операций (счёт, сумма, среднее и т.д.)

Недостатки:

  • 🚫 Требует знания номеров функций (их легко запомнить или подсмотреть в справке)
  • 🚫 Не работает с ручно скрытыми строками (только с фильтром)

Убедиться, что данные отфильтрованы (а не скрыты вручную)|Выбрать правильный номер функции (3 или 103)|Применить формулу к нужному столбцу|Проверить результат на тестовых данных-->

3. Функция АГРЕГАТ (AGGREGATE) — продвинутая альтернатива

Функция АГРЕГАТ появилась в Excel 2010 и предлагает более гибкие возможности для работы с отфильтрованными данными. Она поддерживает игнорирование скрытых строк, ошибок и других исключений.

Синтаксис:

=АГРЕГАТ(номер_функции; параметры; диапазон)

где:

  • номер_функции — операция (например, 3 для СЧЁТ).
  • параметры — опции обработки (например, 5 для игнорирования скрытых строк).
  • диапазон — данные для анализа.

Пример для подсчёта видимых строк:

=АГРЕГАТ(3; 5; A:A)

где:

  • 3 — операция СЧЁТ (подсчёт непустых ячеек).
  • 5 — параметр для игнорирования скрытых строк.
  • A:A — столбец с данными.

Ключевые параметры для работы с фильтрами:

Параметр Значение Применение
4 Игнорировать скрытые строки Не учитывает строки, скрытые вручную
5 Игнорировать скрытые строки и ошибки Идеально для фильтров + защита от #Н/Д
6 Игнорировать ошибки Полезно, если в данных есть #ДЕЛ/0! или #ЗНАЧ!

⚠️ Внимание: Функция АГРЕГАТ не работает в Excel Online и мобильных версиях программы. Если вам нужна кросс-платформенная совместимость, используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ.

Преимущества АГРЕГАТ перед ПРОМЕЖУТОЧНЫЕ.ИТОГИ:

  • 🔹 Можно игнорировать ошибки в данных
  • 🔹 Поддерживает вложенные вычисления (например, среднее по видимым строкам)
  • 🔹 Более гибкая настройка параметров
Как запомнить номера функций в АГРЕГАТ?

Самые популярные номера функций совпадают с их аналогами в стандартных формулах:

- 3 = СЧЁТ

- 9 = СУММ

- 1 = СРЗНАЧ

- 5 = МАКС

- 6 = МИН

Это упрощает запоминание!

4. Подсчёт в таблицах Excel (Ctrl + T) — автоматический режим

Если ваши данные оформлены как таблица Excel (созданная через Ctrl + T или Вставка → Таблица), подсчёт видимых строк после фильтра упрощается. Таблицы автоматически обновляют итоги и поддерживают специальные функции.

Как посчитать строки в таблице:

  1. Выделите любую ячейку в таблице.
  2. Включите фильтр (если ещё не включён) через Данные → Фильтр.
  3. Примените нужные условия фильтрации.
  4. В нижней части таблицы появится строка "Итоги". Кликните по ячейке в столбце, где хотите увидеть количество строк, и выберите "Число".

Формула в строке итогов автоматически подставит ПРОМЕЖУТОЧНЫЕ.ИТОГИ с правильными параметрами. Например:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; [Столбец1])

Преимущества работы с таблицами:

  • 🔹 Автоматическое обновление итогов при изменении фильтра
  • 🔹 Визуальное оформление (чередующиеся цвета строк)
  • 🔹 Поддержка структурированных ссылок (например, [Столбец1] вместо A:A)

⚠️ Внимание: Если вы удалите строку итогов или отключите её отображение (Конструктор → Строка итогов), формулы подсчёта исчезнут. Чтобы сохранить их, скопируйте результаты в отдельные ячейки.

Совет: Для быстрого создания таблицы выделите данные и нажмите Ctrl + T. Excel автоматически определит заголовки и применит форматирование.

5. Макрос VBA для автоматизации подсчёта

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

Код макроса:

Sub CountVisibleRows()

Dim rng As Range

Dim count As Long

Dim cell As Range

On Error Resume Next

Set rng = Selection.SpecialCells(xlCellTypeVisible)

On Error GoTo 0

If rng Is Nothing Then

MsgBox "Нет видимых ячеек в выделении!", vbExclamation

Exit Sub

End If

count = 0

For Each cell In rng.Areas

count = count + cell.Rows.count

Next cell

MsgBox "Количество видимых строк: " & count, vbInformation

End Sub

Как использовать:

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

Преимущества макроса:

  • 🔹 Работает с любыми диапазонами, включая несмежные
  • 🔹 Учитывает все видимые строки, даже если они разбросаны по листу
  • 🔹 Можно модифицировать для вывода результата в ячейку

⚠️ Внимание: Макросы работают только в Excel для Windows/Mac и требуют разрешения на выполнение (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы). В Excel Online и мобильных версиях VBA не поддерживается.

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

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

Ошибка 1: Функция возвращает общее количество строк, игнорируя фильтр

Причина: Используется стандартная функция СЧЁТ или СТРОКА вместо ПРОМЕЖУТОЧНЫЕ.ИТОГИ.

Решение: Замените формулу на =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; A:A).

Ошибка 2: Результат не обновляется при изменении фильтра

Причина: Отключён автоматический пересчёт формул (Формулы → Параметры вычислений → Автоматически).

Решение: Включите автоматический режим или нажмите F9 для принудительного пересчёта.

Ошибка 3: Макрос не работает с большими диапазонами

Причина: В коде не учтён лимит памяти для обработки крупных массивов.

Решение: Модифицируйте макрос, добавив обработку по частям:

    Dim chunkSize As Long

chunkSize = 10000 ' Обрабатываем по 10 000 строк за раз

For i = 1 To rng.Rows.count Step chunkSize

' Обработка текущего фрагмента

Next i

Ошибка 4: Функция АГРЕГАТ возвращает #ЗНАЧ!

Причина: Некорректный номер функции или параметра.

Решение: Проверьте синтаксис. Например, =АГРЕГАТ(3; 5; A:A) — правильно, а =АГРЕГАТ(3; 15; A:A) — нет (параметр 15 не существует).

Ошибка 5: Строка состояния показывает неверное количество

Причина: Выделен не весь диапазон или включён режим "Только видимые ячейки" (Alt + ;).

Решение: Выделите весь столбец (Ctrl + Пробел) и убедитесь, что в строке состояния включена опция "Количество".

Совет: Если вы часто работаете с фильтрами, создайте пользовательскую функцию в VBA для удобства. Например:

Function VISIBLE_COUNT(rng As Range) As Long

VISIBLE_COUNT = rng.SpecialCells(xlCellTypeVisible).count

End Function

Теперь в любой ячейке можно использовать =VISIBLE_COUNT(A:A).

FAQ: Частые вопросы о подсчёте строк после фильтра

Можно ли посчитать видимые строки в Google Таблицах?

Да, в Google Sheets для этого используется функция =SUBTOTAL(3; A:A) или =SUBTOTAL(103; A:A) — аналогично Excel. Также работает строка состояния (внизу экрана).

Почему ПРОМЕЖУТОЧНЫЕ.ИТОГИ не учитывает пустые строки?

Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; ...) подсчитывает только непустые ячейки. Чтобы учесть все видимые строки (включая пустые), используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; ...) или АГРЕГАТ(3; 5; A:A).

Как посчитать уникальные значения в отфильтрованных данных?

Используйте комбинацию функций:

=СЧЁТЕСЛИМН(видимый_диапазон; "<>"&"") - СЧЁТЕСЛИМН(видимый_диапазон; видимый_диапазон; ">1")

Или (в Excel 365):

=УНИК(ФИЛЬТР(диапазон; видимые_строки))
Можно ли подсчитать строки по нескольким критериям фильтра?

Да. Примените фильтр по всем нужным критериям, затем используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ или АГРЕГАТ. Например, чтобы посчитать строки, где в столбце A значение "Да", а в B — больше 100:

  1. Примените фильтр по A = "Да" и B > 100.
  2. Используйте =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; A:A).
Как сохранить результат подсчёта после снятия фильтра?

Скопируйте ячейку с формулой и вставьте её как значение (ПКМ → Специальная вставка → Значения). Или используйте макрос, который записывает результат в отдельную ячейку:

Range("X1").Value = Application.WorksheetFunction.Subtotal(103, Range("A:A"))