Как посчитать ячейки с текстом в Excel: формулы, фильтры и скрытые приёмы

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

В 90% случаев достаточно формулы =СЧЁТЕСЛИ(диапазон; ""), где обозначает «любой текст». Однако этот метод не различает пустые ячейки и ячейки с формулами, возвращающими пустую строку (""). Для точного подсчёта придётся комбинировать функции или применять пользовательские решения. Ниже разберём все варианты — от базовых до продвинутых, с учётом нюансов разных версий Excel (2010–2023 и Microsoft 365).

Почему стандартный СЧЁТ не работает с текстом

Функция СЧЁТ в Excel предназначена исключительно для подсчёта ячеек с числовыми значениями, включая даты и время (они хранятся как числа). Текстовые строки, логические значения (ИСТИНА/ЛОЖЬ), ошибки (#ДЕЛ/0!) и пустые ячейки игнорируются. Это не баг, а заложенная логика:

  • 📊 Числа: 5, 3,14, 10% (хранится как 0.1).
  • Игнорируется: "Привет", ИСТИНА, #Н/Д, пустая ячейка.
  • ⚠️ Исключение: текст, приведённый к числу формулой (например, =--"123"), будет посчитан.

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

⚠️ Внимание: Функция СЧЁТЕСЛИ с критерием ">0" не поможет — она тоже игнорирует текст. Используйте "*" или "??" для обозначения текстовых шаблонов.

Способ 1: Функция СЧЁТЕСЛИ с подстановочным знаком

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

=СЧЁТЕСЛИ(диапазон; "*")

Пример: =СЧЁТЕСЛИ(A1:A100; "*") вернёт количество ячеек с текстом в столбце A (строки 1–100). Преимущества метода:

  • ✅ Работает во всех версиях Excel (2003–2023) и Google Таблицах.
  • ✅ Учитывает ячейки с формулами, возвращающими текст (например, =ЕСЛИ(...; "Да"; "Нет")).
  • ✅ Быстро обрабатывает большие диапазоны (до 1 млн строк).

Ограничения:

  • ❌ Не различает пустые ячейки ("") и ячейки с пробелами (" ").
  • ❌ Считает ошибки (#ЗНАЧ!) как текст, если они отображаются в ячейке.

Способ 2: Комбинация СЧЁТЗ и СЧЁТ для чисел

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

=СЧЁТЗ(диапазон) - СЧЁТ(диапазон)

Разберём на примере:

ЯчейкаЗначениеТип данных
A1100Число
A2"Текст"Текст
A3#ДЕЛ/0!Ошибка
A4пустоПустая
A5=СЕГОДНЯ()Дата (число)

Формула =СЧЁТЗ(A1:A5) - СЧЁТ(A1:A5) вернёт 1 (только A2), потому что:

  • СЧЁТЗ(A1:A5) = 4 (все кроме A4).
  • СЧЁТ(A1:A5) = 2 (A1 и A5 как числа).
  • Ошибка A3 и текст A2 учитываются в СЧЁТЗ, но только числа — в СЧЁТ.
⚠️ Внимание: Этот метод не отличает текст от ошибок. Если в диапазоне есть #ЗНАЧ! или #Н/Д, они будут посчитаны как «текст». Для их исключения добавьте проверку ЕОШИБКА.

Способ 3: Функция СУММПРОИЗВ для сложных условий

Если нужно посчитать текстовые ячейки с дополнительными критериями (например, длиной строки или конкретным содержимым), используйте СУММПРОИЗВ. Базовый синтаксис:

=СУММПРОИЗВ(--(ЕТЕКСТ(диапазон)))

Функция ЕТЕКСТ возвращает ИСТИНА для ячеек с текстом (включая пустые строки ""). Двойной минус (--) преобразует логические значения в 1 и 0 для суммирования.

Примеры:

  • 🔹 Подсчёт ячеек с текстом длиной > 5 символов: =СУММПРОИЗВ(--(ЕТЕКСТ(A1:A100)); --(ДЛСТР(A1:A100)>5))
  • 🔹 Подсчёт ячеек, содержащих слово "урок": =СУММПРОИЗВ(--(ЕТЕКСТ(A1:A100)); --(НЕ(ЕОШ(ПОИСК("урок"; A1:A100)))))
Как ввести формулу массива в старых версиях Excel (2010–2019)

После ввода формулы нажмите Ctrl+Shift+Enter (вместо обычного Enter). Excel автоматически обернёт формулу в фигурные скобки {...}. В Excel 365 и 2021 это не требуется — формулы массива поддерживаются по умолчанию.

Способ 4: Фильтрация данных для визуального подсчёта

Если формулы кажутся сложными, используйте встроенную фильтрацию:

  1. Выделите диапазон с данными.
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Раскройте выпадающий список в заголовке столбца.
  4. В разделе Текстовые фильтры выберите Содержит... и введите * (или оставьте поле пустым для отображения всех текстовых ячеек).
  5. Excel отобразит только текстовые строки — их количество будет в статусной строке (внизу окна).

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

  • 👁️ Визуальная проверка данных перед подсчётом.
  • 🔄 Возможность быстро скорректировать критерии (например, исключить ячейки с пробелами).

Недостатки:

  • ⏳ Требует ручных действий — не подходит для автоматизации.
  • 📊 Не возвращает результат в ячейку (только отображение в статусной строке).
📊 Какой способ подсчёта текстовых ячеек вы используете чаще?
Формулы (СЧЁТЕСЛИ, СУММПРОИЗВ)
Фильтрация данных
Макросы/VBA
Другое

Способ 5: Пользовательская функция на VBA

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: ВставкаМодуль.
  3. Добавьте код:
    Function CountTextCells(rng As Range) As Long
    

    Dim cell As Range

    Dim count As Long

    count = 0

    For Each cell In rng

    If VarType(cell.Value) = vbString And Trim(cell.Value) <> "" Then

    count = count + 1

    End If

    Next cell

    CountTextCells = count

    End Function

  4. Сохраните файл как .xlsm (с поддержкой макросов).
  5. Используйте функцию в Excel: =CountTextCells(A1:A100).

Особенности функции:

  • 🔍 Учитывает только непустые текстовые строки (игнорирует пробелы).
  • 🚫 Не считает ячейки с формулами, возвращающими текст (например, =ЕСЛИ(...; "Да"; "")).
  • ⚡ Работает в 5–10 раз быстрее, чем СУММПРОИЗВ на больших диапазонах.
⚠️ Внимание: Макросы отключены по умолчанию в Excel. Чтобы функция заработала, разрешите выполнение макросов в ФайлПараметрыЦентр управления безопасностьюПараметры центра...Включить все макросы (не рекомендуется для файлов из ненадёжных источников).

Способ 6: Подсчёт текстовых ячеек с учётом регистра

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

  • 🔠 Формула массива (для Excel 365 или 2021):
    =СУММ(--(ЕТЕКСТ(A1:A100); --(A1:A100=ПРОПИСН(A1:A100))))

    Подсчитывает ячейки, где текст полностью в верхнем регистре.

  • 📝 VBA-функция для гибких условий:
    Function CountCaseSensitive(rng As Range, caseType As String) As Long
    

    Dim cell As Range, count As Long

    count = 0

    For Each cell In rng

    If VarType(cell.Value) = vbString Then

    Select Case caseType

    Case "UPPER": If cell.Value = UCase(cell.Value) Then count = count + 1

    Case "LOWER": If cell.Value = LCase(cell.Value) Then count = count + 1

    End Select

    End If

    Next

    CountCaseSensitive = count

    End Function

    Использование: =CountCaseSensitive(A1:A100; "UPPER") для подсчёта ячеек в верхнем регистре.

Пример задачи: в столбце B перемешаны коды товаров в разном регистре ("ABC123", "abc123"). Чтобы посчитать уникальные коды без учёта регистра, используйте:

=СЧЁТЕСЛИ(ПРОПНАЧ(B1:B100); ПРОПНАЧ(B1))

Ошибки и нюансы при подсчёте текстовых ячеек

Даже с правильными формулами результат может быть неточным. Распространённые причины:

ПроблемаПричинаРешение
Формула возвращает 0, хотя текст есть Ячейки содержат '' (апостроф) перед текстом или форматированы как текст, но пусты Используйте =СЧЁТЕСЛИ(диапазон; "*") или проверьте ячейки на скрытые символы функцией ЧИСТ
Считаются пустые ячейки Формулы возвращают "" (пустую строку) Добавьте условие длины: =СУММПРОИЗВ(--(ДЛСТР(диапазон)>0))
Ошибки (#ЗНАЧ!) считаются как текст СЧЁТЕСЛИ воспринимает ошибки как текстовые значения Комбинируйте с ЕОШИБКА: =СУММПРОИЗВ(--(ЕТЕКСТ(диапазон)); --(НЕ(ЕОШИБКА(диапазон))))

Критичный нюанс: если данные импортированы из внешних источников (CSV, базы данных), текстовые ячейки могут содержать непечатаемые символы (например, CHAR(160) — неразрывный пробел). Чтобы их очистить, используйте:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; CHAR(160); " "); CHAR(13); "")

Удалите лишние пробелы функцией СЖПРОБЕЛЫ|Проверьте ячейки на скрытые символы с КОДСИМВ|Убедитесь, что в диапазоне нет ошибок (#ЗНАЧ!)|Используйте ЕПУСТО для исключения пустых ячеек-->

FAQ: Частые вопросы по подсчёту текстовых ячеек

Можно ли посчитать ячейки с текстом определённого цвета?

Стандартными функциями — нет. Используйте VBA или надстройку Get.Cell (требует установки). Пример кода:

Function CountColoredCells(rng As Range, color As Range) As Long

Dim cell As Range, count As Long, targetColor As Long

targetColor = color.Interior.Color

count = 0

For Each cell In rng

If cell.Interior.Color = targetColor And VarType(cell.Value) = vbString Then

count = count + 1

End If

Next

CountColoredCells = count

End Function

Вызов: =CountColoredCells(A1:A100; B1), где B1 — ячейка с нужным цветом фона.

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

Функции СЧЁТЕСЛИ и СУММПРОИЗВ игнорируют скрытые строки. Используйте:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; диапазон)

Где 103 — код функции СЧЁТ для видимых ячеек. Для текста комбинируйте с ЕТЕКСТ:

=СУММПРОИЗВ(--(ЕТЕКСТ(диапазон)); --(ПОДИТОГ(103; диапазон)))
Почему СЧЁТЕСЛИ не считает ячейки с формулами, возвращающими текст?

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

=СУММПРОИЗВ(--(ДЛСТР(диапазон)>0))

Эта формула учитывает любые непустые ячейки, включая те, где формула возвращает "" (длина > 0).

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

Для Excel 365 и 2021 используйте УНИК + СЧЁТ:

=СЧЁТ(УНИК(ФИЛЬТР(диапазон; ЕТЕКСТ(диапазон))))

Для старых версий — комбинация СУММПРОИЗВ и ЧАСТОТА:

=СУММ(--(ЧАСТОТА(ИНДЕКС(диапазон; ПОРЯДПОВ(диапазон; диапазон)); ИНДЕКС(диапазон; ПОРЯДПОВ(диапазон; диапазон)))>0))

Требует ввода как формулы массива (Ctrl+Shift+Enter в Excel 2010–2019).

1. =СЧЁТЕСЛИ(диапазон; "*") — быстрый подсчёт всех текстовых ячеек.

2. =СУММПРОИЗВ(--(ЕТЕКСТ(диапазон))) — точный подсчёт с учётом формул, возвращающих текст.-->