Как посчитать текстовые значения в столбце Excel: от простых функций до VBA

Почему стандартный СЧЁТ не работает с текстом и что делать

Вы когда-нибудь пытались использовать функцию СЧЁТ для подсчёта текстовых ячеек в Microsoft Excel и получали ноль? Это не баг программы, а особенность работы. Функция СЧЁТ считает только числовые значения, игнорируя текст, даты и пустые ячейки. Для текстовых данных нужны другие инструменты — и их в Excel как минимум семь.

Проблема усложняется, когда в столбце смешаны разные типы данных: числа, текст, ошибки (#Н/Д), логические значения (ИСТИНА/ЛОЖЬ). Здесь уже требуется комбинация функций или даже макросы. В этой статье разберём все актуальные методы — от базовых до продвинутых, включая малоизвестные трюки с СУММПРОИЗВ и регулярными выражениями в Power Query.

Важно понимать разницу между подсчётом всех текстовых ячеек и подсчётом ячеек с конкретным текстом. Например, если вам нужно найти количество строк со словом "Да" в столбце с ответами опроса — это одна задача. А если требуется посчитать любые текстовые значения среди чисел — совсем другая. Мы рассмотрим оба сценария.

Метод 1: Функция СЧЁТЕСЛИ для конкретного текста

Самый простой способ, если вам нужно посчитать ячейки с определённым текстом. Формула выглядит так:

=СЧЁТЕСЛИ(диапазон; "искомый_текст")

Например, чтобы посчитать сколько раз встречается слово "Принято" в столбце A2:A100, используйте:

=СЧЁТЕСЛИ(A2:A100; "Принято")
  • 🔍 Чувствительна к регистру? Нет — "принято" и "ПРИНЯТО" будут посчитаны вместе.
  • 📌 Можно использовать подстановочные знаки: "текст" найдёт все ячейки, содержащие слово "текст".
  • ⚠️ Не считает ячейки с формулами, которые возвращают текст (например, =ЕСЛИ(...;"Да";"Нет")).
⚠️ Внимание: Если в ячейке есть пробелы до или после текста (например, " Принято "), функция их не учтёт. Используйте СЖПРОБЕЛЫ для очистки данных перед подсчётом.

Для учёта регистра придётся использовать массив или VBA (разберём ниже). А если нужно посчитать текст в нескольких столбцах одновременно, комбинируйте СЧЁТЕСЛИ с СУММ:

=СУММ(СЧЁТЕСЛИ(A2:A100; "Принято"); СЧЁТЕСЛИ(B2:B100; "Принято"))

Метод 2: СЧЁТЗ для всех непустых текстовых ячеек

Функция СЧЁТЗ считает все непустые ячейки, включая текст, числа, даты и логические значения. Чтобы выделить только текстовые, нужно комбинировать её с другими функциями:

=СУММПРОИЗВ(--(ЕТЕКСТ(A2:A100)))

Разберём, как это работает:

  1. ЕТЕКСТ(A2:A100) — возвращает массив ИСТИНА/ЛОЖЬ, где ИСТИНА = ячейка содержит текст.
  2. -- — преобразует ИСТИНА/ЛОЖЬ в 1/0.
  3. СУММПРОИЗВ — суммирует единицы, давая итоговый счётчик.

Этот метод учитывает все текстовые значения, включая результаты формул (например, =ТЕКСТ(100;"0") вернёт текст "100", и он будет посчитан). Но есть нюанс:

⚠️ Внимание: Ячейки с ошибками (#Н/Д, #ЗНАЧ!) ЕТЕКСТ тоже посчитает как текст. Если они есть в данных, используйте ЕОШИБКА для фильтрации.

Для больших диапазонов (10 000+ строк) эта формула может тормозить. В таком случае лучше использовать Power Query или VBA.

📊 Какой метод подсчёта текста вы используете чаще?
СЧЁТЕСЛИ
СУММПРОИЗВ с ЕТЕКСТ
Фильтры
VBA/Макросы
Другой

Метод 3: Фильтрация данных для визуального подсчёта

Если формулы кажутся сложными, можно обойтись без них:

  1. Выделите столбец с данными.
  2. Нажмите Данные → Фильтр (или Ctrl+Shift+L).
  3. Раскройте выпадающий список фильтра и выберите Текстовые фильтры → Содержит....
  4. В поле введите символ * (звёздочка) — это подстановочный знак для любого текста.

Excel отобразит только текстовые ячейки, а в статусной строке (внизу окна) покажет их количество. Этот способ наглядный, но имеет ограничения:

  • 📊 Не подходит для автоматизации (нужно повторять вручную).
  • 🔄 Не работает с динамическими диапазонами (при добавлении новых строк фильтр не обновляется).
  • 🛠️ Можно сохранить фильтр как таблицу Excel, тогда подсчёт будет обновляться автоматически.

Для быстрого подсчёта без формул это оптимальный вариант. А если нужно сохранить результат, скопируйте отфильтрованные данные в новый лист (Ctrl+C → Специальная вставка → Значения).

Удалить пустые строки в конце диапазона

Проверить наличие скрытых символов (неразрывные пробелы, табуляции)

Преобразовать числа, хранящиеся как текст, в реальный текстовый формат (через "Текст по столбцам")

Удалить дубликаты, если они мешают подсчёту-->

Метод 4: Комбинация функций для сложных условий

Допустим, вам нужно посчитать текстовые ячейки, которые не пустые, не содержат ошибок и не равны конкретному слову. Вот универсальная формула:

=СУММПРОИЗВ(--(ЕТЕКСТ(A2:A100)); --(A2:A100<>""); --(НЕ(ЕОШИБКА(A2:A100))); --(A2:A100<>"Исключаемый_текст"))

Разберём по частям:

Часть формулы Назначение
ЕТЕКСТ(A2:A100) Проверяет, что ячейка содержит текст
A2:A100<>"" Исключает пустые ячейки
НЕ(ЕОШИБКА(A2:A100)) Исключает ячейки с ошибками (#Н/Д и др.)
A2:A100<>"Исключаемый_текст" Исключает конкретное значение

Эта формула работает как многоуровневый фильтр. Если одно из условий не выполняется, ячейка не учитывается. Для удобства можно разбить её на части:

  1. Создайте вспомогательный столбец с формулой =ЕТЕКСТ(A2) и протяните вниз.
  2. Добавьте ещё один столбец с проверкой на пустоту: =A2<>"".
  3. Используйте СЧЁТЕСЛИМН для подсчёта по обоим столбцам.

Такой подход упрощает отладку и модификацию условий. Например, можно легко добавить проверку на длину текста (=ДЛСТР(A2)>5) или наличие конкретного символа (=НАЙТИ("@";A2)).

Метод 5: Power Query для обработки больших данных

Если у вас десятки тысяч строк, обычные формулы будут тормозить. В этом случае поможет Power Query (доступен в Excel 2016+ и Office 365):

  1. Выделите диапазон и нажмите Данные → Из таблицы/диапазона (или Ctrl+T, если данные уже в формате таблицы).
  2. В открывшемся редакторе Power Query выберите столбец с текстом.
  3. Нажмите Добавить столбец → Пользовательский столбец.
  4. Введите формулу: = if [Column1] is text then 1 else 0 (замените Column1 на имя вашего столбца).
  5. Нажмите Главная → Закрыть и загрузить.

Теперь в Excel появится новый столбец с единицами напротив текстовых ячеек. Остаётся только просуммировать его стандартной функцией СУММ.

Преимущества Power Query:

  • 🚀 Обрабатывает миллионы строк без тормозов.
  • 🔄 Автоматически обновляет результаты при изменении исходных данных.
  • 🛠️ Позволяет очищать данные на лету (удалять пробелы, исправлять регистр и т.д.).

Для ещё большей гибкости можно использовать регулярные выражения. Например, чтобы посчитать ячейки, содержащие email-адреса:

= Table.AddColumn(#"Previous Step", "IsEmail", each if Text.Contains([Column1], "@") and Text.EndsWith([Column1], ".ru") then 1 else 0)
Как ускорить Power Query для очень больших файлов

1. В настройках запроса отключите "Включить загрузку в модель данных" (если не нужна сводная таблица).

2. Используйте параметр "Только загружать" вместо "Загрузить и редактировать".

3. Преобразуйте данные в бинарный формат (.bina) через "Файл → Закрыть и загрузить в...".

Метод 6: VBA для автоматизации и сложной логики

Если вам нужно посчитать текстовые ячейки с учётом регистра, по нескольким критериям или в динамически изменяющемся диапазоне, на помощь придёт VBA. Вот пример макроса, который считает все текстовые ячейки в выделенном диапазоне:

Sub CountTextCells()

Dim rng As Range

Dim cell As Range

Dim count As Long

count = 0

Set rng = Selection

For Each cell In rng

If VarType(cell.Value) = vbString Then

count = count + 1

End If

Next cell

MsgBox "Количество текстовых ячеек: " & count, vbInformation

End Sub

Как использовать:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон в Excel и запустите макрос (F5).

Для подсчёта с учётом регистра замените условие на:

If VarType(cell.Value) = vbString And cell.Value = "ИскомыйТекст" Then

VBA также полезен для:

  • 📂 Рекурсивного подсчёта текста во всех листах книги.
  • 🔍 Поиска текстовых ячеек по шаблону (например, начинающихся с "А").
  • 📊 Создания отчётов с разбивкой по типам данных.
⚠️ Внимание: Макросы не работают в Excel Online и могут быть заблокированы настройками безопасности. Перед использованием проверьте уровень доверия в Файл → Параметры → Центр управления безопасностью.

Метод 7: Условное форматирование для визуализации

Иногда достаточно просто выделить текстовые ячейки, чтобы быстро оценить их количество. Для этого:

  1. Выделите диапазон.
  2. Нажмите Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =ЕТЕКСТ(A1).
  5. Задайте формат (например, заливку жёлтым цветом).

Теперь все текстовые ячейки будут подсвечены. Чтобы узнать их количество:

  1. Отфильтруйте данные по цвету (Данные → Фильтр → Фильтр по цвету ячейки).
  2. Посмотрите количество строк в статусной строке.

Этот метод полезен для:

  • 🎨 Быстрого анализа больших таблиц.
  • 🔎 Визуального контроля данных перед обработкой.
  • 📌 Выделения аномалий (например, чисел, сохранённых как текст).

Для автоматизации можно комбинировать условное форматирование с VBA. Например, макрос ниже посчитает количество цветных ячеек:

Sub CountColoredCells()

Dim rng As Range, cell As Range, count As Long

Set rng = Selection

count = 0

For Each cell In rng

If cell.Interior.Color = RGB(255, 255, 0) Then ' Жёлтый цвет

count = count + 1

End If

Next

MsgBox "Количество выделенных ячеек: " & count

End Sub

Сравнение методов: какой выбрать?

Выбор метода зависит от задачи, объёма данных и вашего уровня владения Excel. Вот краткое сравнение:

Метод Когда использовать Плюсы Минусы
СЧЁТЕСЛИ Подсчёт конкретного текста Простота, скорость Не учитывает регистр, не работает с формулами
СУММПРОИЗВ + ЕТЕКСТ Подсчёт всех текстовых ячеек Универсальность, работает с формулами Тормозит на больших диапазонах
Фильтры Разовый визуальный анализ Не требует формул Не автоматизируется
Power Query Большие данные, сложная логика Быстродействие, гибкость Требует изучения
VBA Автоматизация, учёта регистра Максимальная гибкость Не работает в Excel Online

Для большинства задач хватит комбинации СЧЁТЕСЛИ и СУММПРОИЗВ. Если данные обновляются часто, лучше использовать Power Query или таблицы Excel с автоматическим подсчётом. Для одноразовых задач подойдёт фильтрация.

FAQ: Частые вопросы о подсчёте текста в Excel

Можно ли посчитать текстовые ячейки с учётом регистра?

Стандартные функции Excel (например, СЧЁТЕСЛИ) не учитывают регистр. Для этого нужны:

  1. VBA-макрос с сравнением StrComp.
  2. Формула массива с ТОЧНОЕ (но она работает только для конкретного текста, не для всех текстовых ячеек).
  3. Power Query с настройкой чувствительности к регистру в параметрах загрузки.

Пример макроса:

Function CountExactText(rng As Range, txt As String) As Long

Dim cell As Range

For Each cell In rng

If StrComp(cell.Value, txt, vbBinaryCompare) = 0 Then

CountExactText = CountExactText + 1

End If

Next

End Function

Используйте в ячейке как =CountExactText(A1:A100; "Текст").

Почему ЕТЕКСТ возвращает ИСТИНА для ячеек с ошибками?

Функция ЕТЕКСТ воспринимает ошибки (#Н/Д, #ЗНАЧ!) как текстовые значения. Чтобы их исключить, комбинируйте с ЕОШИБКА:

=СУММПРОИЗВ(--(ЕТЕКСТ(A2:A100)); --(НЕ(ЕОШИБКА(A2:A100))))

Либо используйте ЕТИП для точной проверки:

=СУММПРОИЗВ(--(ЕТИП(A2:A100;2)))

Где 2 — код типа "текст" в Excel.

Как посчитать текстовые ячейки в Google Таблицах?

В Google Sheets работают те же принципы, но с некоторыми отличиями:

  • =COUNTIF(A2:A100; "*") — посчитает все непустые текстовые ячейки (звёздочка — подстановочный знак).
  • =SUMPRODUCT(--(ISTEXT(A2:A100))) — аналог СУММПРОИЗВ для подсчёта всех текстовых значений.
  • Функция REGEXMATCH для сложных условий: =COUNTIF(A2:A100; REGEXMATCH(A2:A100; "текст")).

В Google Таблицах также есть QUERY, который может заменить Power Query:

=QUERY(A2:A100; "SELECT COUNT(A) WHERE A MATCHES '.*'"; 1)
Можно ли посчитать текстовые ячейки по цвету?

Да, но только через VBA или надстройки. Стандартных функций для этого нет. Пример макроса:

Function CountByColor(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 Then

count = count + 1

End If

Next

CountByColor = count

End Function

Использование:

  1. Выделите ячейку с нужным цветом (например, B1).
  2. В любой ячейке введите =CountByColor(A2:A100; B1).

Для условного форматирования цвет подсчёту не поддаётся — придётся использовать Sub-процедуру, как в разделе про VBA.

Как посчитать уникальные текстовые значения?

Для подсчёта уникальных текстовых значений используйте:

  1. В Excel 365/2021: =СЧЁТЕСЛИМН(УНИК(A2:A100); УНИК(A2:A100); "<>").
  2. В старых версиях: комбинация ЧАСТОТА + СМЕЩ + ПОИСКПОЗ (требует нажатия Ctrl+Shift+Enter).
  3. В Power Query: загрузите данные, выделите столбец → Главная → Группировка → Количество строк.

Пример формулы массива для Excel 2016:

=СУММ(--(ЧАСТОТА(СМЕЩ(A2;;;СЧЁТЕСЛИ(A2:A100;"")); СМЕЩ(A2;;;СЧЁТЕСЛИ(A2:A100;"")))>0))

Не забудьте нажать Ctrl+Shift+Enter!