Вы когда-нибудь сталкивались с задачей подсчёта ячеек, содержащих текст, в огромной таблице Microsoft Excel? Это типичная проблема для аналитиков, бухгалтеров и менеджеров, которые работают с данными клиентов, инвентарными списками или отчётами. В отличие от числовых значений, текстовые данные не суммируются стандартными функциями вроде СУММ, но это не значит, что задача невыполнима.
В этой статье мы разберём 5 проверенных методов — от элементарных функций для новичков до продвинутых приёмов с использованием Power Query и VBA. Вы узнаете, как отличать пустые ячейки от текстовых, как учитывать только определённые слова, и даже как автоматизировать процесс для регулярных отчётов. А в конце вас ждёт FAQ-блок с ответами на частые ошибки и лайфхак для работы с большими массивами данных.
Почему стандартная функция СУММ не работает с текстом
Многие пользователи пытаются применить СУММ к столбцу с текстом и получают результат 0 или ошибку #ЗНАЧ!. Это происходит потому, что Excel воспринимает текст как нечисловое значение — для программы слова "Да", "Принято" или "Иванов" не имеют количественной меры. Однако задача подсчёта таких ячеек вполне решаема другими инструментами.
Вот ключевые различия между типами данных, которые важно понимать:
- 📊 Числа:
10,3.14,-5— суммируются функциейСУММ. - 📝 Текст:
"Привет","Да","А100"— требуют функций подсчёта (СЧЁТЗ,СЧЁТЕСЛИ). - 🗓️ Даты:
15.05.2026— хранятся как числа, но отображаются как текст. - ⚠️ Пустые ячейки: игнорируются большинством функций, кроме
СЧИТАТЬПУСТОТЫ.
Excel автоматически преобразует в текст любые данные, начинающиеся с апострофа (') или содержащие буквы. Например, если ввести '123, программа воспримет это как текст, а не число. Это важно учитывать при импорте данных из внешних источников.
Способ 1: Функция СЧЁТЗ — самый простой метод
Если вам нужно посчитать все непустые ячейки в диапазоне, включая текст, числа и даты — функция СЧЁТЗ (COUNTIF в английской версии) станет вашим первым помощником. Её синтаксис предельно прост:
=СЧЁТЗ(диапазон)
Примеры использования:
| Формула | Диапазон | Результат | Пояснение |
|---|---|---|---|
=СЧЁТЗ(A1:A10) | A1:A10 | 7 | В диапазоне 7 непустых ячеек (текст, числа, даты) |
=СЧЁТЗ(B2:B20) | B2:B20 | 12 | 12 ячеек с любыми данными |
=СЧЁТЗ("Лист2!C:C") | Весь столбец C на Листе2 | 45 | Подсчёт по всему столбцу (осторожно с большими диапазонами!) |
Ограничения метода:
- 🚫 Не различает типы данных — считает и текст, и числа.
- 🚫 Пустые ячейки и ячейки с формулами, возвращающими
"", игнорируются. - 🚫 Не работает с условиями (например, "посчитать только ячейки со словом 'Да'").
⚠️ Внимание: Если в диапазоне есть ячейки с формулами, возвращающими пустую строку (=""),СЧЁТЗпроигнорирует их. Чтобы учесть такие случаи, используйте комбинациюСЧЁТЗ+СЧИТАТЬПУСТОТЫ.
Способ 2: СЧЁТЕСЛИ для текста с условиями
Когда требуется посчитать ячейки, содержащие конкретный текст (например, "Да", "Отгружено" или "Иванов"), на помощь придёт функция СЧЁТЕСЛИ (COUNTIF). Её синтаксис:
=СЧЁТЕСЛИ(диапазон; критерий)
Где критерий может быть:
- 🔤 Точным совпадением:
"Да","Принято". - 🔍 Шаблоном с подстановочными знаками:
"ов"(все фамилии на "-ов"),"Т"(слова, начинающиеся на "Т"). - 📌 Условием:
">100"(для чисел),"<>"&""(непустые ячейки).
Примеры формул:
| Задача | Формула | Результат |
|---|---|---|
| Посчитать ячейки со словом "Да" | =СЧЁТЕСЛИ(A1:A100; "Да") | 12 |
| Найти все фамилии на "-ова" | =СЧЁТЕСЛИ(B2:B50; "*ова") | 8 |
| Посчитать непустые ячейки (альтернатива СЧЁТЗ) | =СЧЁТЕСЛИ(C:C; "<>"&"") | 245 |
| Найти ячейки, содержащие "ург" (например, "Сургут", "Бургас") | =СЧЁТЕСЛИ(D1:D200; "ург") | 5 |
Для работы с регистром (например, различать "Да" и "да") используйте функцию СЧЁТЕСЛИМН с дополнительным условием или макрос.
Убедиться, что в критерии нет лишних пробелов|Проверить регистр (Excel чувствителен к "Да" vs "да")|Использовать "*" для частичного совпадения|Тестировать формулу на небольшом диапазоне-->
Способ 3: Функция СЧИТАТЬПУСТОТЫ для обратного подсчёта
Иногда удобнее посчитать пустые ячейки, а затем вычесть их из общего количества. Для этого предназначена функция СЧИТАТЬПУСТОТЫ (COUNBLANK). Формула выглядит так:
=СЧИТАТЬПУСТОТЫ(диапазон)
Практический пример: Допустим, в столбце A1:A100 100 ячеек, из них 15 пустых. Чтобы найти количество непустых (включая текст), используйте:
=100 - СЧИТАТЬПУСТОТЫ(A1:A100)
Этот метод полезен, когда:
- 📏 Нужно быстро оценить заполненность диапазона.
- 🔄 Данные обновляются динамически, и пустые ячейки появляются/исчезают.
- 📊 Требуется визуализировать процент заполнения (например, для дашбордов).
⚠️ Внимание: ФункцияСЧИТАТЬПУСТОТЫучитывает ячейки с формулами, возвращающими"", как пустые. Если вам нужно их исключить, комбинируйте сСЧЁТЗ:=СЧЁТЗ(A1:A100) - СЧИТАТЬПУСТОТЫ(A1:A100)Способ 4: Комбинация функций для сложных условий
Для продвинутых задач, например подсчёта ячеек, содержащих текст И удовлетворяющих дополнительным критериям (длина, регистр, наличие подстроки), потребуется комбинировать несколько функций. Рассмотрим популярные сценарии:
1. Подсчёт ячеек с текстом определённой длины
Используйте
СЧЁТЕСЛИс функциейДЛСТР(LEN) в массиве:=СУММ(--(ДЛСТР(A1:A100)>5))Эта формула посчитает ячейки, где текст длиннее 5 символов. Введите её как формулу массива (в старых версиях Excel нажмите
Ctrl+Shift+Enter).2. Подсчёт текстовых ячеек, игнорируя числа
Чтобы посчитать только текст, исключив числа и даты, используйте:
=СУММ(--(ЕТЕКСТ(A1:A100)))Функция
ЕТЕКСТ(ISTEXT) возвращаетИСТИНАтолько для текстовых ячеек.3. Поиск текста с учётом регистра
Стандартная
СЧЁТЕСЛИне различает "Да" и "да". Для чувствительного к регистру поиска применяйте:=СУММ(--(A1:A100="Да"))Или для частичного совпадения:
=СУММ(--(НАЙТИ("ург"; A1:A100)>0))Важно: Формулы массива могут замедлять работу с большими диапазонами. Для оптимизации используйте
Power QueryилиVBA.Как ввести формулу массива в Excel 2016 и старше?
Вместо обычного
Enterпосле ввода формулы нажмитеCtrl+Shift+Enter. Excel автоматически обернёт формулу в фигурные скобки{}. В новых версиях (Excel 365) формулы массива вводятся как обычные.Способ 5: Автоматизация с помощью Power Query и VBA
Для регулярной обработки больших объёмов данных ручные формулы становятся неэффективными. В таких случаях поможет Power Query (вкладка
Данные → Получить данные) или макросыVBA.Метод 1: Power Query
Алгоритм действий:
- Выделите диапазон и нажмите
Данные → Из таблицы/диапазона.- В редакторе Power Query добавьте столбец с условием:
Добавить столбец → Пользовательский.- Введите формулу:
= if [ВашСтолбец] <> null and Text.Length(Text.From([ВашСтолбец])) > 0 then 1 else 0.- Сгруппируйте данные по новому столбцу (сумма по значению
1).Метод 2: Макрос VBA
Скопируйте этот код в редактор VBA (
Alt+F11), чтобы создать функцию для подсчёта текстовых ячеек: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 Then
count = count + 1
End If
Next cell
CountTextCells = count
End Function
Теперь в Excel можно использовать
=CountTextCells(A1:A100).⚠️ Внимание: МакросыVBAработают только в файлах с расширением.xlsm. При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с неожиданными результатами при подсчёте текстовых ячеек. Вот самые распространённые ошибки и способы их решения:
Ошибка Причина Решение #ИМЯ?Опечатка в названии функции Проверьте синтаксис: СЧЁТЕСЛИ, а неСЧЁТЕСЛИМ(если не нужны множественные критерии).Формула возвращает 0Критерий не совпадает с данными Используйте "*"для частичного совпадения:=СЧЁТЕСЛИ(A:A; "текст").Медленная работа с большими диапазонами Формулы массива или ЕТЕКСТв большом диапазонеОграничьте диапазон (например, A1:A1000вместоA:A) или используйтеPower Query.Не учитываются ячейки с формулами, возвращающими текст СЧЁТЗигнорирует формулы, если они возвращают""Замените формулы на значения ( Копировать → Специальная вставка → Значения).Совет для новичков: Всегда тестируйте формулы на небольшом диапазоне перед применением ко всей таблице. Например, проверьте
=СЧЁТЕСЛИ(A1:A10; "Да")перед тем, как расширять доA1:A1000.FAQ: Ответы на частые вопросы
Можно ли посчитать текстовые ячейки разных цветов?
Да, но стандартными функциями это невозможно. Используйте
VBA-макрос:Function CountColoredCells(rng As Range, color As Range) As LongDim cell As Range, count As Long
count = 0
For Each cell In rng
If cell.Font.Color = color.Font.Color Then
count = count + 1
End If
Next cell
CountColoredCells = count
End Function
Применение:
=CountColoredCells(A1:A100; B1), гдеB1— ячейка с нужным цветом.Как посчитать ячейки, содержащие текст ИЛИ числа?
Используйте
СЧЁТЗ— она учитывает все непустые ячейки независимо от типа данных. Или комбинируйте:=СЧЁТЕСЛИ(A1:A100; "<>")Почему
СЧЁТЕСЛИне находит текст с пробелами?Пробелы в начале или конце критерия могут искажать результат. Используйте функцию
СЖПРОБЕЛЫ(TRIM) для очистки данных:=СЧЁТЕСЛИ(СЖПРОБЕЛЫ(A1:A100); "Ваш текст")Или создайте вспомогательный столбец с очищенными данными.
Как посчитать уникальные текстовые значения?
Для подсчёта уникальных текстовых значений используйте комбинацию:
=СУММ(--(ЧАСТОТА(ПОИСКПОЗ(ЕСЛИ(ЕТЕКСТ(A1:A100); A1:A100); ЕСЛИ(ЕТЕКСТ(A1:A100); A1:A100)); ПОИСКПОЗ(ЕСЛИ(ЕТЕКСТ(A1:A100); A1:A100); ЕСЛИ(ЕТЕКСТ(A1:A100); A1:A100)))>0))В Excel 365 проще:
=СЧЁТЕСЛИМН(УНИК(A1:A100); УНИК(A1:A100); ">").Можно ли посчитать текстовые ячейки в фильтрованном диапазоне?
Да, используйте функцию
ПРОМЕЖУТОЧНЫЕ.ИТОГИ:=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A1:A100)Где
3— код операции дляСЧЁТЗ. Предварительно примените автофильтр.