Работаете с данными, где вместо чисел в ячейках Excel записаны слова типа "пять", "двадцать три" или "сто пятьдесят"? Нужно быстро посчитать количество таких ячеек или конвертировать их в цифровой формат для анализа? Эта задача чаще всего возникает при импорте данных из внешних источников (1С, CRM, анкет), где числовые значения хранятся в текстовом виде.
Вручную переписывать сотни строк — не вариант. К счастью, в Excel есть минимум 5 способов автоматизировать процесс: от простых функций СЧЁТЕСЛИ до продвинутых инструментов вроде Power Query. В этой статье разберём каждый метод с примерами, нюансами и типичными ошибками. Вы узнаете, как не только подсчитать ячейки со словами, но и преобразовать их в числа для дальнейших вычислений.
Важно: если ваши текстовые числа написаны с опечатками (например, "пятть" вместо "пять"), стандартные формулы не сработают. В таком случае потребуется предварительная очистка данных — об этом тоже расскажем ниже.
1. Подсчёт ячеек со словами функцией СЧЁТЕСЛИ
Самый простой способ посчитать количество ячеек с конкретным словом — использовать функцию СЧЁТЕСЛИ. Она работает с одним критерием и подходит для базового анализа. Например, если нужно узнать, сколько раз в столбце встречается слово "десять".
Формула выглядит так:
=СЧЁТЕСЛИ(диапазон; "критерий")
Где:
- 📌
диапазон— столбец или строка с данными (например,A2:A100) - 🔍
"критерий"— искомое слово в кавычках (регистр не важен)
Пример: =СЧЁТЕСЛИ(B2:B50; "пять") вернёт количество ячеек со словом "пять" в диапазоне B2:B50. Но у этого метода есть ограничение: функция ищет точные совпадения. Если в ячейке написано "пять рублей", а вы ищете просто "пять" — совпадения не будет.
2. Продвинутый подсчёт с СЧЁТЕСЛИМН (несколько критериев)
Если нужно посчитать ячейки, соответствующие одному из нескольких условий, используйте СЧЁТЕСЛИМН. Например, когда требуется найти все ячейки со словами "один", "два" или "три".
Синтаксис:
=СЧЁТЕСЛИМН(диапазон; {"критерий1";"критерий2"})
Важно: критерии передаются как массив (в фигурных скобках). Пример:
=СЧЁТЕСЛИМН(A2:A100; {"один";"два";"три"})
Эта формула вернёт суммарное количество ячеек, содержащих любое из трёх указанных слов. Преимущество метода: можно задавать до 127 критериев одновременно. Недостаток: как и СЧЁТЕСЛИ, функция чувствительна к точным совпадениям.
⚠️ Внимание: Если в диапазоне есть пустые ячейки,СЧЁТЕСЛИМНпроигнорирует их автоматически. Но если ячейка содержит пробел или неразрывный пробел (сиволCHAR(160)), она будет учитываться как непустая.
3. Преобразование текстовых чисел в цифры (русифицированные слова)
Подсчёт ячеек — это полдела. Чаще требуется конвертировать слова типа "семь" в цифру 7 для дальнейших расчётов. В Excel нет встроенной функции для этого, но есть обходные пути:
Способ 1. Функция ПОИСКПОЗ + пользовательский список
- Создайте на листе таблицу соответствий (столбец A — слова, столбец B — числа). Например:
Слово Число ноль 0 один 1 два 2 ... ... девяносто девять 99 - Используйте формулу:
=ПОИСКПОЗ(текстовая_ячейка; диапазон_слов; 0)Где
диапазон_слов— это столбец A из вашей таблицы. - Оберните результат в
ИНДЕКС, чтобы получить число:=ИНДЕКС(диапазон_чисел; ПОИСКПОЗ(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 (вкладка Данные → Получить данные) позволяет автоматизировать преобразование текстовых чисел в цифры.
Пошаговая инструкция:
- Выделите исходный диапазон и нажмите
Данные → Из таблицы/диапазона. - В редакторе Power Query выделите столбец с текстовыми числами.
- Перейдите на вкладку
Преобразовать → Заменить значения. - Поочерёдно замените каждое слово (например, "один") на число (
1). - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Критичный нюанс: Power Query не распознаёт составные числа типа "двадцать пять" автоматически. Для них придётся создавать пользовательскую функцию на языке M или использовать предварительное разбиение текста.
⚠️ Внимание: При импорте данных из 1С или 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.
Используйте комбинацию функций ПОИСК и ПСТР, чтобы извлечь числовую часть:
Затем применяйте методы конвертации из раздела 3 к извлечённому тексту ("пять").Как обработать числа с валютами (например, "пять рублей")
=ПСТР(A2; 1; ПОИСК(" "; A2)-1)
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
Чтобы использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Сохраните файл как
.xlsm(с поддержкой макросов). - В ячейке 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 нет встроенной функции для конвертации русифицированных текстовых чисел. Однако можно:
- Создать пользовательскую функцию на языке M (аналог VBA).
- Использовать условную колонку с множеством правил замены (неудобно для больших чисел).
- Подключить Python-скрипт в Power Query (доступно в Excel 2016+), который будет обрабатывать текст.
Как обработать текстовые числа с дробями (например, "три целых пять десятых")?
Это самый сложный случай. Рекомендации:
- 🔹 Разбейте текст на части с помощью
РАЗБИТЬ.ТЕКСТ(илиTextToColumnsв VBA), выделив целую и дробную части. - 🔹 Преобразуйте каждую часть отдельно (см. раздел 3).
- 🔹 Объедините результаты с помощью формулы:
=целые_числа + (дробные_числа / 10) - 🔹 Для автоматизации напишите VBA-функцию с парсингом по ключевым словам ("целых", "десятых", "сотых").