Сумма прописью в Google Таблицах
В Google Таблицах, как и в Excel, нет кнопки или готовой формулы, которая сама превращает «1500,50» в «одна тысяча пятьсот рублей 50 копеек». Разбираемся, почему так, и что делать: без кода, с готовой надстройкой или со своей функцией на Apps Script.
Опубликовано
Почему в Google Таблицах нет готовой функции
СУММ, СРЗНАЧ, ВПР — универсальные математические операции, которые одинаково работают в любой стране и на любом языке. «Сумма прописью» устроена иначе: результат зависит от валюты (рубли или доллары), от рода слова («один рубль», но «одна копейка»), от того, нужна ли дробная часть словами или цифрами. Такую языковую логику Google, как и Microsoft, не включает в базовый набор функций листа — она либо живёт в надстройках из Google Workspace Marketplace, либо добавляется отдельным скриптом под конкретную задачу.
Способ 1 — без кода и без надстроек: разовая печать через калькулятор
Если сумму прописью нужно получить один раз или изредка — для конкретного счёта, акта или договора — необязательно ничего настраивать в самой таблице. Проще ввести число в готовый онлайн-калькулятор в браузере и вставить получившийся текст в нужную ячейку как обычное значение:
- Откройте страницу «Сумма прописью» — калькулятор работает прямо в браузере, без скачивания файлов.
- Введите сумму и выберите валюту и формат копеек (словами или цифрами).
- Скопируйте результат и вставьте его в ячейку Google Таблицы обычным текстом.
Минус способа очевиден: текст не пересчитывается сам при изменении числа в другой ячейке — это просто статичная строка. Для одноразовых документов это не проблема, для регулярной работы удобнее один из двух способов ниже.
Способ 2 — готовая надстройка из Google Workspace Marketplace
Если функция нужна регулярно, а писать код не хочется, в Google Workspace Marketplace есть готовые надстройки, которые добавляют в таблицу свою формулу для перевода числа в текст на русском — без единой строчки кода со стороны пользователя.
- В открытой таблице зайдите в меню «Расширения» → «Дополнения» → «Установить дополнения».
- Найдите надстройку по запросу вроде «сумма прописью» или «number to words» и установите её.
- После установки формула из надстройки становится доступна в ячейках так же, как обычная функция листа — например,
=ЦЕНАВТЕКСТ(A1)(конкретное имя формулы зависит от выбранной надстройки).
Способ 3 — своя функция на Apps Script
Самый гибкий вариант — написать пользовательскую функцию самому. Это не надстройка и не отдельная программа: обычный скрипт, привязанный к таблице, который после сохранения вызывается в ячейке как формула листа.
- Откройте таблицу и выберите «Расширения» → «Apps Script» — откроется отдельная вкладка редактора кода.
- Удалите содержимое файла
Code.gsи вставьте вместо него функцию перевода числа в текст (пример логики — ниже). - Нажмите «Сохранить» (значок дискеты) и вернитесь в таблицу.
- Впишите формулу в ячейку, например:
=СУММАПРОПИСЬЮ(A1)— результат обновится вместе с числом в A1.
Ниже — упрощённый, но рабочий пример на Apps Script: перевод суммы в рублях и копейках в текст с согласованием слова «рубль/рубля/рублей» по числу.
function СУММАПРОПИСЬЮ(sum) {
var onesM = ['', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
var onesF = ['', 'одна', 'две', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
var teens = ['десять','одиннадцать','двенадцать','тринадцать','четырнадцать',
'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать'];
var tens = ['', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят',
'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
var huns = ['', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот',
'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'];
function pluralForm(n, forms) { // forms = [1, 2-4, 5-20]
var n100 = n % 100;
if (n100 >= 11 && n100 <= 19) return forms[2];
var n10 = n % 10;
if (n10 === 1) return forms[0];
if (n10 >= 2 && n10 <= 4) return forms[1];
return forms[2];
}
function threeDigits(n, feminine) {
var words = [];
var h = Math.floor(n / 100), t = Math.floor((n % 100) / 10), o = n % 10;
if (h > 0) words.push(huns[h]);
if (t === 1) {
words.push(teens[o]);
} else {
if (t > 0) words.push(tens[t]);
if (o > 0) words.push(feminine ? onesF[o] : onesM[o]);
}
return words.join(' ');
}
function integerToWords(n, feminine) {
if (n === 0) return 'ноль';
var thousands = Math.floor(n / 1000);
var rest = n % 1000;
var parts = [];
if (thousands > 0) {
parts.push(threeDigits(thousands, true));
parts.push(pluralForm(thousands, ['тысяча', 'тысячи', 'тысяч']));
}
if (rest > 0 || thousands === 0) parts.push(threeDigits(rest, feminine));
return parts.filter(String).join(' ');
}
sum = Number(sum) || 0;
var rub = Math.floor(sum);
var kop = Math.round((sum - rub) * 100);
var rubForm = pluralForm(rub, ['рубль', 'рубля', 'рублей']);
var kopForm = pluralForm(kop, ['копейка', 'копейки', 'копеек']);
var kopStr = (kop < 10 ? '0' : '') + kop;
var text = integerToWords(rub, false) + ' ' + rubForm + ' ' + kopStr + ' ' + kopForm;
return text.charAt(0).toUpperCase() + text.slice(1);
}
Это упрощённая версия для демонстрации принципа: она рассчитана на рубли и положительные числа примерно до миллиона. Для миллионов и миллиардов, других валют (доллары, евро, белорусские рубли) или вывода копеек словами логику нужно расширять — в готовом Excel-инструменте «Сумма прописью» на сайте уже сделаны семь таких групп единиц измерения, на них можно ориентироваться при доработке функции под Apps Script.
Чем Apps Script отличается от VBA-макроса в Excel
Если раньше приходилось решать эту же задачу в Excel через пользовательскую функцию на VBA, принцип покажется знакомым — формула тоже вызывается прямо в ячейке. Разница в деталях:
- Язык другой. VBA — язык Excel и всего пакета Microsoft Office; Apps Script — упрощённый JavaScript для сервисов Google. Код между ними не копируется напрямую, переносится только логика.
- Не нужно «разрешать макросы». В Excel файл с макросом при открытии показывает жёлтую панель с предупреждением; в Google Таблицах при первом запуске функции появляется запрос доступа скрипта к аккаунту — разовое подтверждение прав, а не блокировка файла антивирусом.
- Скрипт привязан к файлу, а не к компьютеру. Функция на Apps Script работает в любом браузере, где открыт документ, — не нужно, чтобы на конкретном компьютере стоял Excel.
Частые проблемы
- Формула показывает
#NAME?. Значит, скрипт с функцией не сохранён в этой таблице — код нужно вставить и сохранить в Apps Script именно того файла, где вызывается формула. - При первом запуске появляется запрос на авторизацию. Это нормально: Google просит подтвердить, что скрипту можно выполняться в этой таблице. Нужно один раз пройти этот экран и разрешить доступ.
- Функция работает в одном файле и не работает в другом. Скрипт не переносится между таблицами автоматически — код функции нужно скопировать в редактор Apps Script каждой новой таблицы отдельно.
- Нужна не сумма (с валютой), а просто число словами. В примере функции выше это отдельная ветка — она находится в функции
integerToWords; для «чистого» числа без «рублей» и «копеек» достаточно вызывать эту часть логики напрямую.
Часто задаваемые вопросы
Почему в Google Таблицах нет готовой функции «сумма прописью»?
По той же причине, что и в Excel: это не универсальная математическая операция, а языковая — результат зависит от валюты, рода и падежа слова. Такую логику разработчики не включают в базовый набор функций листа, оставляя её либо надстройкам, либо пользовательским скриптам.
Можно ли просто скопировать VBA-макрос из Excel в Google Таблицы?
Нет, напрямую нельзя — Google Таблицы не понимают язык VBA. Аналог существует, но на другом языке: пользовательская функция пишется на Apps Script (это JavaScript), и логику перевода числа в текст нужно оформить именно под него.
Обязательно писать код самому?
Нет. Если не хочется работать с Apps Script, есть два пути без кода: разовая печать суммы прописью через готовый онлайн-калькулятор с последующей вставкой текста в ячейку, либо надстройка из Google Workspace Marketplace, которая добавляет готовую формулу за несколько кликов.
Функция работает в одной таблице — почему её нет в другой?
Скрипт Apps Script привязан к конкретному файлу Google Таблиц, а не к аккаунту целиком. Чтобы формула заработала в другой таблице, код функции нужно скопировать в её собственный редактор скриптов (Расширения → Apps Script) — это отдельное действие для каждого файла.
Что дальше
Если работа идёт не только в Google Таблицах, но и в Excel — на
странице «Сумма прописью» уже
есть готовая функция Num2Text для Excel с семью группами
единиц измерения, а рядом — тот же онлайн-калькулятор в браузере
для разовой печати суммы без формул вообще.
Сумма прописью — онлайн и функция для Excel
Бесплатный калькулятор прямо в браузере и готовая функция Num2Text для Excel — рубли, доллары, евро, с копейками словами или цифрами.