Как посчитать строки в Excel: все способы от базовых до продвинутых

Почему подсчёт строк в Excel — это не так просто, как кажется

На первый взгляд, задача подсчитать количество строк в Excel выглядит элементарной. Но на практике пользователи сталкиваются с десятками нюансов: нужно ли учитывать пустые строки? А скрытые? Как быть с отфильтрованными данными или динамическими диапазонами? Оказывается, что универсального решения "одной кнопкой" не существует — всё зависит от конкретной задачи.

В этой статье мы разберём 7 различных методов подсчёта строк — от базовых функций вроде СЧЁТЗ до продвинутых формул массивов и VBA-скриптов. Вы узнаете, какой способ выбрать для статических таблиц, а какой подойдёт для динамически изменяющихся данных. Особое внимание уделим типичным ошибкам, которые искажают результаты, и покажем, как их избежать.

Способ 1: Простой подсчёт видимых строк (включая пустые)

Если вам нужно узнать общее количество строк в диапазоне — включая пустые, скрытые и отфильтрованные — достаточно воспользоваться базовой функцией СТРОКА в комбинации с МАКС. Этот метод работает даже в самых старых версиях Excel (начиная с Excel 97).

Формула выглядит так:

=МАКС(ЕСЛИ(А:А<>"";СТРОКА(А:А);0))

Но есть нюанс: в Excel 365 и 2019+ эту формулу нужно вводить как формулу массива (нажать Ctrl+Shift+Enter в старых версиях). В новых редакциях она срабатывает автоматически.

  • ✅ Подходит для: быстрого определения последней заполненной строки в столбце
  • ⚠️ Ограничение: не учитывает скрытые строки (они остаются в подсчёте)
  • 📌 Альтернатива: =СЧЁТЗ(А:А) — считает только непустые ячейки
⚠️ Внимание: Если в вашем столбце есть ячейки с формулами, которые возвращают пустую строку (""), функция СЧЁТЗ посчитает их как заполненные. Чтобы исключить такие случаи, используйте =СУММПРОИЗВ(--(А:А<>"")).

Способ 2: Подсчёт только непустых строк (игнорируем пустоты)

Когда требуется посчитать строки только с данными, игнорируя пустые ячейки, на помощь приходят функции СЧЁТЗ (для любых непустых ячеек) и СЧЁТ (только для чисел). Разберём их различия:

ФункцияПодсчитываетПримерОсобенности
СЧЁТЗВсе непустые ячейки (текст, числа, ошибки)=СЧЁТЗ(A1:A100)Игнорирует только полностью пустые ячейки
СЧЁТТолько ячейки с числами=СЧЁТ(A1:A100)Текст и ошибки (#Н/Д) не учитывает
СЧИТАТЬПУСТОТЫТолько пустые ячейки=СЧИТАТЬПУСТОТЫ(A1:A100)Полная противоположность СЧЁТЗ

Для подсчёта строк с конкретным условием (например, только строки с текстом "Да" или числами больше 100) используйте СЧЁТЕСЛИ:

=СЧЁТЕСЛИ(A1:A100; ">100")  

=СЧЁТЕСЛИ(A1:A100; "Да")

📊 Какой функцией вы чаще всего подсчитываете строки?
СЧЁТЗ
СЧЁТ
СЧЁТЕСЛИ
Другой вариант

Способ 3: Подсчёт строк в отфильтрованном диапазоне

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

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A1:A100)  

Коды функций для ПРОМЕЖУТОЧНЫЕ.ИТОГИ:

  • 🔢 2 — подсчёт непустых ячеек (СЧЁТ)
  • 🔢 3 — подсчёт всех непустых ячеек (СЧЁТЗ)
  • 🔢 9 — сумма видимых ячеек
⚠️ Внимание: Если вы применяете ПРОМЕЖУТОЧНЫЕ.ИТОГИ к диапазону с ручным скрытием строк (не через фильтр), функция посчитает и эти строки. Чтобы исключить их, комбинируйте с ПОДСТАВИТЬ или VBA.

Убедитесь, что фильтр применён|Проверьте диапазон на ручное скрытие строк|Используйте код функции 3 для СЧЁТЗ|Обновите данные (F9) перед подсчётом-->

Способ 4: Подсчёт строк в динамическом диапазоне (таблицы Excel)

Если ваши данные оформлены как умная таблица Excel (Ctrl+T), для подсчёта строк используйте структурированные ссылки. Это автоматически учитывает добавление/удаление строк:

=СЧЁТЗ(Таблица1[Столбец1])  

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

  • 🔄 Автоматическое обновление при изменении диапазона
  • 📊 Совместимость с Power Query и Power Pivot
  • 🔍 Возможность использовать в сводных таблицах

Для подсчёта уникальных строк в динамической таблице комбинируйте с УНИК (Excel 365):

=СТРОКА(УНИК(Таблица1[Столбец1]))  
Как преобразовать обычный диапазон в умную таблицу?

Выделите диапазон → Нажмите Ctrl+T → Убедитесь, что отмечена галочка "Таблица с заголовками" → Нажмите OK. Теперь ваш диапазон стал динамической таблицей с автоматическим расширением.

Способ 5: Продвинутые формулы массивов для сложных условий

Когда стандартных функций недостаточно, на помощь приходят формулы массивов. Например, чтобы посчитать строки, где одновременно выполняются несколько условий (например, столбец A содержит "Да", а столбец B — число >100), используйте:

=СУММПРОИЗВ(--(A1:A100="Да"); --(B1:B100>100))

Другие полезные примеры:

=МАКС(ЕСЛИ(OFFSET(A1;0;0;СЧЁТЗ(A:A);1)<>""; СТРОКА(OFFSET(A1;0;0;СЧЁТЗ(A:A);1))))  

=ИНДЕКС(СТРОКА(A1:A100); ПОИСКПОЗ(МАКС(ЕСЛИ(A1:A100<>""; СТРОКА(A1:A100))); СТРОКА(A1:A100); 0))

⚠️ Внимание: Формулы массивов в Excel 365 могут вести себя иначе, чем в Excel 2019 или более ранних версиях. Например, в новых редакциях не требуется нажимать Ctrl+Shift+Enter, но зато появляются "разливающиеся" массивы, которые автоматически заполняют соседние ячейки.

Способ 6: Подсчёт строк с помощью VBA (для автоматизации)

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

Sub CountNonEmptyRows()

Dim rng As Range

Dim count As Long

Set rng = Selection

count = WorksheetFunction.CountA(rng)

MsgBox "Количество непустых строк: " & count

End Sub

Для подсчёта видимых строк (с учётом фильтров) используйте:

Sub CountVisibleRows()

Dim rng As Range

Dim count As Long

Set rng = Selection.SpecialCells(xlCellTypeVisible)

count = rng.Rows.Count

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

End Sub

Как запустить макрос:

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

Способ 7: Подсчёт строк в Power Query (для больших данных)

Если вы работаете с большими наборами данных (100 000+ строк), обычные функции Excel могут тормозить. В этом случае используйте Power Query:

  1. Выделите диапазон → Данные → Из таблицы/диапазона
  2. В редакторе Power Query добавьте пользовательский столбец с формулой =1
  3. Группируйте данные по этому столбцу с операцией Сумма
  4. Результат — количество строк в исходном диапазоне

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

  • 🚀 Обработка миллионов строк без зависаний
  • 🔄 Автоматическое обновление при изменении данных
  • 📂 Возможность объединять данные из нескольких файлов

Частые ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при подсчёте строк. Вот TOP-5 ловушек и способы их обхода:

ОшибкаПричинаРешение
Формула возвращает 0Диапазон указан неверно или содержит только пустые ячейкиПроверьте диапазон функцией ВЫДЕЛИТЬ.ПУСТОТЫ (Ctrl+G → Выделить → Пустые ячейки)
Подсчёт скрытых строкИспользована обычная функция вместо ПРОМЕЖУТОЧНЫЕ.ИТОГИЗамените на =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон)
Ошибка #ЗНАЧ! в формулах массивовВ старых версиях Excel не нажато Ctrl+Shift+EnterПеревведите формулу с правильной комбинацией клавиш
Неправильный подсчёт строк с формуламиФункция СЧЁТЗ считает ячейки с формулами, возвращающими ""Используйте =СУММПРОИЗВ(--(ДЛСТР(A1:A100)>0))
Макрос не работаетОтключены макросы в настройках безопасностиВключите макросы: Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы

FAQ: Ответы на частые вопросы

Как посчитать строки в Excel онлайн (веб-версия)?

В Excel Online доступны те же функции, что и в десктопной версии: СЧЁТЗ, СЧЁТЕСЛИ, ПРОМЕЖУТОЧНЫЕ.ИТОГИ. Однако формулы массивов (вводимые через Ctrl+Shift+Enter) здесь не работают. Используйте альтернативы:

=СУММПРОИЗВ(--(A1:A100<>""))  

Также в веб-версии нет поддержки VBA и Power Query.

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

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

  • СЧЁТЗ, СЧЁТ и другие стандартные функции работают
  • ❌ Формулы массивов могут не обновляться автоматически
  • ❌ Макросы VBA не выполняются, если лист защищён

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

Как посчитать строки в сводной таблице?

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

  1. Перетащите поле в область Значения
  2. Нажмите на стрелку рядом с Сумма по...Параметры полей значений
  3. Выберите Количество вместо Сумма

Для подсчёта уникальных строк используйте Число уникальных значений (доступно в Excel 2013+).

Почему функция СЧЁТЗ считает пустые ячейки?

Это происходит, если в ячейках есть невидимые символы (пробелы, символы переноса) или форматирование (например, ячейка отформатирована как текст, но выглядит пустой). Чтобы очистить такие ячейки:

  1. Выделите диапазон → Найти и выделить → Заменить (Ctrl+H)
  2. В поле "Найти" введите пробел, в поле "Заменить на" оставьте пустым
  3. Нажмите Заменить всё

Для удаления всех непечатаемых символов используйте формулу: =ПЕЧСИМВ(A1).

Как посчитать строки в Google Таблицах?

В Google Sheets работают те же принципы, что и в Excel, но есть нюансы:

  • =COUNTA(A1:A100) — аналог СЧЁТЗ
  • =SUBTOTAL(3; A1:A100) — аналог ПРОМЕЖУТОЧНЫЕ.ИТОГИ
  • ✅ Формулы массивов работают без Ctrl+Shift+Enter, но требуют фигурных скобок: =ARRAYFORMULA(MAX(IF(A1:A100<>""; ROW(A1:A100))))
  • ❌ Нет поддержки VBA, но есть Google Apps Script (аналог для автоматизации)