Как в Excel посчитать ячейки со словами и преобразовать текст в цифры

Работаете с данными, где вместо чисел в ячейках Excel записаны слова типа "пять", "двадцать три" или "сто пятьдесят"? Нужно быстро посчитать количество таких ячеек или конвертировать их в цифровой формат для анализа? Эта задача чаще всего возникает при импорте данных из внешних источников (1С, CRM, анкет), где числовые значения хранятся в текстовом виде.

Вручную переписывать сотни строк — не вариант. К счастью, в Excel есть минимум 5 способов автоматизировать процесс: от простых функций СЧЁТЕСЛИ до продвинутых инструментов вроде Power Query. В этой статье разберём каждый метод с примерами, нюансами и типичными ошибками. Вы узнаете, как не только подсчитать ячейки со словами, но и преобразовать их в числа для дальнейших вычислений.

Важно: если ваши текстовые числа написаны с опечатками (например, "пятть" вместо "пять"), стандартные формулы не сработают. В таком случае потребуется предварительная очистка данных — об этом тоже расскажем ниже.

📊 Как часто вы сталкиваетесь с текстовыми числами в Excel?
Ежедневно
Раз в неделю
Редико
Никогда

1. Подсчёт ячеек со словами функцией СЧЁТЕСЛИ

Самый простой способ посчитать количество ячеек с конкретным словом — использовать функцию СЧЁТЕСЛИ. Она работает с одним критерием и подходит для базового анализа. Например, если нужно узнать, сколько раз в столбце встречается слово "десять".

Формула выглядит так:

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

Где:

  • 📌 диапазон — столбец или строка с данными (например, A2:A100)
  • 🔍 "критерий" — искомое слово в кавычках (регистр не важен)

Пример: =СЧЁТЕСЛИ(B2:B50; "пять") вернёт количество ячеек со словом "пять" в диапазоне B2:B50. Но у этого метода есть ограничение: функция ищет точные совпадения. Если в ячейке написано "пять рублей", а вы ищете просто "пять" — совпадения не будет.

2. Продвинутый подсчёт с СЧЁТЕСЛИМН (несколько критериев)

Если нужно посчитать ячейки, соответствующие одному из нескольких условий, используйте СЧЁТЕСЛИМН. Например, когда требуется найти все ячейки со словами "один", "два" или "три".

Синтаксис:

=СЧЁТЕСЛИМН(диапазон; {"критерий1";"критерий2"})

Важно: критерии передаются как массив (в фигурных скобках). Пример:

=СЧЁТЕСЛИМН(A2:A100; {"один";"два";"три"})

Эта формула вернёт суммарное количество ячеек, содержащих любое из трёх указанных слов. Преимущество метода: можно задавать до 127 критериев одновременно. Недостаток: как и СЧЁТЕСЛИ, функция чувствительна к точным совпадениям.

⚠️ Внимание: Если в диапазоне есть пустые ячейки, СЧЁТЕСЛИМН проигнорирует их автоматически. Но если ячейка содержит пробел или неразрывный пробел (сивол CHAR(160)), она будет учитываться как непустая.

3. Преобразование текстовых чисел в цифры (русифицированные слова)

Подсчёт ячеек — это полдела. Чаще требуется конвертировать слова типа "семь" в цифру 7 для дальнейших расчётов. В Excel нет встроенной функции для этого, но есть обходные пути:

Способ 1. Функция ПОИСКПОЗ + пользовательский список

  1. Создайте на листе таблицу соответствий (столбец A — слова, столбец B — числа). Например:
    СловоЧисло
    ноль0
    один1
    два2
    ......
    девяносто девять99
  2. Используйте формулу:
    =ПОИСКПОЗ(текстовая_ячейка; диапазон_слов; 0)

    Где диапазон_слов — это столбец A из вашей таблицы.

  3. Оберните результат в ИНДЕКС, чтобы получить число:
    =ИНДЕКС(диапазон_чисел; ПОИСКПОЗ(A2; диапазон_слов; 0))

Способ 2. VBA-скрипт для автоматической конвертации

Если данных много, напишите простую макрос-функцию:

Function TextToNum(rng As Range) As Double

Select Case LCase(Trim(rng.Value))

Case "ноль": TextToNum = 0

Case "один": TextToNum = 1

' ... добавьте все варианты до 99

Case Else: TextToNum = CVErr(xlErrValue)

End Select

End Function

Теперь в ячейке можно использовать =TextToNum(A2).

Создать таблицу соответствий слов и чисел|Проверить регистр (привести к нижнему)|Удалить лишние пробелы функцией СЖПРОБЕЛЫ|Протестировать формулу на 5-10 ячейках-->

4. Использование Power Query для массовой обработки

Если данных тысячи строк, ручные методы неэффективны. Power Query (вкладка Данные → Получить данные) позволяет автоматизировать преобразование текстовых чисел в цифры.

Пошаговая инструкция:

  1. Выделите исходный диапазон и нажмите Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выделите столбец с текстовыми числами.
  3. Перейдите на вкладку Преобразовать → Заменить значения.
  4. Поочерёдно замените каждое слово (например, "один") на число (1).
  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Критичный нюанс: Power Query не распознаёт составные числа типа "двадцать пять" автоматически. Для них придётся создавать пользовательскую функцию на языке M или использовать предварительное разбиение текста.

⚠️ Внимание: При импорте данных из или CRM текстовые числа могут содержать непечатаемые символы (например, CHAR(10) — перевод строки). Очистите их функцией =ПЕЧСИМВ(A2) перед преобразованием.

5. Обработка составных чисел (например, "двадцать три")

Самый сложный случай — когда числа записаны прописью с пробелами: "сорок два", "сто пять". Здесь не обойтись без VBA или сложных формул. Пример макроса для чисел до 999:

Function WordsToNum(rng As Range) As Variant

Dim arrWords(1 To 999) As String

arrWords(1) = "один": arrWords(2) = "два"

' ... заполните массив до 999

WordsToNum = Application.Match(LCase(Trim(rng.Value)), arrWords, 0)

End Function

Для чисел >999 потребуется парсинг по частям (тысячи, миллионы) с использованием функции РАЗБИТЬ.ТЕКСТ (или TextToColumns в VBA).

Альтернатива — онлайн-сервисы вроде NumWord, которые конвертируют прописные числа в цифры. Можно скопировать данные в сервис, обработать и вставить обратно в Excel.

Как обработать числа с валютами (например, "пять рублей")

Используйте комбинацию функций ПОИСК и ПСТР, чтобы извлечь числовую часть:

=ПСТР(A2; 1; ПОИСК(" "; A2)-1)

Затем применяйте методы конвертации из раздела 3 к извлечённому тексту ("пять").

6. Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с текстовыми числами. Вот самые распространённые:

  • Опечатки в словах: "шесть" вместо "шесть" (опечатка в букве "с"). Решение: используйте =ПОДСТАВИТЬ(A2; "шесть"; "шесть") для исправления.
  • Лишние символы: "10 кг" или "5 шт". Решение: очищайте данные функцией =ЗАМЕНИТЬ(A2; " кг"; "").
  • Разный регистр: "Один" vs "один". Решение: приводите к нижнему регистру =НИЖНРЕГ(A2).
  • Составные числа с дефисами: "двадцать-три". Решение: замените дефис на пробел =ПОДСТАВИТЬ(A2; "-"; " ").

Ещё одна ловушка — ячейки с формулами, возвращающими текст. Например, если в ячейке формула =ЕСЛИ(B2>10; "много"; "мало"), функции СЧЁТЕСЛИ её не посчитают как текстовое число. В этом случае используйте =СЧИТАТЬПУСТОТЫ для косвенной проверки.

7. Автоматизация с помощью макросов

Если вам регулярно приходится конвертировать текстовые числа, создайте пользовательскую функцию VBA. Пример кода для чисел от 0 до 999:

Function RusToNum(rng As Range) As Variant

Dim rusNums As Variant, i As Integer

rusNums = Array("ноль", "один", "два", ..., "девятьсот девяносто девять")

On Error Resume Next

RusToNum = Application.WorksheetFunction.Match( _

LCase(Trim(rng.Value)), rusNums, 0) - 1

If Err.Number <> 0 Then RusToNum = CVErr(xlErrValue)

End Function

Чтобы использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. В ячейке Excel введите =RusToNum(A2).

Для обработки больших диапазонов напишите макрос, который пройдётся по всем ячейкам:

Sub ConvertAll()

Dim rng As Range, cell As Range

Set rng = Selection

For Each cell In rng

cell.Offset(0, 1).Value = RusToNum(cell)

Next cell

End Sub

FAQ: Частые вопросы по работе с текстовыми числами

Можно ли автоматически преобразовать "сто двадцать три" в 123 без VBA?

Без VBA это возможно только для ограниченного диапазона чисел (до 99) с помощью длинной цепочки функций ЕСЛИ или ВЫБОР. Для чисел >99 потребуется либо макрос, либо предварительное разбиение текста на части (например, с помощью РАЗБИТЬ.ТЕКСТ в новых версиях Excel).

Почему СЧЁТЕСЛИ не находит ячейку со словом "три", хотя оно там есть?

Вероятные причины:

  • В ячейке есть невидимые символы (пробелы, переносы строк). Проверьте с помощью =ДЛСТР(A2) — если длина больше, чем количество видимых символов, очистите ячейку функцией =СЖПРОБЕЛЫ(A2).
  • Слово написано с другой раскладкой (например, "ghbdtn" вместо "привет"). Используйте =ПОДСТАВИТЬ для исправления.
  • В функции СЧЁТЕСЛИ указан неверный диапазон или регистр критерия не совпадает (например, ищете "Три" с большой буквы, а в ячейке "три").

Как посчитать ячейки, содержащие любые текстовые числа (независимо от слова)?

Используйте комбинацию функций ЕСЛИ, ИЛИ и ПОИСК:

=СЧЁТЕСЛИМН(диапазон; {"ноль";"один";"два";...;"девяносто девять"})

Или создайте пользовательский список текстовых чисел и используйте СЧЁТЕСЛИМН с массивом критериев. Для больших диапазонов эффективнее написать VBA-скрипт.

Можно ли преобразовать текстовые числа напрямую в Power Query без ручного замены?

В стандартной версии Power Query нет встроенной функции для конвертации русифицированных текстовых чисел. Однако можно:

  1. Создать пользовательскую функцию на языке M (аналог VBA).
  2. Использовать условную колонку с множеством правил замены (неудобно для больших чисел).
  3. Подключить Python-скрипт в Power Query (доступно в Excel 2016+), который будет обрабатывать текст.

Как обработать текстовые числа с дробями (например, "три целых пять десятых")?

Это самый сложный случай. Рекомендации:

  • 🔹 Разбейте текст на части с помощью РАЗБИТЬ.ТЕКСТ (или TextToColumns в VBA), выделив целую и дробную части.
  • 🔹 Преобразуйте каждую часть отдельно (см. раздел 3).
  • 🔹 Объедините результаты с помощью формулы:
    =целые_числа + (дробные_числа / 10)
  • 🔹 Для автоматизации напишите VBA-функцию с парсингом по ключевым словам ("целых", "десятых", "сотых").