Работа с текстом и числами в Excel: длина строк и пропись сумм

Иван Корнев·21.05.2024·3 мин

Чтобы узнать количество символов в ячейке, используйте функцию =ДЛСТР(ячейка). Для преобразования числа в текст прописью (например, «сто рублей») встроенной функции в русской версии Excel нет — потребуется создать пользовательскую функцию через редактор VBA или использовать готовую надстройку. Ниже приведены подробные инструкции для обоих случаев.

Подсчет количества символов

Функция ДЛСТР (англ. LEN) возвращает длину строки, считая каждый знак, включая пробелы, знаки препинания и специальные символы.

Базовые формулы

ЗадачаФормулаОписание
Полная длина текста=ДЛСТР(A1)Считает все символы в ячейке A1.
Длина без пробелов=ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))Удаляет пробелы перед подсчетом.
Сумма длин в диапазоне=СУММПРОИЗВ(ДЛСТР(A1:A10))Складывает количество символов во всех ячейках списка.

Функция СУММПРОИЗВ позволяет обрабатывать диапазоны без необходимости нажимать Ctrl+Shift+Enter, что удобно в современных версиях Excel.

Нюансы подсчета

  • Скрытые символы: Если данные скопированы из веба, в них могут быть неразрывные пробелы (код 160). Обычная замена " " их не удалит. Используйте =ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ") перед основным подсчетом.
  • Лишние пробелы: Для очистки текста от лишних пробелов по краям и внутри слова применяйте =СЖПРОБЕЛЫ(A1).

Преобразование числа в текст прописью

В английской версии Excel есть функция DOLLAR, но она не склоняет слова по падежам и не поддерживает русский язык. Для корректного вывода («одна тысяча двести рублей») необходимо использовать макрос (VBA).

Инструкция по созданию функции

  1. Откройте книгу Excel и нажмите Alt + F11, чтобы запустить редактор VBA.
  2. В меню выберите Insert > Module.
  3. Вставьте в открывшееся окно следующий код (это упрощенный алгоритм для целых чисел):
Function ЧислоПрописью(ByVal MyNumber As Double) As String
    Dim Rubles As Long, Kopecks As Integer
    Dim Result As String
    
    If MyNumber < 0 Then
        ЧислоПрописью = "Отрицательное значение не поддерживается"
        Exit Function
    End If
    
    Rubles = Int(MyNumber)
    Kopecks = Round((MyNumber - Rubles) * 100, 0)
    
    ' Здесь должна быть полная логика склонения числительных
    ' Для примера выводится базовая структура. 
    ' В реальном проекте используйте полный модуль конвертации (сотни, тысячи, миллионы)
    
    Result = CStr(Rubles) & " рублей " & CStr(Kopecks) & " копеек"
    ЧислоПрописью = Result
End Function

Приведенный выше код является демонстрационным. Для полноценной работы с грамматикой русского языка (склонение «рубль/рубля/рублей») требуется объемный код (около 300–400 строк). Рекомендуется скачать проверенный модуль NumToText.bas из надежных источников и импортировать его в проект.

  1. Закройте редактор VBA.
  2. Сохраните файл в формате «Книга Excel с поддержкой макросов» (.xlsm).
  3. Используйте новую функцию в ячейке как обычную формулу: =ЧислоПрописью(A1).

Альтернативы без программирования

Если использование макросов запрещено политикой безопасности компании:

  • Надстройки: Установите специализированные аддоны (например, «Plex» или «VBA-Excel»), добавляющие функцию СуммаПрописью.
  • Онлайн-конвертеры: Введите число на специализированном сайте, скопируйте результат и вставьте в Excel (подходит для разовых задач).
  • Power Query: Можно написать скрипт на языке M, но это требует высокой квалификации и сложнее в поддержке, чем простой макрос.

Частые ошибки

  • #ИМЯ? при использовании макроса: Убедитесь, что файл сохранен в формате .xlsm и макросы включены в настройках безопасности («Файл» > «Параметры» > «Центр управления безопасностью»).
  • Неверный подсчет длины: Вы забыли, что ДЛСТР считает и пробелы. Если нужно только количество букв, сначала удалите пробелы функцией ПОДСТАВИТЬ.
  • Ошибки округления копеек: При работе с деньгами всегда используйте функцию ОКРУГЛ перед передачей числа в макрос, чтобы избежать ошибок вида «99 копеек» вместо «100 копеек» из-за двоичной арифметики процессора.

FAQ

Как посчитать символы без учета конкретного знака (например, дефиса)? Используйте вложенную функцию замены: =ДЛСТР(ПОДСТАВИТЬ(A1;"-";"")).

Работает ли функция прописью в Google Таблицах? Нет, макросы VBA не работают в Google Sheets. Там нужно использовать скрипты Apps Script или готовые аддоны из магазина расширений.

Можно ли сделать пропись заглавными буквами? Да, оберните функцию в ПРОПНАЧ: =ПРОПНАЧ(ЧислоПрописью(A1)). Результат: «СТО РУБЛЕЙ 00 КОПЕЕК».

Почему формула СУММПРОИЗВ выдает ошибку? Убедитесь, что в диапазоне нет текстовых значений, которые нельзя интерпретировать, или используйте конструкцию =СУММПРОИЗВ(ДЛСТР(ЕСЛИОШИБКА(A1:A10;""))).