Найти в Дзене
VBA Excel с нуля

VBA Excel № 134. Превращаем деньги в слова.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Конечно если бы название статьи было «Превращаем слова в деньги», заинтересованность читателей вероятно повысилось, однако, что имеем, то имеем.

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

На скриншоте ниже показана работа функции ДеньгиСловами которая возвращает текст на русском языке, преобразуя число. Как пример, в ячейке С1 формула имеет вид:

=ДеньгиСловами(A1)

Выбираем функцию из категории финансовые (я её туда поместил):

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В макросе, я использовал метод MacroOptions (рассмотрен в статье №73), для добавления описания функции.

-3

Кстати перед отрицательными числами стоит текст «минус», а текст «числа» в круглых скобках. При необходимости можете изменить код по вашему усмотрению.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Скрипты функций ДеньгиСловами, ЧислоПрописью и ЦифраСтрокой не маленькие, и поэтому скриншот этих макросов, вряд ли удобно будет читать на экране, поэтому:

📌 Скачать файл пример с макросом можно в конце статьи. Кстати в самом коде есть пояснения, от том «что и как там крутится».

Но разберём коротко о работе трёх функций в связке друг с другом:

1. ЧислоПрописью(Число, Optional МужскойРод):

  • - Эта функция принимает числовое значение и возвращает его словесное представление на русском языке.
  • - Она разбивает число на отдельные цифры и определяет их разряды (единицы, десятки, сотни и т. д.).
  • - Затем она использует другую вспомогательную функцию ЦифраСтрокой, чтобы преобразовать каждую цифру в слово, учитывая ее место в числе и род слова (мужской или женский).
  • - Функция также учитывает особенности чисел, такие как десятки от 10 до 19, и корректно формирует слова для них.
  • - В конце функция собирает все слова в предложение, представляющее число прописью, и возвращает его.

2. ЦифраСтрокой(Цифра, Место, Род):

  • - Это вспомогательная функция, которая преобразует отдельную цифру числа в слово.
  • - Она получает цифру, ее место в числе (например, единицы, десятки, сотни) и род слова (мужской или женский).
  • - Функция определяет название цифры, используя массив строк Часть, который содержит слова для различных цифр и разрядов.
  • - Она также учитывает особенности различных разрядов чисел и корректно формирует слова для них.
  • - В конце функция возвращает слово, соответствующее заданной цифре, с учетом ее места в числе и рода слова.

3. ДеньгиСловами(Рубли):

  • - Эта функция принимает числовое значение, представляющее сумму в рублях, и возвращает ее словесное представление на русском языке.
  • - Она сначала округляет копейки и преобразует рубли в слова, используя функцию ЧислоПрописью.
  • - Затем функция добавляет окончание для слова "рубль" в зависимости от числа.
  • - После этого она также преобразует копейки в слова и добавляет соответствующее окончание.
  • - В конце функция возвращает строку, представляющую сумму прописью в рублях и копейках.

Подводя итог, могу сказать, эти функции вместе обеспечивают корректное преобразование числового значения в его словесное представление на русском языке, учитывая особенности русской грамматики (надеюсь).

СКАЧАТЬ ФАЙЛ ПРИМЕР