Конечно если бы название статьи было «Превращаем слова в деньги», заинтересованность читателей вероятно повысилось, однако, что имеем, то имеем.
В повседневной жизни мы иногда сталкиваемся с необходимостью преобразования числовых значений в словесную форму. Например, при составлении финансовых документов, оформлении счетов и чеков. В общем при необходимости представить сумму словами в текстовом формате. Вот для таких случаев функции, преобразующие числа в слова, становятся хорошими помощниками.
На скриншоте ниже показана работа функции ДеньгиСловами которая возвращает текст на русском языке, преобразуя число. Как пример, в ячейке С1 формула имеет вид:
=ДеньгиСловами(A1)
Выбираем функцию из категории финансовые (я её туда поместил):
В макросе, я использовал метод MacroOptions (рассмотрен в статье №73), для добавления описания функции.
Кстати перед отрицательными числами стоит текст «минус», а текст «числа» в круглых скобках. При необходимости можете изменить код по вашему усмотрению.
Скрипты функций ДеньгиСловами, ЧислоПрописью и ЦифраСтрокой не маленькие, и поэтому скриншот этих макросов, вряд ли удобно будет читать на экране, поэтому:
📌 Скачать файл пример с макросом можно в конце статьи. Кстати в самом коде есть пояснения, от том «что и как там крутится».
Но разберём коротко о работе трёх функций в связке друг с другом:
1. ЧислоПрописью(Число, Optional МужскойРод):
- - Эта функция принимает числовое значение и возвращает его словесное представление на русском языке.
- - Она разбивает число на отдельные цифры и определяет их разряды (единицы, десятки, сотни и т. д.).
- - Затем она использует другую вспомогательную функцию ЦифраСтрокой, чтобы преобразовать каждую цифру в слово, учитывая ее место в числе и род слова (мужской или женский).
- - Функция также учитывает особенности чисел, такие как десятки от 10 до 19, и корректно формирует слова для них.
- - В конце функция собирает все слова в предложение, представляющее число прописью, и возвращает его.
2. ЦифраСтрокой(Цифра, Место, Род):
- - Это вспомогательная функция, которая преобразует отдельную цифру числа в слово.
- - Она получает цифру, ее место в числе (например, единицы, десятки, сотни) и род слова (мужской или женский).
- - Функция определяет название цифры, используя массив строк Часть, который содержит слова для различных цифр и разрядов.
- - Она также учитывает особенности различных разрядов чисел и корректно формирует слова для них.
- - В конце функция возвращает слово, соответствующее заданной цифре, с учетом ее места в числе и рода слова.
3. ДеньгиСловами(Рубли):
- - Эта функция принимает числовое значение, представляющее сумму в рублях, и возвращает ее словесное представление на русском языке.
- - Она сначала округляет копейки и преобразует рубли в слова, используя функцию ЧислоПрописью.
- - Затем функция добавляет окончание для слова "рубль" в зависимости от числа.
- - После этого она также преобразует копейки в слова и добавляет соответствующее окончание.
- - В конце функция возвращает строку, представляющую сумму прописью в рублях и копейках.
Подводя итог, могу сказать, эти функции вместе обеспечивают корректное преобразование числового значения в его словесное представление на русском языке, учитывая особенности русской грамматики (надеюсь).