Работа с текстовыми данными в Microsoft Excel — одна из самых распространённых задач. Часто пользователям нужно быстро определить, сколько ячеек в диапазоне содержат текстовые значения, а не числа, даты или пустые поля. Например, при анализе анкет, обработке баз данных или проверке заполненности форм. В этой статье мы разберём все возможные способы подсчёта текстовых ячеек — от простых встроенных функций до продвинутых инструментов вроде Power Query.
Многие ошибочно полагают, что для этой задачи достаточно функции СЧЁТ или СЧЁТЗ, но они учитывают все непустые ячейки, включая числа. Между тем, в Excel есть специализированные функции и приёмы, которые позволяют точечно работать именно с текстовыми данными. Мы рассмотрим не только стандартные решения, но и обходные пути для сложных случаев — например, когда текст смешан с числами или когда нужно игнорировать пробелы.
Если вы регулярно работаете с большими массивами данных, умение быстро подсчитывать текстовые ячейки сэкономит вам часы времени. Особенно это актуально для бухгалтеров, маркетологов и аналитиков, которые ежедневно сталкиваются с необходимостью структурировать и проверять данные.
═══
1. Функция СЧЁТЕСЛИ — самый простой способ
Функция СЧЁТЕСЛИ — это универсальный инструмент для подсчёта ячеек, соответствующих заданному критерию. Для текстовых данных она становится особенно полезной, так как позволяет использовать подстановочные знаки.
Базовый синтаксис функции:
=СЧЁТЕСЛИ(диапазон; критерий)
Чтобы посчитать все текстовые ячейки в диапазоне, используйте критерий "" (звёздочка). Этот символ обозначает любую последовательность символов. Например, формула =СЧЁТЕСЛИ(A1:A100; "") вернёт количество ячеек с любым текстом в столбце A с 1 по 100 строки.
Важно понимать, что СЧЁТЕСЛИ учитывает любые непустые ячейки, включая числа и даты, если они отформатированы как текст. Чтобы исключить числа, можно использовать комбинацию с функцией ЕТЕКСТ (о ней поговорим позже).
Пример с подстановочными знаками:
- 🔹
=СЧЁТЕСЛИ(A1:A100; "привет*")— посчитает ячейки, начинающиеся на "привет" - 🔹
=СЧЁТЕСЛИ(A1:A100; "отчёт")— найдёт все ячейки, содержащие слово "отчёт" - 🔹
=СЧЁТЕСЛИ(A1:A100; "???")— посчитает ячейки с ровно 3 символами
2. Комбинация ЕТЕКСТ + СЧЁТЕСЛИ для точного подсчёта
Функция ЕТЕКСТ (или ISTEXT в английской версии) проверяет, содержит ли ячейка текстовое значение. Она возвращает ИСТИНА, если ячейка содержит текст, и ЛОЖЬ в противном случае. Сама по себе ЕТЕКСТ не подсчитывает ячейки, но в сочетании с другими функциями становится мощным инструментом.
Чтобы посчитать количество текстовых ячеек, используйте ЕТЕКСТ вместе с СУММПРОИЗВ:
=СУММПРОИЗВ(--ЕТЕКСТ(A1:A100))
Здесь двойной дефис (--) преобразует значения ИСТИНА/ЛОЖЬ в 1/0, а СУММПРОИЗВ суммирует единицы.
Преимущество этого метода в том, что он игнорирует числа, даты и логические значения, учитывая только настоящий текст. Это особенно полезно, если в вашем диапазоне смешаны разные типы данных.
Альтернативный вариант с СУММ и ЕСЛИ:
=СУММ(ЕСЛИ(ЕТЕКСТ(A1:A100); 1; 0))
Эта формула массива (вводится нажатием Ctrl+Shift+Enter в старых версиях Excel) работает аналогично, но может быть менее производительной на больших диапазонах.
3. Функция СЧЁТЗ и её ограничения
Функция СЧЁТЗ (или COUNTA) подсчитывает все непустые ячейки в диапазоне, независимо от типа данных. Это значит, что она учитывает:
- 📄 Текстовые значения
- 🔢 Числа и даты
- 🗹 Логические значения (
ИСТИНА/ЛОЖЬ) - 🎨 Ячейки с формулами, возвращающими непустые результаты
Если ваш диапазон содержит только текст и пустые ячейки, СЧЁТЗ может показаться удобным решением. Однако в большинстве случаев она даёт завышенные результаты, так как не отличает текст от чисел. Например, в диапазоне с 5 текстовыми ячейками и 3 числовыми СЧЁТЗ вернёт 8, а не 5.
Когда стоит использовать СЧЁТЗ:
⚠️ Внимание: Эта функция подходит только для предварительной оценки, если вы уверены, что в диапазоне нет чисел или дат. В противном случае используйтеСЧЁТЕСЛИилиЕТЕКСТ.
| Функция | Подсчитывает | Учитывает числа? | Учитывает пустые ячейки? |
|---|---|---|---|
СЧЁТЕСЛИ(диапазон; "*") |
Текст и числа, отформатированные как текст | Да (если как текст) | Нет |
СУММПРОИЗВ(--ЕТЕКСТ(диапазон)) |
Только настоящий текст | Нет | Нет |
СЧЁТЗ(диапазон) |
Все непустые ячейки | Да | Нет |
4. Подсчёт текстовых ячеек с учётом регистра
По умолчанию Excel не различает регистр при подсчёте текстовых значений. Например, слова "Привет" и "привет" будут считаться одинаковыми. Если вам нужно учитывать регистр, придётся использовать пользовательскую функцию на VBA или обходной путь с ПОИСК и СЧЁТЕСЛИ.
Способ с ПОИСК (чувствителен к регистру):
=СУММ(--НЕОШИБКА(ПОИСК("Текст"; A1:A100)))
Эта формула массива ищет точное совпадение с учётом регистра. Например, если искать "Текст", то "текст" или "ТЕКСТ" найдены не будут.
Для полноценного подсчёта всех текстовых ячеек с учётом регистра потребуется VBA. Вот пример кода для пользовательской функции:
Function COUNTTEXT_CASESENSITIVE(rng As Range) As Long
Dim cell As Range
For Each cell In rng
If VarType(cell.Value) = vbString Then
COUNTTEXT_CASESENSITIVE = COUNTTEXT_CASESENSITIVE + 1
End If
Next cell
End Function
Чтобы использовать её:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel и используйте функцию как обычно:
=COUNTTEXT_CASESENSITIVE(A1:A100).
Почему стандартные функции Excel не чувствительны к регистру?
Большинство текстовых функций в Excel (включая СЧЁТЕСЛИ, НАЙТИ, ПОИСК) изначально проектировались для упрощения работы с данными, где регистр не важен. Это связано с историческими особенностями обработки текста в электронных таблицах, где приоритетом была скорость вычислений, а не точность сопоставления. Исключения — функции ПОИСК (чувствительна к регистру) и СРАВНИТЬ (также чувствительна).
5. Подсчёт текстовых ячеек с помощью Power Query
Power Query — это мощный инструмент для преобразования и анализа данных, доступный в Excel 2016 и новее (а также в Excel 2010/2013 как надстройка). Он позволяет гибко фильтровать и подсчитывать текстовые значения, особенно полезен для больших наборов данных.
Пошаговая инструкция:
- Выделите ваш диапазон и перейдите на вкладку
Данные → Получение данных → Из таблицы/диапазона. - В открывшемся редакторе Power Query выделите столбец с текстовыми данными.
- Нажмите
Преобразование → Формат → Текст(если данные не распознаны как текст автоматически). - Добавьте шаг фильтрации: нажмите на стрелку в заголовке столбца и выберите
Текстовые фильтры → Не равно → ""(пустая строка). - Перейдите на вкладку
Главная → Закрыть и загрузить в...и выберитеТаблица. - В результате вы получите отфильтрованные данные, а количество строк будет равно количеству текстовых ячеек.
Преимущества Power Query:
- 🔄 Автоматическое обновление при изменении исходных данных.
- 🛠️ Возможность комбинировать несколько условий (например, текст + определённая длина).
- 📊 Визуальный интерфейс для пользователей, не знакомых с формулами.
Убедитесь, что диапазон оформлен как таблица (Ctrl+T)
Проверьте отсутствие объединённых ячеек
Удалите лишние пробелы функцией СЖПРОБЕЛЫ
Сохраните файл перед началом работы-->
6. Подсчёт текстовых ячеек с учётом пробелов и непечатаемых символов
Часто текстовые ячейки содержат невидимые символы: пробелы, табуляции, переводы строк. Стандартные функции могут считать такие ячейки пустыми или, наоборот, учитывать их как заполненные. Чтобы избежать ошибок, используйте комбинацию функций для очистки данных.
Пример: подсчёт ячеек, содержащих хотя бы один печатаемый символ (игнорируя пробелы):
=СУММПРОИЗВ(--(ДЛСТР(СЖПРОБЕЛЫ(A1:A100))>0))
Здесь:
СЖПРОБЕЛЫ удаляет лишние пробелы,
ДЛСТР проверяет длину оставшегося текста,
СУММПРОИЗВ подсчитывает ячейки с ненулевой длиной.
Если вам нужно учитывать любые символы, включая пробелы, используйте:
=СУММПРОИЗВ(--(A1:A100<>""))
Для удаления непечатаемых символов (например, символов табуляции или разрыва строки) перед подсчётом используйте функцию ПЕЧСИМВ (или комбинацию ЗАМЕНИТЬ с СИМВОЛ):
=СЖПРОБЕЛЫ(ПЕЧСИМВ(A1))
⚠️ Внимание: ФункцияПЕЧСИМВдоступна только в Excel 2013 и новее. В старых версиях используйте формулу:=СЖПРОБЕЛЫ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1; СИМВОЛ(10); ""); СИМВОЛ(13); ""); СИМВОЛ(9); ""); " "; " "))Эта формула удаляет символы перевода строки (
СИМВОЛ(10)), возврата каретки (СИМВОЛ(13)), табуляции (СИМВОЛ(9)) и заменяет множественные пробелы на одиночные.
7. Подсчёт текстовых ячеек в фильтрованном диапазоне
Если ваши данные отфильтрованы (например, с помощью автофильтра или таблицы), стандартные функции вроде СЧЁТЕСЛИ будут учитывать все ячейки, включая скрытые. Чтобы посчитать только видимые текстовые ячейки, используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ.
Синтаксис:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон)
где 3 — это код операции СЧЁТЗ (подсчёт непустых ячеек). Однако, как и СЧЁТЗ, она учитывает все непустые ячейки, а не только текстовые.
Чтобы посчитать только видимые текстовые ячейки, комбинируйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ с ЕТЕКСТ:
=СУММПРОИЗВ(--ЕТЕКСТ(ДВССЫЛ("A1:A" & ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3;A:A))))
Эта формула массива работает только в диапазоне A1:A1048576 и требует нажатия Ctrl+Shift+Enter.
Альтернативный метод — использовать VBA для подсчёта видимых строк:
Function COUNT_VISIBLE_TEXT(rng As Range) As Long
Dim cell As Range
For Each cell In rng.SpecialCells(xlCellTypeVisible)
If VarType(cell.Value) = vbString Then
COUNT_VISIBLE_TEXT = COUNT_VISIBLE_TEXT + 1
End If
Next cell
End Function
8. Автоматизация подсчёта с помощью таблиц Excel
Если вы работаете с умными таблицами (Ctrl+T), подсчёт текстовых ячеек можно автоматизировать с помощью столбца с формулой. Например, добавьте вспомогательный столбец с функцией ЕТЕКСТ, а затем используйте СЧЁТЕСЛИ для подсчёта ИСТИНА.
Пошаговая инструкция:
- Выделите ваш диапазон и нажмите
Ctrl+T, чтобы преобразовать его в таблицу. - Добавьте новый столбец с заголовком, например, "Текст?".
- В первой ячейке нового столбца введите формулу:
=ЕТЕКСТ([@Столбец1])(замените
Столбец1на имя вашего столбца). - Скопируйте формулу на весь столбец (она автоматически применится ко всем строкам таблицы).
- В любой ячейке вне таблицы используйте:
=СЧЁТЕСЛИ(Таблица1[Текст?]; ИСТИНА)чтобы посчитать количество текстовых ячеек.
Преимущества этого метода:
- 🔄 Формулы автоматически применяются к новым строкам.
- 📊 Легко добавлять дополнительные условия (например, подсчёт текста определённой длины).
- 🛡️ Минимальный риск ошибок при изменении диапазона.
Чтобы скрыть вспомогательный столбец, кликните правой кнопкой по его заголовку и выберите Скрыть столбец. Данные останутся доступны для формул, но не будут отвлекать в интерфейсе.
═══
FAQ: Частые вопросы о подсчёте текстовых ячеек
❓ Как посчитать текстовые ячейки, игнорируя ячейки с формулами, возвращающими текст?
Формулы, возвращающие текст (например, =ТЕКСТ(123;"0")), воспринимаются Excel как текстовые значения. Чтобы их исключить, используйте комбинацию ЕТЕКСТ и ЕПУСТО для проверки, является ли значение "настоящим" текстом:
=СУММПРОИЗВ(--(ЕТЕКСТ(A1:A100)*НЕ(ЕПУСТО(A1:A100))))
Однако этот метод не идеален — он всё равно будет учитывать текст, сгенерированный формулами. Для 100% точности потребуется VBA.
❓ Почему СЧЁТЕСЛИ с критерием "*" считает числа, отформатированные как текст?
Функция СЧЁТЕСЛИ с критерием "*" учитывает все непустые ячейки, включая числа, если они хранятся как текст (например, после применения текстового формата или апострофа перед числом). Чтобы исключить такие случаи, комбинируйте СЧЁТЕСЛИ с ЕОШИБКА(ЗНАЧЕН):
=СУММПРОИЗВ(--(ЕОШИБКА(ЗНАЧЕН(A1:A100))))
Эта формула вернёт ИСТИНА только для ячеек, которые нельзя преобразовать в число (т.е. для "настоящего" текста).
❓ Можно ли посчитать текстовые ячейки в защищённом листе?
Да, все рассмотренные методы (кроме VBA) работают на защищённых листах, если ячейки с формулами не заблокированы. Если вам нужно изменить формулы на защищённом листе:
- Снимите защиту (
Рецензирование → Снять защиту листа). - Обновите формулы.
- Верните защиту (
Рецензирование → Защитить лист).
Для VBA-решений потребуется разрешить выполнение макросов в настройках безопасности Excel.
❓ Как посчитать текстовые ячейки в Google Таблицах?
В Google Sheets используются аналогичные функции, но с английскими названиями:
=COUNTIF(A1:A100; "*")— аналогСЧЁТЕСЛИ.=SUMPRODUCT(--ISTEXT(A1:A100))— аналог комбинации сЕТЕКСТ.=COUNTA(A1:A100)— аналогСЧЁТЗ.
Основное отличие: в Google Sheets нет функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ, но есть =SUBTOTAL с аналогичным синтаксисом.
❓ Почему моя формула возвращает #ЗНАЧ! при подсчёте текстовых ячеек?
Ошибка #ЗНАЧ! обычно возникает в трёх случаях:
- Вы используете
СУММПРОИЗВс несопоставимыми диапазонами (например,=СУММПРОИЗВ(ЕТЕКСТ(A1:A10); B1:B5)). Убедитесь, что диапазоны совпадают по размеру. - В диапазоне есть объединённые ячейки. Разъедините их (
Главная → Объединить и поместить в центре). - Вы забыли ввести формулу как массива (в старых версиях Excel требуется
Ctrl+Shift+Enter).
Проверьте диапазоны на наличие скрытых символов или ошибок с помощью ЕОШИБКА.