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

Работа с большими таблицами в Microsoft Excel часто требует анализа данных: сколько ячеек содержат текст, а сколько пустые? Эта задача возникает при обработке анкет, инвентаризации товаров или проверке заполненности отчётов. Без правильных инструментов подсчёт может занять часы ручной работы — особенно если строк тысячи.

К счастью, в Excel есть несколько способов автоматизировать этот процесс: от элементарных функций вроде СЧЁТЗ до комбинированных формул с ЕСЛИ и ДЛСТР. В этой статье разберём все методы — от самых простых до продвинутых, — чтобы вы могли выбрать оптимальный вариант для своей задачи. А ещё покажем, как избежать типичных ошибок при подсчёте и почему иногда пустые ячейки с формулами портят всю статистику.

1. Базовый метод: функция СЧЁТЗ для подсчёта непустых ячеек

Начнём с самого простого — функции СЧЁТЗ (англ. COUNTA). Она считает все непустые ячейки в указанном диапазоне, включая текст, числа, даты и даже ошибки. Это универсальный инструмент, но с важной оговоркой: СЧЁТЗ не различает типы данных.

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

=СЧЁТЗ(A1:A100)

Эта формула вернёт количество заполненных ячеек в столбце A с 1-й по 100-ю строку. Но что если среди них есть числа или даты? Для чистого подсчёта только текста этот метод не подходит — потребуются дополнительные условия.

  • ✅ Подходит для быстрого анализа заполненности диапазона
  • ✅ Работает во всех версиях Excel (включая Excel 2003)
  • ❌ Не различает текст, числа и другие типы данных
  • ❌ Считает ячейки с формулами, даже если они возвращают пустое значение ("")

2. Точный подсчёт текста: комбинация СЧЁТЕСЛИ и символа *

Чтобы посчитать исключительно текстовые ячейки, используйте функцию СЧЁТЕСЛИ (англ. COUNTIF) с подстановочным знаком *. Этот символ в Excel означает "любой набор символов", то есть формула будет искать ячейки, содержащие хотя бы один текстовый символ.

Синтаксис:

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

Эта формула проигнорирует числа, даты, логические значения (ИСТИНА/ЛОЖЬ) и пустые ячейки, но учтёт:

  • 📝 Ячейки с любым текстом (включая пробелы)
  • 📝 Ячейки с текстом + числами (например, "Артикул 123")
  • 📝 Ячейки с формулами, возвращающими текст (например, =ЕСЛИ(A1>0; "Да"; ""), если результат "Да")
⚠️ Внимание: Если в ячейке содержится только число (даже если оно отформатировано как текст), СЧЁТЕСЛИ с * его проигнорирует. Для таких случаев нужен другой подход (см. раздел 4).
Тип данных в ячейке СЧЁТЗ СЧЁТЕСЛИ(;"*")
Текст ("Привет") ✅ Считает ✅ Считает
Число (123) ✅ Считает ❌ Игнорирует
Текст + число ("Код 123") ✅ Считает ✅ Считает
Пустая ячейка ❌ Игнорирует ❌ Игнорирует
Формула, возвращающая "" ✅ Считает ❌ Игнорирует

3. Подсчёт текста с учётом регистра: функция НАЙТИ

Иногда важно учитывать регистр символов. Например, если в таблице есть ячейки с текстом "ДА" и "да", и их нужно посчитать отдельно. Стандартная СЧЁТЕСЛИ регистр не различает, но эту задачу можно решить с помощью функции НАЙТИ (англ. FIND) в массиве.

Формула для подсчёта ячеек с текстом "ДА" (точное совпадение с учётом регистра):

=СУММ(--НЕОШ(НАЙТИ("ДА"; A1:A100)))

Разберём, как это работает:

  1. НАЙТИ("ДА"; A1:A100) — ищет подстроку "ДА" в каждой ячейке диапазона. Если не находит, возвращает ошибку #ЗНАЧ!.
  2. НЕОШ (англ. IFERROR) — заменяет ошибки на ЛОЖЬ, а успешные поиски на ИСТИНА.
  3. -- — преобразует ИСТИНА/ЛОЖЬ в 1/0 для суммирования.
  4. СУММ — складывает все единицы, давая итоговый count.
Почему не работает СЧЁТЕСЛИ с учётом регистра?

Функция СЧЁТЕСЛИ в Excel не чувствительна к регистру, так как использует неточное сравнение. Для точного поиска приходится применять НАЙТИ или ПОИСК (англ. SEARCH), но последний тоже игнорирует регистр. Единственный надёжный способ — формулы массива, как показано выше.

4. Продвинутый подход: ДЛСТР для проверки текста в числовых ячейках

Как быть, если в ячейке хранится число, отформатированное как текст? Например, артикул "00123" или телефон "+79123456789". Функция СЧЁТЕСЛИ(;"*") такие ячейки проигнорирует, потому что технически они содержат числа. Решение — использовать ДЛСТР (англ. LEN), которая возвращает длину строки.

Формула для подсчёта всех непустых ячеек, кроме чисел:

=СУММПРОИЗВ(--(ДЛСТР(A1:A100)>0); --(ЕЧИСЛО(A1:A100)=ЛОЖЬ))

Логика:

  • 🔢 ДЛСТР(A1:A100)>0 — проверяет, что ячейка не пустая.
  • 🔢 ЕЧИСЛО(A1:A100)=ЛОЖЬ — исключает ячейки с числами.
  • 🔢 СУММПРОИЗВ — умножает два условия и суммирует результаты.
⚠️ Внимание: Эта формула требует ввода как формула массива (в старых версиях Excel нажимайте Ctrl+Shift+Enter). В Excel 365 и Excel 2019 работает без этого.
📊 Какой метод подсчёта текста вы используете чаще?
СЧЁТЕСЛИ с *
ДЛСТР + ЕЧИСЛО
Фильтр по цвету
Ручной подсчёт
Другой

5. Подсчёт с учётом форматирования: фильтр по цвету или стилю

Иногда текстовые данные выделены определённым цветом или стилем (например, жирный шрифт для заголовков). В таких случаях можно использовать Фильтр по цвету + ПРОСМОТР (англ. SUBTOTAL).

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

  1. Выделите диапазон с данными.
  2. Нажмите Данные → Фильтр (или Ctrl+Shift+L).
  3. Откройте выпадающий список в заголовке столбца и выберите Фильтр по цвету → [нужный цвет].
  4. Внизу таблицы добавьте формулу: =ПРОСМОТР(9; A2:A100), где 9 — код функции для подсчёта видимых строк.

Этот метод полезен, когда текстовые данные визуально отделены от остальных. Например, в отчётах часто заголовки строк выделяют синим цветом, а комментарии — зелёным.

Удалить лишние пробелы функцией СЖПРОБЕЛЫ|Проверить формат ячеек (текст/число/дата)|Исключить скрытые строки|Учесть ячейки с формулами, возвращающими ""

-->

6. Автоматизация: макрос VBA для сложных условий

Если вам нужно регулярно считать текстовые строки по комплексным критериям (например, "текст длиной >5 символов И не содержащий слово 'тест'"), проще написать макрос на VBA. Вот пример кода для подсчёта ячеек с текстом в выделенном диапазоне:

Sub CountTextCells()

Dim rng As Range

Dim cell As Range

Dim count As Long

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

count = 0

For Each cell In rng

If WorksheetFunction.IsText(cell) Then

count = count + 1

End If

Next cell

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

End Sub

Чтобы использовать этот макрос:

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

Преимущество VBA — гибкость. Например, можно модифицировать код, чтобы учитывать:

  • 📌 Текст определённой длины
  • 📌 Текст, содержащий/не содержащий ключевые слова
  • 📌 Текст с конкретным форматированием

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

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

  1. Ячейки с формулами, возвращающими "": СЧЁТЗ посчитает их как непустые, хотя визуально они выглядят пустыми. Решение — использовать ЕПУСТО (англ. ISBLANK) для дополнительной проверки.
  2. Числа, отформатированные как текст: СЧЁТЕСЛИ(;"*") их проигнорирует. Решение — комбинация ДЛСТР + ЕЧИСЛО, как в разделе 4.
  3. Скрытые символы: Пробелы, табуляции или неразрывные пробелы (CHAR(160)) могут остаться незамеченными. Решение — очистка функцией СЖПРОБЕЛЫ или ПЕЧСИМВ (англ. CLEAN).

Проверьте себя: если ваша формула возвращает неожиданное значение, сначала убедитесь, что:

  • 🔍 В диапазоне нет скрытых строк (используйте ПРОСМОТР для видимых ячеек).
  • 🔍 Все ячейки имеют правильный формат (текст/общий, а не дата или число).
  • 🔍 Нет лишних пробелов (проверьте с помощью =ДЛСТР(A1)=ЛЕН(СЖПРОБЕЛЫ(A1))).

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

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

Да, все описанные функции работают и в Google Sheets, за исключением макросов VBA (там используется Google Apps Script). Для подсчёта текста используйте:

=COUNTIF(A1:A100; "*")

Или для учёта регистра:

=SUMPRODUCT(--(REGEXMATCH(A1:A100; "ДА")))
Почему СЧЁТЕСЛИ(;"*") не считает ячейки с числами, отформатированными как текст?

Функция СЧЁТЕСЛИ с * ищет текстовые строки, а числа — даже отформатированные как текст — технически остаются числами. Чтобы их посчитать, используйте:

=СУММ(--(ЕТЕКСТ(A1:A100)))

где ЕТЕКСТ (англ. ISTEXT) проверяет, является ли содержимое ячейки текстом.

Как посчитать строки, где текст содержит определённое слово?

Используйте СЧЁТЕСЛИ с подстановочным знаком:

=СЧЁТЕСЛИ(A1:A100; "слово")

Для регистронезависимого поиска (например, "привет" и "Привет"):

=СУММ(--НЕОШ(ПОИСК("слово"; A1:A100)))
Можно ли посчитать текстовые строки в фильтрованном диапазоне?

Да, используйте функцию ПРОСМОТР (англ. SUBTOTAL) с кодом 103 (для СЧЁТЗ) или комбинацией ПРОСМОТР + ЕТЕКСТ:

=СУММПРОИЗВ(--(ЕТЕКСТ(A2:A100)); --(ПОДСТАВИТЬ(A2:A100; ""; "")<>""))

Эта формула учитывает только видимые строки после фильтрации.

Как посчитать пустые текстовые ячейки (где должен быть текст, но его нет)?

Если нужно найти ячейки, которые должны содержать текст (например, по шаблону), но пустые, используйте условное форматирование или формулу:

=СЧЁТЕСЛИ(B1:B100; "") - СЧЁТЕСЛИ(A1:A100; "<>текст")

Где B1:B100 — столбец с данными, а A1:A100 — столбец с условием (например, "текст" означает, что ячейка в B должна быть заполнена).