Сумма прописью в Excel и Google Таблицах

Для одной суммы используйте калькулятор. Столбец в Excel или Google Таблицах обработает функция, обновляющая пропись вслед за числом.

Сумма прописью в Excel и Google Таблицах

Представьте счёт на 1 523,07 ₽: рядом с цифрами требуется «Одна тысяча пятьсот двадцать три рубля 07 копеек». На одной строке проще проверить результат глазами и вставить его в документ. Когда таких строк десятки, хочется формулу, которая обновит слова вслед за суммой. Ниже есть оба пути, готовые файлы с кодом и набор чисел, на которых легко поймать неверное окончание или потерянный ноль.

В статье вы узнаете:

Какой способ выбрать для своей задачи

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

Повторяющиеся строки в настольном Excel. Добавьте в книгу пользовательскую функцию VBA, то есть небольшой код, который работает как формула. В B2 введите =RUBWORDS(A2) и протяните формулу вниз. При изменении A2 текст в B2 пересчитается. Книгу нужно сохранить в формате .xlsm, иначе код не останется внутри.

Повторяющиеся строки в Google Таблицах. Добавьте функцию Apps Script в саму таблицу. Для одной строки формула такая же: =RUBWORDS(A2). Для большого столбца можно передать диапазон одной формулой =RUBWORDS(A2:A100), если ячейки под результатом пусты. Скрипт вернёт столбец готовых фраз.

У Excel в браузере есть важная граница: он открывает книгу с VBA, но не создаёт, не редактирует и не выполняет такой макрос. Если работаете только в браузере Microsoft, используйте разовый перевод или откройте книгу в настольном Excel. Надпись «Excel» на вкладке браузера не делает VBA доступным.

Что должна выдавать функция, а что остаётся числом

Пусть в A2 хранится числовое значение 1523,07, а в B2 его текстовая запись: «Одна тысяча пятьсот двадцать три рубля 07 копеек». Это два разных типа данных. Сумму в A2 можно складывать, умножать и округлять. Текст в B2 удобно вставлять в документ, но складывать такие фразы уже бессмысленно. Не заменяйте исходное число словами: держите их в соседних столбцах, чтобы видеть расхождение.

Формат ячейки решает другую задачу. Он может показать 1523,07 как 1 523,07 ₽ или 1 523,07 руб., но не составит русскую фразу с тысячами, рублями и копейками. Функции TEXT и DOLLAR тоже меняют представление цифр. В Excel есть BAHTTEXT, однако она создаёт запись тайских батов, а не рублей. Переключение языка интерфейса или региональных настроек не превращает её в русскую пропись.

Для нашей задачи зафиксируем один формат результата: рубли словами, копейки двумя цифрами и подходящим словом. Поэтому 1,05 станет «Один рубль 05 копеек», а 1,50 или 1,5 после приведения суммы к копейкам дадут «Один рубль 50 копеек». Если бланк требует копейки словами, валюту без копеек или сумму в косвенном падеже, эти функции не подойдут без переработки.

Быстрый маршрут: где готовить пропись

Выбор способа перевести сумму в слова
Если у васЧто открытьЧто проверить
Одна итоговая суммаКалькулятор eCalcПосле правки числа скопировать фразу заново
Столбец в настольном ExcelКнигу с VBA-функциейФормат .xlsm и числовые ячейки
Столбец в Google ТаблицахТаблицу с Apps ScriptСвободные ячейки под результатом массива

Как добавить сумму прописью в настольный Excel

Создайте небольшую копию своей книги для проверки. Положите в A2 число 1523,07. Если вы видите в строке формул апостроф перед суммой или значение выровнено как текст, сначала превратите его в число: пользовательская функция рассчитана на числовую ячейку. Обычное отображение с пробелом между тысячами не мешает, если под ним хранится число.

Откройте редактор VBA в настольном Excel: в Windows нажмите Alt+F11, на Mac Fn+Option+F11. Если сочетание не сработало, откройте вкладку «Разработчик» и выберите Visual Basic; скрытую вкладку можно включить в настройках ленты. В окне редактора выделите свою книгу слева и выберите Insert → Module («Вставка» → «Модуль»). Откройте код функции RUBWORDS для Excel, скопируйте его целиком и вставьте в появившееся окно модуля. Затем сохраните книгу как «Книга Excel с поддержкой макросов» (.xlsm). При сохранении в .xlsx VBA-код теряется.

Вернитесь на лист и введите в B2 =RUBWORDS(A2). Результат должен быть таким: «Одна тысяча пятьсот двадцать три рубля 07 копеек». Измените A2 на 1000: B2 станет «Одна тысяча рублей 00 копеек». После этой короткой проверки протяните формулу по нужным строкам. В Excel каждая ячейка B обращается к своему соседу A.

Макросы могут выполнять произвольный код, поэтому Excel ограничивает их запуск. Не включайте все макросы глобально ради одной книги и не копируйте случайную надстройку из поиска. Код здесь небольшой и открытый: можно прочитать его перед вставкой. Если организация запрещает VBA политикой безопасности, обойти запрет «магической формулой» не получится; используйте ручной перевод или согласованный корпоративный способ.

Код принимает неотрицательные числовые суммы до 999 999 999 999,99 с точностью до копейки. Пустая ячейка даёт пустой результат. Текст вместо числа, отрицательное значение, сумма вне диапазона или, например, 1,005 без предварительного округления приводят к #ЗНАЧ! (#VALUE! в англоязычном Excel). Незаметный шум хранения чисел компьютер обычно допускает, но половину копейки он не угадывает. Так ошибка остаётся заметной, а не попадает в документ как правдоподобная неверная фраза.

Как добавить функцию в Google Таблицы

Откройте нужную Google Таблицу и выберите «Расширения» → «Apps Script». В открывшемся редакторе вставьте код RUBWORDS для Google Таблиц и сохраните проект. В таблице положите число 1523,07 в A2, а в B2 введите =RUBWORDS(A2). После расчёта появится та же фраза, что в Excel. Имя функции не зависит от языка интерфейса; название «Apps Script» может оставаться английским.

Для списка сумм можно поставить в B2 =RUBWORDS(A2:A100). Функция обработает диапазон за один вызов и заполнит результаты вниз. Перед этим освободите B3:B100: если там есть значения, таблица не сможет развернуть массив. В отличие от Excel-версии, скрипт специально умеет принимать двумерный диапазон. Для нескольких строк также работает обычное протягивание =RUBWORDS(A2), но десятки отдельных вызовов могут считать медленнее одной формулы с диапазоном.

Связь с исходной ячейкой важна. Передавайте A2 прямо в формулу, и при изменении числа функция получит новое значение. Скрипт считает только переданный аргумент и возвращает текст в ячейку результата; ему не нужен доступ к почте, диску или другим таблицам. Чистая пользовательская функция такого типа не запрашивает разрешения к личным данным. Если сторонняя надстройка просит широкие разрешения, это уже другой способ работы, не требующийся для примера.

Функция привязана к той таблице, куда вы добавили код. Если скопировать только отдельную ячейку с формулой в чужую таблицу, там может появиться ошибка неизвестной функции: вместе с формулой не переехал скрипт. Создайте копию всей таблицы с привязанным проектом или добавьте код в другую таблицу отдельно. У пользовательских функций Google есть ограничения времени и количества вызовов, поэтому для больших списков мы предусмотрели обработку диапазона сразу.

Почему «рубль», «рубля» и «рублей» меняются не по последней цифре

Для целого количества рублей нужны три формы: 1 рубль, 2 рубля, 5 рублей. У 21 и 22 повторяются окончания 1 и 2: 21 рубль, 22 рубля. Но 11, 12, 13 и 14 перебивают правило последней цифры: 11 рублей, 12 рублей, 114 рублей. Функция смотрит сначала на последние две цифры, а потом на последнюю.

Копейки подчиняются такой же схеме: 01 копейка, 02 копейки, 05 копеек, 11 копеек, 21 копейка. Две цифры в начале здесь не просто украшение. В документе 05 нельзя незаметно спутать с 50; слово при этом согласуется с числом пять. Нули в тексте сохраняет сама функция, а не формат исходной ячейки.

Тысячи добавляют ещё одно правило: эта группа женского рода. Поэтому 1000 записывается «одна тысяча», 2000 как «две тысячи», 5000 как «пять тысяч». Миллион и миллиард мужского рода: «один миллион», «два миллиарда». Прописи недостаточно выбрать только правильное слово «рубль»: сначала нужно перевести каждую группу из трёх цифр, назвать её разряд и выбрать форму для разряда.

Возьмём 1 021 004,05. Отделите копейки 05, затем читайте рубли тройками справа налево: 1 | 021 | 004. Первая группа даёт «один миллион». Средняя, несмотря на начальный ноль, означает «двадцать одна тысяча». Последняя даёт «четыре рубля». Соберите фразу: «Один миллион двадцать одна тысяча четыре рубля 05 копеек». Ноль перед 21 не произносится, а 05 в копейках остаётся двумя цифрами. Этот пример одновременно проверяет мужской и женский род, пропущенные сотни и слово после четвёрки.

Подробно про три формы существительного после числа есть отдельная статья «Один год, два года, пять лет». Здесь важно применить правило дважды: к рублям и к копейкам, а ещё отдельно к тысячам, миллионам и миллиардам.

Контрольные суммы: проверьте функцию до документов

Не начинайте с большой ведомости. Введите контрольные значения в A2:A16, поставьте рядом формулу и сравните результат. В таблице ниже достаточно намеренно неудобных случаев: ноль, окончания 1/2/5, «подростковые» 11–14, женский род у тысяч и ведущий ноль у копеек.

Контрольные суммы и ожидаемые результаты функции RUBWORDS
Сумма в AОжидаемый текст в B
0Ноль рублей 00 копеек
1Один рубль 00 копеек
2Два рубля 00 копеек
5Пять рублей 00 копеек
11Одиннадцать рублей 00 копеек
21Двадцать один рубль 00 копеек
22Двадцать два рубля 00 копеек
0,01Ноль рублей 01 копейка
0,02Ноль рублей 02 копейки
0,05Ноль рублей 05 копеек
0,11Ноль рублей 11 копеек
1000Одна тысяча рублей 00 копеек
2000Две тысячи рублей 00 копеек
1523,07Одна тысяча пятьсот двадцать три рубля 07 копеек
1021004,05Один миллион двадцать одна тысяча четыре рубля 05 копеек

Если 1, 2 и 5 работают, но 11 выходит как «одиннадцать рубль», ошибка в исключении 11–14. Если 1000 даёт «один тысяча», перепутан род группы тысяч. Если 1,05 превращается в 50 копеек, потеряно место нуля после запятой. Ошибку ищут по тому, какой тип контрольного числа сломался, а не по одной длинной фразе.

Копейки и округление: что таблица показывает, а что хранит

Ячейка может выглядеть как 1,00 ₽, но хранить 1,0049. Формат с двумя знаками меняет экран, не исправляет исходное число. Наши функции остановятся на сумме вроде 1,005 и не будут угадывать, как округлить половину копейки; совсем малый шум хранения числа они допускают. Сначала получите итоговую сумму по правилам своей задачи и округлите её до сотых в отдельной числовой ячейке, затем передайте эту ячейку в RUBWORDS. Например, если A2 содержит 1,005, в русском Excel B2 может содержать =ОКРУГЛ(A2;2), а C2 =RUBWORDS(B2). В Google Таблицах названия встроенных функций и разделитель аргументов зависят от языковых настроек, поэтому в подсказке к функции найдите ОКРУГЛ или ROUND и укажите два знака. Для бухгалтерских данных правило округления проверьте отдельно от функции прописи.

Другой случай проще и встречается чаще. Введите 1,5 в числовую ячейку: это один рубль пятьдесят копеек, то есть 1,50. Введите 1,05: это один рубль пять копеек. Нельзя «дописать ноль для красоты» справа или слева от дробной части без понимания, какое число было исходным. Если сумму импортировали из CSV, проверьте ещё разделитель десятичной части и то, что ячейка стала числом, а не строкой.

Как перенести результат в документ и не потерять связь с цифрами

Представьте, что счёт сначала был на 1523,07, вы скопировали текст и вставили его в договор. Потом цену исправили на 1524,07. Формула в таблице пересчиталась, но вставленный абзац в договоре сам не обновится. Перед отправкой документа сравните три места: итоговую числовую ячейку, соседнюю пропись и готовый файл. Лучше делать это после последнего изменения суммы, а не после первой версии счёта.

Если в документе есть НДС, скидка или несколько строк, сначала проверьте сам итоговый расчёт. Пропись честно повторит ошибочное число, если дать ей ошибочную ячейку. Функция не проверяет ставку налога, валюту, реквизиты или формулировку конкретного договора. Иногда бланк просит «00 копеек», иногда отдельное поле только для рублей, иногда текст внутри скобок. Переносите готовую фразу в формат своего документа, не рассчитывая, что любой шаблон принимает одну запись.

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

Если формула не работает

Excel пишет #ИМЯ? или #NAME?. Проверьте, что код вставлен в обычный модуль именно этой открытой книги, имя функции написано RUBWORDS, файл сохранён как .xlsm, а его макросы разрешены политикой вашей организации. В Excel для браузера VBA-функция не выполнится: откройте книгу в настольном приложении.

Excel пишет #ЗНАЧ!. Сначала посмотрите на A2: там может быть текст с символом валюты, отрицательная сумма, дробная копейка или число за пределом функции. Уберите обозначение валюты из значения и задайте его форматом ячейки; сумму с долями копейки округлите отдельной формулой.

Google Таблицы не знают RUBWORDS. Проверьте, что скрипт сохранён в проекте именно этой таблицы и имя функции не изменилось. Если формулу перенесли в другой файл, скопируйте туда код или всю таблицу целиком. Если функция с диапазоном жалуется на занятые ячейки, освободите столбец результата под ним.

Слова не меняются после исправления суммы. Убедитесь, что аргумент формулы ссылается на ячейку с новым числом, например =RUBWORDS(A2), а не на число, набранное прямо в формуле. Вставленная в договор строка тоже не пересчитывается: это уже обычный текст.

Итог: автоматизируйте повторение, а не проверку

Для одного документа возьмите итоговое число и получите текст в калькуляторе. Для колонок используйте собственную функцию в настольном Excel или Google Таблицах, предварительно проверив её на 0, 1, 2, 5, 11, тысячах и копейках с нулём. Затем перенесите результат в документ и ещё раз сопоставьте его с цифрами. Машина хорошо повторяет правило; ответственность за исходную сумму и окончательный бланк остаётся у человека.

Есть что добавить?

Напишите своё мнение, комментарий или предложение.