Зачем считать текстовые ячейки и какие подводные камни вас ждут
Работа с текстовыми данными в Excel часто требует не только анализа содержимого, но и подсчёта количества заполненных ячеек. Например, вам может понадобиться узнать, сколько клиентов оставили отзывы, сколько строк в базе содержат адреса, или сколько записей в отчёте имеют текстовые комментарии. На первый взгляд задача кажется тривиальной — но уже при первом подсчёте многие сталкиваются с неожиданностями.
Основная проблема заключается в том, что Excel не всегда однозначно определяет, что именно считать "текстом". Для программы текстом может быть как слово "Привет", так и формула =СЕГОДНЯ(), результат которой отображается как дата. А пустая ячейка с формулой =ЕСЛИ(A1>10;"";"") вообще не содержит видимого текста, но технически не является пустой. Эти нюансы приводят к ошибкам в 80% случаев, когда пользователи пытаются применить стандартные функции подсчёта.
В этой статье мы разберём 5 надёжных методов подсчёта текстовых ячеек — от элементарных до продвинутых, — а также покажем, как обходить типичные ловушки Excel. Вы узнаете, когда достаточно функции СЧЁТЗ, а когда потребуется комбинация из ЕСЛИ, ТИП и ДЛСТР. Особое внимание уделим различиям между версиями Excel 2010, 2016 и 365 — они влияют на доступность некоторых функций.
Метод 1: Функция СЧЁТЗ — простой, но не всегда точный способ
Начнём с самой очевидной функции — СЧЁТЗ (или COUNTA в английской версии). Она подсчитывает количество непустых ячеек в заданном диапазоне, независимо от типа данных. Это значит, что СЧЁТЗ посчитает и текст, и числа, и даты, и даже ошибки вроде #ДЕЛ/0!.
Формула выглядит так:
=СЧЁТЗ(A1:A100)
Где A1:A100 — диапазон, в котором вы хотите подсчитать непустые ячейки. Казалось бы, что может быть проще? Но здесь кроется первый подводный камень: СЧЁТЗ не различает типы данных. Если в вашем диапазоне есть числа или даты, они тоже будут учтены. Например, для диапазона с данными:
| Ячейка | Содержимое | СЧЁТЗ посчитает? |
|---|---|---|
| A1 | "Привет" | Да |
| A2 | 42 | Да |
| A3 | 15.07.2023 | Да |
| A4 | "" (пустая строка) | Да |
| A5 | #Н/Д | Да |
Функция вернёт значение 5, хотя текстовых значений здесь только одно. Поэтому СЧЁТЗ подходит только если в вашем диапазоне гарантированно нет других типов данных кроме текста.
⚠️ Внимание: Если в ячейке содержится формула, возвращающая пустую строку (например,=ЕСЛИ(A1>10;"";"Текст")),СЧЁТЗпосчитает её как непустую, даже если визуально ячейка выглядит пустой.
Метод 2: Комбинация ЕСЛИ + ТИП — точный подсчёт только текста
Чтобы подсчитать исключительно текстовые ячейки, игнорируя числа, даты и ошибки, используйте функцию ТИП (или TYPE). Она возвращает числовое значение, соответствующее типу данных:
- 📝 1 — текст
- 🔢 2 — число
- 📅 5 — логическое значение (
ИСТИНА/ЛОЖЬ) - ❌ 16 — ошибка (например,
#ДЕЛ/0!)
Формула для подсчёта только текстовых ячеек:
=СУММПРОИЗВ(--(ТИП(A1:A100)=1))
Разберём, как это работает:
ТИП(A1:A100)=1— проверяет каждую ячейку на принадлежность к текстовому типу, возвращая массивИСТИНА/ЛОЖЬ.--(двойной минус) — преобразуетИСТИНА/ЛОЖЬв1/0.СУММПРОИЗВ— суммирует все единицы, давая итоговое количество текстовых ячеек.
Этот метод надёжен, но требует ввода формулы как массивной (в старых версиях Excel нажимайте Ctrl+Shift+Enter). В Excel 365 формула работает без дополнительных действий.
☑️ Подготовка к точному подсчёту текста
Метод 3: Функция ДЛСТР — подсчёт ячеек с ненулевой длиной
Ещё один надёжный способ — использовать функцию ДЛСТР (или LEN), которая возвращает длину текста в ячейке. Если ячейка пуста или содержит число/дату, ДЛСТР вернёт 0. Это позволяет отфильтровать только те ячейки, где есть хотя бы один символ.
Формула:
=СУММПРОИЗВ(--(ДЛСТР(A1:A100)>0))
Преимущества метода:
- 🔍 Подсчитывает даже ячейки с пробелами или невидимыми символами (например, табуляция).
- 🚫 Игнорирует числа, даты и ошибки.
- ⚡ Работает быстрее, чем
ТИП, на больших диапазонах.
Однако есть нюанс: если в ячейке содержится формула, возвращающая пустую строку (например, =ЕСЛИ(A1>10;"";"Текст")), ДЛСТР вернёт 0, и такая ячейка не будет посчитана. Это может быть как плюсом, так и минусом в зависимости от задачи.
⚠️ Внимание: В Excel 2010 и старше ДЛСТР не учитывает форматирование ячеек. Например, ячейка с текстом белого цвета на белом фоне будет посчитана, хотя визуально она выглядит пустой.
Что делать, если ДЛСТР не срабатывает на скрытые символы?
Если в ячейке есть непечатаемые символы (например, символы переноса строки или неразрывные пробелы), используйте комбинацию =СУММПРОИЗВ(--(ПЕЧСИМВ(А1:А100)<>"")). Функция ПЕЧСИМВ удаляет все непечатаемые символы, оставляя только видимый текст.
Метод 4: Функция СЧЁТЕСЛИ с подстановочными знаками
Если вам нужно подсчитать ячейки, содержащие любой текст (включая комбинации текста с числами), используйте СЧЁТЕСЛИ с подстановочным знаком *. Эта функция ищет соответствие заданному шаблону и подсчитывает количество совпадений.
Формула:
=СЧЁТЕСЛИ(A1:A100;"*")
Здесь "*" означает "любая последовательность символов". Метод прост, но имеет ограничения:
- ✅ Подсчитывает ячейки с любым текстом, включая числа, введённые как текст (например,
'123). - ❌ Игнорирует ячейки с формулами, возвращающими текст (например,
=ТЕКСТ(СЕГОДНЯ();"ДД.ММ.ГГГГ")). - ❌ Не работает с ячейками, содержащими только пробелы.
Для более точного подсчёта комбинируйте СЧЁТЕСЛИ с другими функциями. Например, чтобы посчитать ячейки, содержащие хотя бы одну букву (игнорируя числа, введённые как текст), используйте:
=СУММПРОИЗВ(--(НЕ(ЕОШ(НАЙТИ("?";A1:A100&"АБВ")))))
Здесь "АБВ" — произвольный набор букв, а НАЙТИ ищет хотя бы один символ из этого набора. Если найдёт — ячейка учитывается.
Метод 5: Power Query — автоматизация для больших данных
Если вы работаете с большими наборами данных (тысячи строк) или нуждаетесь в регулярном подсчёте текстовых ячеек, стоит обратить внимание на Power Query — инструмент для преобразования и анализа данных, встроенный в Excel 2016 и новее.
Алгоритм действий:
- Выделите диапазон данных и перейдите на вкладку
Данные→Из таблицы/диапазона(илиGet Data → From Table/Rangeв английской версии). - В открывшемся редакторе Power Query добавьте новый столбец с формулой:
= if [Column1] = null then 0 else if Value.Type([Column1]) = type text then 1 else 0Здесь
[Column1]— имя вашего столбца. - Замените значения в новом столбце на сумму (используйте
ГруппировкаилиСумма). - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества Power Query:
- 🔄 Автоматически обновляет результаты при изменении исходных данных.
- 📊 Позволяет комбинировать подсчёт с другими преобразованиями (фильтрация, сортировка).
- 💾 Сохраняет шаги обработки для повторного использования.
Недостаток — более высокий порог входа для новичков. Однако, освоив Power Query, вы сэкономите часы на рутинных задачах.
Сравнение методов: какой выбрать для вашей задачи
Выбор метода зависит от структуры данных, версии Excel и требуемой точности. В таблице ниже сравнены все рассмотренные способы:
| Метод | Подходит для | Учитывает формулы | Учитывает пробелы | Скорость | Сложность |
|---|---|---|---|---|---|
СЧЁТЗ |
Диапазоны только с текстом | Да (если формула возвращает текст) | Да | ⚡⚡⚡ | ★☆☆ |
ЕСЛИ + ТИП |
Точный подсчёт текста | Да | Нет | ⚡⚡ | ★★☆ |
ДЛСТР |
Подсчёт ячеек с ненулевой длиной | Нет (если формула возвращает "") | Да | ⚡⚡⚡ | ★★☆ |
СЧЁТЕСЛИ с * |
Поиск любого текста | Нет | Нет | ⚡⚡⚡ | ★☆☆ |
| Power Query | Большие наборы данных | Да | Настраивается | ⚡ | ★★★ |
Для большинства задач оптимальным решением будет комбинация ДЛСТР или ТИП с СУММПРОИЗВ. Если же вам нужно регулярно обрабатывать большие объёмы данных, стоит освоить Power Query — это инвестиция, которая окупится сэкономленным временем.
FAQ: Ответы на частые вопросы о подсчёте текстовых ячеек
Можно ли подсчитать текстовые ячейки в гугл-таблицах?
Да, в Google Sheets работают те же принципы, но с некоторыми нюансами:
- Функция
СЧЁТЗназываетсяCOUNTA. - Формулы массивов (например, с
СУММПРОИЗВ) не требуют нажатияCtrl+Shift+Enter. - Для подсчёта текстовых ячеек используйте
=COUNTIF(A1:A100;"*").
Google Sheets также поддерживает Apps Script — аналог VBA, который позволяет автоматизировать подсчёт с помощью скриптов.
Почему СЧЁТЕСЛИ с "*" не считает ячейки с формулами, возвращающими текст?
Функция СЧЁТЕСЛИ анализирует отображаемое значение ячейки, а не её содержимое. Если ячейка содержит формулу, например =ТЕКСТ(100;"0 руб."), то визуально там отображается текст 100 руб., но СЧЁТЕСЛИ воспринимает это как результат формулы, а не как текст.
Чтобы обойти это ограничение, используйте ДЛСТР или ТИП — они работают с фактическим содержимым ячейки, а не с отображаемым значением.
Как подсчитать ячейки, содержащие конкретное слово?
Используйте СЧЁТЕСЛИ с шаблоном поиска. Например, чтобы посчитать ячейки, содержащие слово "отчёт" (в любом регистре), применяйте:
=СЧЁТЕСЛИ(A1:A100;"отчёт")
Для регистрочувствительного поиска комбинируйте с НАЙТИ:
=СУММПРОИЗВ(--(НЕ(ЕОШ(НАЙТИ("Отчёт";A1:A100)))))
Здесь НАЙТИ ищет точное совпадение с учётом регистра.
Можно ли подсчитать текстовые ячейки по цвету?
Стандартными функциями Excel — нет. Однако есть два обходных пути:
- Фильтрация по цвету: Примените фильтр по цвету ячейки (вкладка
Данные→Фильтр), затем используйтеСЧЁТЗдля видимых ячеек. - VBA-макрос: Напишите скрипт, который будет анализировать цвет фона ячеек. Пример кода:
Function CountByColor(rng As Range, color As Range) As LongDim cl As Range
Dim count As Long
count = 0
For Each cl In rng
If cl.Interior.Color = color.Interior.Color Then
If cl.Value <> "" Then count = count + 1
End If
Next cl
CountByColor = count
End Function
Используйте её как пользовательскую функцию:
=CountByColor(A1:A100;B1), гдеB1— ячейка с образцом цвета.
Как посчитать пустые текстовые ячейки?
Под "пустыми текстовыми ячейками" обычно понимают ячейки, которые:
- Содержат пустую строку (
"") как результат формулы. - Визуально пусты, но имеют форматирование (например, цвет фона).
Чтобы их посчитать, используйте:
=СУММПРОИЗВ(--(A1:A100=""))
Если нужно учитывать ячейки с пробелами или непечатаемыми символами как "пустые", применяйте:
=СУММПРОИЗВ(--(СЖПРОБЕЛЫ(A1:A100)=""))