Если вам нужно быстро определить количество ячеек с текстом в диапазоне 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: Комбинация СЧЁТЗ и СЧЁТ для чисел
Если в диапазоне есть и числа, и текст, а нужно посчитать только текстовые ячейки, используйте разность:
=СЧЁТЗ(диапазон) - СЧЁТ(диапазон)
Разберём на примере:
| Ячейка | Значение | Тип данных |
|---|---|---|
| A1 | 100 | Число |
| 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: Фильтрация данных для визуального подсчёта
Если формулы кажутся сложными, используйте встроенную фильтрацию:
- Выделите диапазон с данными.
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Раскройте выпадающий список в заголовке столбца.
- В разделе
Текстовые фильтрывыберитеСодержит...и введите*(или оставьте поле пустым для отображения всех текстовых ячеек). - Excel отобразит только текстовые строки — их количество будет в статусной строке (внизу окна).
Преимущества метода:
- 👁️ Визуальная проверка данных перед подсчётом.
- 🔄 Возможность быстро скорректировать критерии (например, исключить ячейки с пробелами).
Недостатки:
- ⏳ Требует ручных действий — не подходит для автоматизации.
- 📊 Не возвращает результат в ячейку (только отображение в статусной строке).
Способ 5: Пользовательская функция на VBA
Для регулярного подсчёта текстовых ячеек с дополнительными условиями (например, игнорирование пробелов) создайте пользовательскую функцию:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Вставка→Модуль. - Добавьте код:
Function CountTextCells(rng As Range) As LongDim 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
- Сохраните файл как
.xlsm(с поддержкой макросов). - Используйте функцию в 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 LongDim 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. =СУММПРОИЗВ(--(ЕТЕКСТ(диапазон))) — точный подсчёт с учётом формул, возвращающих текст.-->