Работа с текстовыми данными в Microsoft Excel — одна из самых распространённых задач, с которыми сталкиваются пользователи. Часто требуется не просто хранить или анализировать текст, а подсчитывать количество ячеек, содержащих текстовые значения. Например, когда нужно узнать, сколько клиентов оставили отзывы, сколько товаров имеют описание, или сколько строк в базе данных содержат комментарии. На первый взгляд задача кажется простой, но на практике многие сталкиваются с трудностями: Excel не всегда корректно распознаёт текстовые форматы, а стандартные функции вроде COUNT работают только с числами.
В этой статье мы разберём 5 надёжных способов подсчёта текстовых ячеек — от базовых до продвинутых, включая обработку скрытых символов, пробелов и комбинированных форматов (например, когда в ячейке одновременно текст и число). Вы также узнаете, как избежать типичных ошибок, почему функция COUNTA не всегда подходит для текста, и как автоматизировать процесс с помощью Power Query. Особое внимание уделим нюансам работы с русскоязычными данными и символами кириллицы, которые иногда воспринимаются Excel как "нетекстовые" значения.
Если вы регулярно работаете с большими массивами данных, умение быстро и точно считать текстовые ячейки сэкономит часы времени. Например, маркетолог может за секунды определить, сколько лидов заполнили поле "Комментарий" в форме обратной связи, а аналитик — выявить строки с некорректными данными. Давайте разберёмся, как это делать эффективно.
1. Базовый способ: функция COUNTIF с критерием "*"
Самый простой и универсальный метод — использовать функцию COUNTIF с подстановочным знаком . Этот символ в Excel обозначает "любой набор символов", поэтому формула =COUNTIF(диапазон; "") вернёт количество ячеек, содержащих хотя бы один символ (включая пробелы и невидимые символы).
Пример:
=COUNTIF(A1:A100; "*")
Эта формула подсчитает все непустые ячейки в диапазоне A1:A100, но важно понимать, что она учитывает любые данные, а не только текст. Если в ячейке число или дата, оно тоже будет посчитано. Чтобы исключить числа, нужно комбинировать COUNTIF с другими функциями.
Чтобы проверить, является ли содержимое ячейки исключительно текстом, используйте формулу с ISTEXT:
=SUMPRODUCT(--(ISTEXT(A1:A100)))
Этот вариант точнее, так как ISTEXT возвращает ИСТИНА только для текстовых значений, игнорируя числа, даты и логические значения (ИСТИНА/ЛОЖЬ).
2. Продвинутый подход: комбинация ISTEXT и SUMPRODUCT
Когда нужно посчитать только текстовые ячейки, исключив числа, даты и пустые значения, оптимально использовать массивную формулу с SUMPRODUCT и ISTEXT. Этот метод работает даже с диапазонами, содержащими ошибки (#Н/Д, #ЗНАЧ!).
Формула:
=SUMPRODUCT(--(ISTEXT(A1:A100)))
Разберём, как она работает:
ISTEXT(A1:A100)— проверяет каждую ячейку в диапазоне и возвращает массив значенийИСТИНА/ЛОЖЬ.--(двойной минус) — преобразуетИСТИНА/ЛОЖЬв1/0.SUMPRODUCT— суммирует все единицы, давая итоговое количество текстовых ячеек.
Преимущество этого метода — универсальность: он корректно обрабатывает:
- 📌 Ячейки с пробелами (считаются как текст).
- 📌 Текст с числами (например,
"123abc"— текст). - 📌 Скрытые символы (переносы строк, табуляции).
- 📌 Ошибки (игнорируются, не ломают формулу).
Почему COUNTIF с "*" не всегда подходит?
Функция COUNTIF(диапазон; "*") учитывает все непустые ячейки, включая числа и даты. Например, если в ячейке число 123, оно будет посчитано, хотя по сути это не текст. Также COUNTIF не распознаёт ячейки с формулами, возвращающими пустую строку (=""), как пустые, что может исказить результат.
3. Подсчёт текстовых ячеек с учётом регистра
По умолчанию Excel не различает регистр при подсчёте текста. Например, слова "Привет" и "привет" будут восприняты как одинаковые. Если вам нужно учитывать регистр (например, при анализе данных, где важна заглавная буква), используйте функцию EXACT в комбинации с SUMPRODUCT.
Формула для подсчёта ячеек, точно соответствующих заданному тексту (с учётом регистра):
=SUMPRODUCT(--(EXACT("искомый текст"; A1:A100)))
Если же нужно посчитать все текстовые ячейки с учётом регистра, но без привязки к конкретному слову, потребуется более сложный подход с VBA или Power Query (об этом расскажем ниже).
Пример: подсчитаем, сколько раз в диапазоне B2:B50 встречается слово "Да" с заглавной буквой:
=SUMPRODUCT(--(EXACT("Да"; B2:B50)))
4. Подсчёт текстовых ячеек с исключением пробелов и пустых строк
Частая проблема — ячейки, которые визуально пустые, но содержат пробелы, неразрывные пробелы (CHAR(160)) или символы табуляции. Стандартные функции вроде ISTEXT посчитают их как текстовые, что исказит результат. Чтобы исключить такие ячейки, используйте формулу с TRIM и LEN:
=SUMPRODUCT(--(ISTEXT(A1:A100)); --(LEN(TRIM(A1:A100))>0))
Разбор:
TRIM(A1:A100)— удаляет лишние пробелы.LEN(...)>0— проверяет, что длина строки после обрезки больше 0.ISTEXT— гарантирует, что ячейка содержит текст, а не число.
Это актуально для данных, импортированных из веб-форм или баз данных, где часто встречаются "мусорные" символы. Например, если в ячейке только пробел, ISTEXT вернёт ИСТИНА, но после TRIM строка станет пустой, и LEN вернёт 0.
Удалить лишние пробелы функцией TRIM
Проверить наличие непечатаемых символов (CHAR(160), CHAR(9))
Исключить ячейки с формулами, возвращающими пустую строку
Учесть регистр, если это критично для анализа-->
5. Автоматизация с помощью Power Query
Если вам регулярно нужно подсчитывать текстовые ячейки в больших наборах данных (тысячи строк), ручные формулы становятся неудобными. В этом случае поможет инструмент Power Query (доступен в Excel 2016 и новее). Он позволяет:
- 📌 Фильтровать данные по типу (только текст).
- 📌 Удалять пустые строки и пробелы автоматически.
- 📌 Сохранять шаги обработки для повторного использования.
Пошаговая инструкция:
- Выделите диапазон данных и перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - В открывшемся редакторе Power Query выберите столбец, который нужно проанализировать.
- Нажмите на стрелку фильтра в заголовке столбца и выберите
Текстовые фильтры → Не равно → ""(пустая строка). - Добавьте пользовательский столбец с формулой
= Text.Select([Column1], {"a".."я"})(для кириллицы) или= Text.Select([Column1], {"a".."z"})(для латиницы), чтобы отфильтровать только буквенные символы. - Нажмите
Закрыть и загрузить— результат будет выведен в новую таблицу.
Power Query особенно полезен, если данные импортируются из внешних источников (например, CSV или JSON) и требуют предварительной очистки. Например, вы можете автоматически удалять все ячейки, содержащие только цифры или специальные символы, оставляя только чистый текст.
6. Ошибки и нюансы: почему формулы могут не работать
Даже опытные пользователи Excel сталкиваются с ситуациями, когда формулы для подсчёта текстовых ячеек дают неверный результат. Рассмотрим типичные причины и решения:
| Проблема | Причина | Решение |
|---|---|---|
Формула ISTEXT не срабатывает на ячейки с текстом |
Ячейка содержит число, отформатированное как текст (например, '123) |
Используйте =SUMPRODUCT(--(ISTEXT(A1:A100) * (A1:A100 <> ""))) или преобразуйте данные в текст функцией TEXT |
COUNTIF считает числа как текст |
Функция COUNTIF(диапазон; "*") учитывает все непустые ячейки |
Замените на SUMPRODUCT(--(ISTEXT(диапазон))) |
Формула возвращает #ЗНАЧ! |
Диапазон содержит ошибки (#Н/Д, #ДЕЛ/0!) |
Оберните формулу в IFERROR или используйте AGGREGATE с параметром 6 (игнорировать ошибки) |
| Кириллические символы не распознаются | Неправильная кодировка при импорте данных | Импортируйте данные через Power Query с указанием кодировки Windows-1251 или UTF-8 |
Особое внимание уделите ячейкам с формулами, которые возвращают текст. Например, если в ячейке формула =ЕСЛИ(B1>10; "Высокий"; "Низкий"), то ISTEXT посчитает её как текстовую, даже если визуально там число. Чтобы исключить такие случаи, используйте проверку на наличие формулы:
=SUMPRODUCT(--(ISTEXT(A1:A100)); --(NOT(ISFORMULA(A1:A100))))
7. Альтернативные методы: фильтр и условное форматирование
Если формулы кажутся сложными, можно воспользоваться встроенными инструментами Excel без написания формул:
Способ 1: Фильтр по типу данных
- Выделите диапазон данных.
- Перейдите на вкладку
Данные → Фильтр. - Нажмите на стрелку фильтра в заголовке столбца и выберите
Текстовые фильтры → Не пустые. - В статусной строке Excel (внизу окна) отобразится количество отфильтрованных записей.
Способ 2: Условное форматирование
- Выделите диапазон.
- Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячееки введите=ISTEXT(A1). - Задайте формат (например, заливку красным) и нажмите
ОК. - Все текстовые ячейки будут выделены — их количество можно посчитать вручную или через
НАЙТИ и ВЫДЕЛИТЬ.
Эти методы удобны для разовых задач, когда не требуется автоматизация. Однако они не подходят для динамических данных, которые часто обновляются.
FAQ: Частые вопросы о подсчёте текстовых ячеек
Можно ли посчитать текстовые ячейки в гугл-таблицах?
Да, в Google Sheets работают те же принципы. Используйте:
=COUNTIF(A1:A100; "*")
или для точного подсчёта текста:
=SUMPRODUCT(--(ISTEXT(A1:A100)))
Отличие только в том, что в Google Sheets функция SUMPRODUCT может работать медленнее на больших диапазонах.
Почему моя формула считает пустые ячейки как текстовые?
Скорее всего, в "пустых" ячейках есть невидимые символы: пробелы, табуляции или символы переноса строки. Чтобы их удалить, используйте:
=TRIM(CLEAN(SUBSTITUTE(A1; CHAR(160); " ")))
где CHAR(160) — неразрывный пробел. После очистки повторите подсчёт.
Как посчитать ячейки, содержащие конкретное слово?
Используйте COUNTIF с подстановочным знаком:
=COUNTIF(A1:A100; "слово")
Для учёта регистра в Excel 365:
=SUMPRODUCT(--(FIND("Слово"; A1:A100) > 0))
Обратите внимание: FIND чувствительна к регистру, а SEARCH — нет.
Можно ли посчитать текстовые ячейки в сводной таблице?
Да, но сводная таблица не имеет встроенной функции для подсчёта только текстовых значений. Обходной путь:
- Добавьте в исходные данные вспомогательный столбец с формулой
=ISTEXT([@Столбец]). - Создайте сводную таблицу и перетащите вспомогательный столбец в область
Значения(операция —Счётчик).
Это покажет количество текстовых ячеек в разрезе других полей.
Как автоматически обновлять количество текстовых ячеек при изменении данных?
Используйте таблицы Excel (не диапазоны!) и структурированные ссылки. Например:
- Преобразуйте диапазон в таблицу (
Ctrl + T). - Введите формулу с ссылкой на столбец таблицы:
=SUMPRODUCT(--(ISTEXT(Таблица1[Столбец1])))> - Теперь при добавлении новых строк в таблицу формула будет автоматически расширять диапазон.
Альтернатива — использовать Power Query с автообновлением при открытии файла.