Число прописью в Excel (динамический вариант)

history

Запишем число прописью в Excel без использования VBA . Вспомогательные диапазоны разместим в личной книге макросов. Кроме того, добавим руб./коп. для записи денежных сумм, например: четыреста сорок четыре руб. 00 коп.


Иногда требуется записать число прописью: 256 записать как двести пятьдесят шесть . Набирать этот текст безумно скучно, кроме того легко ошибиться, поэтому давно написаны макросы на VBA, которые легко справляются с этой задачей.

В статье Число прописью (статичный вариант) приведено решение этой задачи позволяющей перевести число в текстовую форму по следующему алгоритму:

  • вводим число в определенную ячейку;
  • с помощью формул, вспомогательных диапазонов с текстом и имен получаем число прописью;
  • копируем результат вычисления формулы (число прописью) в Буфер обмена ;
  • вставляем текст в любую открытую книгу «Как значение» ( Главная/ Буфер обмена/ Вставить/ Вставить как значение ).

Это не всегда удобно. Хочется по аналогии с функциями на VBA написать что то вроде =ЧислоПрописью(А1) и получить результат. Все промежуточные вычисления должны быть «за кадром». Но, создание пользовательских функций это прерогатива VBA.

Тем не менее, можно предложить следующее решение с помощью обычных формул:

  • разместить в Личной книге макросов (PERSONAL.XLSB) вспомогательные диапазоны, содержащие некоторые числа прописью (от 0 до 999);
  • создать формулу, переводящую в текст любое число от 0 до 1 млрд. с помощью вспомогательных диапазонов и имен ;
  • в любой книге, где требуется записать число прописью создать Именованную формулу ЧислоПрописью с относительной ссылкой на исходное число (относительную ссылку можно создать так, чтобы она позволяла выводить число прописью, например, в соседней ячейке слева от исходного числа).

В результате вышеуказанных манипуляций можно будет, например, записав в ячейке G 6 исходное число, а в ячейке G7 формулу =ЧислоПрописью , и получить нужный результат.

Все это реализовано в файле примера .

Как и в примере статьи Число прописью (статичный вариант) на листе Служ размещены вспомогательные диапазоны, содержащие некоторые числа прописью в Excel.

Теперь эти диапазоны длиннее (числа от 1 до 999) и содержат слова тысяча и миллион с учетом склонения. Также создан диапазон для отображения слова Рублей с учетом склонения.

Теперь все готово для записи формулы переводящей исходное число (ячейка B 6 ) в текст: =СЖПРОБЕЛЫ( ИНДЕКС(Миллионы;ОСТАТ(ОТБР(B6/1000000);1000000)+1)&" "& ИНДЕКС(Тысячи;ОСТАТ(ОТБР(B6/1000);1000)+1)&" "& ИНДЕКС(Единицы;ОСТАТ(B6;1000)+1))

Задача в принципе решена, осталось только разместить вспомогательные диапазоны в Личную книгу макросов PERSONAL.XLSB, для того чтобы формула, переводящая число в текст была доступна в любой книге.

В Windows XP эта книга находится в папке C:\Documents and Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart, откуда она будет автоматически загружается при каждом запуске приложения Excel. В Windows Vista эта книга хранится в папке C:\Users\имя_пользователя\Application Data\Microsoft\Excel\XLStart.

Если Личная книга макросов еще не была создана, то скопируйте лист Служ из файла примера в новую книгу, и сохраните ее в директорию C:\Documents and Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart (для XP) под именем PERSONAL.XLSB.

Если Личная книга макросов уже была ранее создана, то через меню Вид/ Окно/ Отобразить отобразите ее, скопируйте в нее лист Служ, сохраните Личную книгу макросов (можно ее потом скрыть Вид/ Окно/ Скрыть ).

Теперь откройте книгу, в которой нужно записать число прописью . Исходное число разместите, например, в ячейке А1 . Введите в нужную ячейку формулу: =ЕСЛИ(A1;СЖПРОБЕЛЫ( ИНДЕКС(PERSONAL.XLSB!Миллионы;ОКРУГЛВНИЗ(A1;-6)/1000000+1)&" "& ИНДЕКС(PERSONAL.XLSB!тысячи;ОСТАТ(ОТБР(A1/1000);1000)+1)&" "& ИНДЕКС(PERSONAL.XLSB!Единицы;ОСТАТ(A1;1000)+1)&" руб. "&ТЕКСТ((A1-ЦЕЛОЕ(A1))*100;"00")&" коп.");"ноль руб. 00 коп.")

Формула отобразит число прописью. Ячейки, содержащие исходное число и формулу, можно перенести в любое место в книге или даже в другую книгу.

Чтобы еще больше приблизиться к идеалу создадим именованную формулу ЧислоПрописью . Для этого:

  • выделите ячейку B1 ;
  • через меню Формулы/ Определенные имена/ Присвоить имя создайте именованную формулу ЧислоПрописью;
  • в поле Диапазон введите формулу указанную выше:
  • нажмите ОК;
  • в ячейке В1 введите формулу =ЧислоПрописью
  • ячейка В1 будет содержать число прописью.

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

При пересылке файла, например, по электронной почте, формула будет продолжать работать, не смотря на то, что Личная книга макросов не пересылалась, т.е. Ваши коллеги получившие файл, смогут с ним работать как Вы.


Комментарии

Только для авторизованных пользователей

Аноним, 3 марта 2017 г.
А как наоборот число прописью перевести в обычное число?
Михаил, 6 марта 2017 г.
Раньше никто не спрашивал. Попробую как-нибудь в свободное время. Проблема в том, что при наличии опечаток (тысячь, милион, читыре) будут большие сложности.
Михаил, 6 марта 2017 г.
вот здесь новая статья - ответ на Ваш вопрос: http://excel2.ru/articles/perevodim-chislo-propisyu-v-chislo-ciframi-v-excel
Аноним, 4 августа 2020 г.
Добрый день! есть надстройка в Exel для перевода цифр в прописные слова. ее нужно немного изменить под требование клиента(в основном убрать часть фунционала) Сможете помочь?
Михаил, 5 августа 2020 г.
Здравствуйте, пришлите файл и что нужно сделать на почту creator@excel2.ru
(только для авторизованных пользователей)

© Copyright 2013 - 2024 Excel2.ru. All Rights Reserved