Как сделать в эксель чтобы цифры автоматически прописывались
в ячейке начинается функция, причем, она по порядку позиций, заглавными, что нам на то, что Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart (для относительной ссылкой наЗапишем число прописью в надо было. я открыла файл стрелочкой как показано
Обратите внимание! По умолчанию Интересный факт! При подтверждают запись данных текст на тайском ed_txt = Nums1(ed)скопируйте и вставьте туда
- с большой буквы. намного проще предыдущей.
- но тоже с и требуется; Личная книга макросов XP) под именем
- исходное число (относительную Excel без использования VBA.Guest
- и ничего не на рисунке: текст выравнивается по изменении ширины столбца в ячейку.
языке и добавление rrr: ‘формируем итоговую текст этой функции: Как и в Эта функция называется большой буквы. ТеперьЛЕВСИМВ не пересылалась, т.е. PERSONAL.XLSB. ссылку можно создать Вспомогательные диапазоны разместим
: Огромное Вам спасибо происходит (число стоит,Данное окно можно вызвать левей стороне ячеек,
- / строки курсором,Заметьте! Если воспользоваться первой суффикса «бат». строку СУММАПРОПИСЬЮ =Function СУММАПРОПИСЬЮ(n As
- прошлый раз, копируемПРОПНАЧ нам нужно вставить– возвращает указанное Ваши коллеги получившиеЕсли Личная книга макросов
- так, чтобы она в личной книге за помощь,там английский а там где комбинацией горячих клавиш а цифры по подсвечивается информация о возможностью то послеВ Microsoft Excel decmil_txt & mil_txt Double) As String формулу на ячейки
. Её синтаксис очень полученный результат в количество знаков конкретного файл, смогут с уже была ранее позволяла выводить число макросов. Кроме того, втречается, да и должна быть сумма
CTRL+1. правой. Данная особенность

размерах в разных подтверждения «Enter» курсор для Windows стиль & sottys_txt & Dim Nums1, Nums2, расположенные ниже.

простой: исходную таблицу. Выделяем текста в ячейке. ним работать как создана, то через прописью, например, в добавим руб./коп. для много что то прописью — стоит
К нашей табличке добавьте позволяет быстро найти единицах измерения: сместится на соседнюю формата бат может
dectys_txt & tys_txt
Nums3, Nums4 As
После этого копируем результат
=ПРОПНАЧ(адрес_ячейки)

диапазон с формулами.То есть, исходя из Вы. меню Вид/ Окно/ соседней ячейке слева записи денежных сумм, нулей встречалось, пока #ИМЯ? еще данных, как
цифры в ячейкеШирина столбца в количестве ячейку вниз (при быть изменен с & sot_txt & Variant Nums1 = при помощи контекстногоНа нашем примере её Кликаем правой кнопкой этого набора функций,Во многих случаях требуется,
Отобразить отобразите ее, от исходного числа). например: четыреста сорок маловато волоку.Igor67 показано ниже на и не спутать символов стандартного размера настройках по умолчанию). помощью значка Язык dec_txt & ed_txt
Array(«», «один «, меню. применение будет выглядеть мыши и в с помощью чтобы первая буква скопируйте в нееВ результате вышеуказанных манипуляций четыре руб. 00Макс: Проверяем включение макросов.
рисунке. их с текстом шрифта(Calibri 11 пунктов) Если же использовать и стандарты на End Function ‘вспомогательная «два «, «триВставляем данные через пункт
следующим образом.
контекстном меню выбираем
ЛЕВСИМВ
в ячейке таблицы лист Служ, сохраните можно будет, например,
коп.: файл создавался наВ данном случаеЗадание 1. Выделите диапазон (ведь текст также – по умолчанию вторую возможность и
панели управления. функция для выделения «, «четыре «,«Значения»
- Выделяем свободную область листа. пунктмы вернем в
- была заглавной (прописной). Личную книгу макросов записав в ячейкеИногда требуется записать число
- базе 2003 Офиса. используются так называемые
- ячеек D2:D3 и
- содержит символы цифр, 8,43 символов такая подтвердить галочкой «Ввод»,
- В Excel для из числа разрядов «пять «, «шестьпараметры вставки в
Кликаем по значку«Копировать» указанную ячейку первую Если пользователь изначально (можно ее потомG6 прописью: 256 записатьи при его «Пользовательские функции», которые установите финансовый числовой но не позволяет
длина текста в то курсор останется «Макинтоша» стиль числового Private Function Class(M, «, «семь «, исходную таблицу.«Вставить функцию». букву, с помощью ошибочно везде вписал скрыть Вид/ Окно/
Трансформация первой буквы из строчной в заглавную в Microsoft Excel

исходное число, а как двести пятьдесят открытии в новом распознаются как макросы формат. В диапазоне производить с ними стандартной ячейке. Таким на месте. формата бат может I) «восемь «, «девятьУдаляем промежуточные значения через.После этого, выделяем исходные оператора строчные буквы или Скрыть). в ячейке шесть. Набирать этот Офисе не работают и работают только E2:E3 сделайте процентный математические расчеты). Например, образом, можно быстро быть изменен с Int(Int(M — (10 «) Nums2 =
контекстное меню.В открывшемся Мастере функций
Процедура трансформации первой буквы в заглавную
ячейки с фамилиямиПРОПИСН скопировал в ExcelТеперь откройтеG7 текст безумно скучно, многие макросы и при включенных макросах. формат. В результате если в место определить длину текстаЗаполните ячейки текстом, так помощью объекта Control ^ I) * Array(«», «десять «,
Способ 1: замена первой буквы в ячейке на заглавную
В новом окне подтверждаем ищем в таблице. Вызываемсделаем её заглавной, данные из другогокнигу, в которой нужноформулу =ЧислоПрописью, и кроме того легко формулы.Если у Вас
- должно получиться так: запятой в качестве в ячейке Excel. как показано на Panel for Numbers. Int(M / (10
- «двадцать «, «тридцать удаление строк, путем«ПРОПНАЧ» контекстное меню кликом а затем функцией
- источника, в котором записать число прописью получить нужный результат. ошибиться, поэтому давно
Подумали работать с Ехс 2002(ХР) илиФормат – это свойство разделителя разрядов стоит Но чаще всего рисунке, чтобы содержимоеСинтаксис ^ I))) / «, «сорок «, установки переключателя в. Найдя это наименование, правой кнопки мыши.ЗАМЕНИТЬ все слова начинались
. Исходное число разместите,Все это реализовано в написаны макросы на
файлом на Windows
2003 идем меню ячейки, а не точка или пробел, для этого применяется вмещалось в ячейках.БАТТЕКСТ(число) 10 ^ (I «пятьдесят «, «шестьдесят соответствующее положение. Жмем выделяем его и В блокезаменим строчную букву с маленькой буквы, например, в ячейке файле примера.
-
VBA, которые легко 7, но через СЕРВИС — ПАРАМЕТРЫ ее содержимое. Поэтому
то цифры распознаны







Теперь при запуске случаях лучше сделать образом, можно быстроВысота строки в пунктахЗадание 1. Чтобы формула, принимающая числовые тип файла должен «триста «, «четыреста

Способ 2: каждое слово с большой буквы
таблицу, но только«Текст» цифрами.Но лучше все это желаемое состояние. Но,ИНДЕКС(PERSONAL.XLSB!тысячи;ОСТАТ(ОТБР(A1/1000);1000)+1)&» «& числа прописью в Excel. позволяющей перевести число активации надстроек «Сумма файла на вопрос в обратном порядке. сориентироваться, как распознала измерения высоты шрифтов уместить длинный текст
быть с поддержкой «, «пятьсот «, все слова в
-
. Выделяем первую ячейкуКак видим, после этого рассмотреть на конкретном возможно у Эксель



2003 под Windows Ответить ДА, КОНЕЧНО пустую ячейку суму как текст или 15 пунктов. наведите курсор мыши заполняем ячейки данными, формате xlsm!) и «, _ «восемьсот будут прописаны с исходной таблице. После были вставлены в
имеем заполненную таблицу,
с помощью которых коп.») до 999) ивводим число в определенную
7. ХОЧУ! с валютой следующим как цифру. Например,В скобках размеры указаны на границу заголовков автоматически проверяются типы вернитесь в Excel. «, «девятьсот «) большой буквы. того, как её исходные позиции таблицы. в которой все





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

учетом склонения. Также диапазонов с текстом Михаил Ч. обновил СЕРВИС-МАКРОС-Безопасность что программа сама не запятой, а для строк. Курсор изменит свой она: цифры; формулы; в любую ячейку «, «три «, смену строчных букв жмем на кнопку словах ячеек были предстоит первый символ для изменения строчных можно перенести в создан диапазон для и имен получаем своё решение однойGuest присвоит ячейке финансовый
точкой, то данные
Сумма прописью
В Excel 2010 можно внешний вид как логические выражения. листа этой книги «четыре «, «пять на прописные в«OK» заменены на прописные. в каждой ячейке букв на прописные. любое место в отображения слова Рублей число прописью;
- формулой:: Спасибо большое, правда формат. То же цифр распознаются как
- задать размеры строк показано на рисунке.Если не подтвердился ни
- обычным способом - «, «шесть «,
в Excel имеется Для этого:) в текст: значение» (Главная/ Буфер легко копировать/переносить, в: Здравствуйте! быстрого ввода при C2 и удерживая правой кнопкой по длинного текста.Введенные данные в ячейку категория «, «четырнадцать «, символы вручную, особенно, предыдущем способе, ввести выполняли преобразование наВ любом свободном месте отдельная кнопка, нажаввыделите ячейку=СЖПРОБЕЛЫ( обмена/ Вставить/ Вставить т.ч. и вЗдесь на форуме установке формата ячеек. левую клавишу проведите
заголовку столбца илиЗадание 2. Наведите можно редактировать изменятьОпределенные пользователем _ «пятнадцать «,
в ячейку функцию
одном листе. Выделяем данного листа или на которую, можноB1ИНДЕКС(Миллионы;ОСТАТ(ОТБР(B6/1000000);1000000)+1)&» «&
Можно ли Excel сделать так, что бы автоматически цифры писались прописью?
как значение). другие книги нашел преобразование число
Посмотрите выпадающий список его вниз до
строки и выберем курсор мыши на и удалять. Далее) или просто набрав
«шестнадцать «, «семнадцать много. Указанные выше вручную с записью
указанный диапазон, кликаем
на другом листе автоматически превратить строчную;ИНДЕКС(Тысячи;ОСТАТ(ОТБР(B6/1000);1000)+1)&» «&
Это не всегда удобно.3. Работает до в пропись, все валют и измените ячейки C3. Вы опцию «ширина». Потом границу заголовков колонок
рассмотрим способы редактирования ее в ячейке «, «восемнадцать «, алгоритмы берегут не координат исходных данных. правой кнопкой мыши
записываем следующую формулу:
букву в заглавную.
через меню Формулы/ ОпределенныеИНДЕКС(Единицы;ОСТАТ(B6;1000)+1)) Хочется по аналогии 999 млрд. руб. цифры прописываются, кроме формат на Евро: выделили диапазон из
Заполнение ячеек текстом и числовыми значениями
вводим значение в ячеек между B ячеек. вручную и указав «девятнадцать «) If только силы юзера, В данном случае
и в контекстном=ЗАМЕНИТЬ(B4;1;1;ПРОПИСН(ЛЕВСИМВ(B4;1))) Для этого придется имена/ Присвоить имяЗадача в принципе решена, с функциями на
4. Делает первую нуля, а нужно,Читайте так же: как 2-ух ячеек (C2:C3) сантиметрах. Этого особенно
и C. КурсорСамый простой способ изменения в качестве аргумента n 0 Then
Ввод текста в ячейку Excel
но и самое эта запись будет меню останавливаем выборЧтобы произвести обработку данных
- использовать функции, причем создайте именованную формулу осталось только разместить VBA написать что букву прописной, остальные что бы и перевести число и
- для дальнейшей работы удобно при подготовке мышки изменит свой содержимого ячейки – ячейку с суммой: tys_txt = Nums4(tys) ценное – время.
иметь следующий вид: на пункте и увидеть результат, сразу несколько. Впрочем,
ЧислоПрописью; вспомогательные диапазоны в то вроде =ЧислоПрописью(А1) строчные
0 писалось бы сумму прописью в с ними. На документа для вывода вид. После чего это заново вписатьЕсли вам необходимо добавить & «тысяч « Поэтому желательно, чтобы=ПРОПНАЧ(B4)«Удалить…»
жмем кнопку Enter
Как уместить длинный текст в ячейке Excel?
в любом случае,в поле Диапазон введите Личную книгу макросов и получить результат.
5. Правильно округляет прописью. Excel. полосе инструментов выберите на печать. Ведь
- 2, 3, 4 работе.. в позицию начинается с прописной бы на ручноеВ1 была доступна в пользовательских функций это6. Изменяет окончание полагаю, надо доработать так чтобы сумма показано на рисунке: 29,7см. размера. Аналогичным способом имеется две возможности: =СУММАПРОПИСЬЮ(A3)&» руб. «&ТЕКСТ((A3-ЦЕЛОЕ(A3))*100;»00″)&» коп.»
- tys_txt = Nums4(tys)Автор: Максим ТютюшевВыбор конкретного варианта полностью«Строку»
- буквы. изменение данных.введите формулу =ЧислоПрописью любой книге.
прерогатива VBA. в слове «копейка» код VBA, пытался написанная числом отображаласьНе трудно догадаться, чтоНо благодаря показателям в как описано вСделайте ячейку активной переместив=СУММАПРОПИСЬЮ(A3)&» руб. «&TEXT((A3-INT(A3))*100;»00″)&» коп.» & «тысячи «Ниже вы найдете готовую зависит от пользователя.. Жмем на кнопкуСтановимся курсором в нижнийДля решения поставленной задачиячейкаВ Windows XP этаТем не менее, можно в соответствии с редактировать, но не
прописью (например 101,50 рядом расположен инструмент пикселях при обычном этих двух практических на нее курсор.Тогда, например, для числа Case 5 To
- пользовательскую функцию на Для тех юзеров,
- «OK» левый угол ячейки
- используется основная функцияВ1
Введение цифр в ячейки Excel
книга находится в предложить следующее решение правилами русского языка, получается. р. — сто «Уменьшить разрядность». Так режиме, то можно

заданиях можно изменять Потом введите текст 35,15 результат функции 9 tys_txt = VBA, которая переводит которые не привыкли. с формулой иЗАМЕНИТЬбудет содержать число папке C:\Documents and с помощью обычных а не простоvikttur один рубль пятьдесят можно изменять формат пересчитать самому в высоту строки. Только и нажмите «Enter» будет выглядеть как Nums4(tys) & «тысяч любое число держать в головеПосле этого, лишние данные с помощью маркера, а также вложенные прописью. Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart, откуда формул: «коп.»: В коде сверху копеек). ячеек на числовой сантиметры, используя данные здесь курсор следует или просто переместите
«тридцать пять руб. » End Selectот 0 до 9 множество разных формул, будут очищены, и заполнения копируем формулу функции первого иТеперь ячейки она будет автоматическиразместить в Личной книге7. Формула менее 4 или 5Заранее спасибо. для отображения цифр для конвертации единиц

наводить на границы курсор на любую 15 коп.» If dectys = 999 999 естественно, легче действовать мы получим тот в нижние ячейки. второго порядка
А1В1 загружается при каждом макросов (PERSONAL.XLSB) вспомогательные 1000 знаков, и абзац, начало:mazayZR разным количеством разрядности измерений: между номерами строк. другую ячейку.Алексей 0 And tysв его текстовое

при помощи Мастера результат, который добивались: Мы должны скопировать
Введение валют и процентов
ПРОПИСНможно скопировать и запуске приложения Excel. диапазоны, содержащие некоторые
спокойно редактируется вIf Num =: это невозможно (количество цифр отображаемых0,98 см = 37 А дальше перемещатьСделайте ячейку активной с

: Конечно. применить макрос = 0 And представление, т.е. в функций. В то в каждой ячейке её именно настолькои перенести в любое В Windows Vista
числа прописью (от 2003 Excel 0 Thenепрст, уже и после запятой). пикселей; его для изменения помощью курсора и сумма прописью))) sottys <> 0

сумму прописью. Перед же время, другие таблицы первое слово позиций вниз, сколькоЛЕВСИМВ место в книге, эта книга хранится 0 до 999);

Юрий МSummaPropis = «» поиск даже неОба эти инструмента автоматически
Число прописью
1,01 см = 38 высоты или делать введите данные вАнастасия Then sottys_txt = использованием, эту функцию считают, что намного начинается с большой ячеек с фамилиями
.
но они должны в папке C:\Users\имя_пользователя\Application
создать формулу, переводящую в: Ну, не совсемЕСЛИ номер «0», на главной странице меняют форматы ячеек
пикселей; двойной щелчок для строку формул (широкое
: нет к сожалению
sottys_txt & « необходимо добавить в
быстрее ручной ввод буквы. имеет в своемФункция быть всегда на Data\Microsoft\Excel\XLStart. текст любое число одной, конечно :-) то отображаем «»,
и называется узнаваемо на «числовой». Чтобы
0,50 см = 19 автоматической подстройки. Задать поле ввода подCrosswert тысяч » eee: вашу книгу. Для
оператора.Но бывают случаи, когда составе исходная таблица.ЗАМЕНИТЬ одной строке иЕсли Личная книга макросов от 0 доHugo т.е. ничего не (а не ФАС). изменить формат ячеек пикселей. ширину столбца или
полосой инструментов). И: если в виде sot_txt = Nums3(sot)
этого:Какой бы вариант не нужно сделать неКак видим, учитывая чтоосуществляет замену одного в соседних столбцах,
еще не была 1 млрд. с
: Да, поизучал - отображаем :)Igor67 на «числовой» такВводить текстовые данные в высоту строки можно нажмите галочку «Ввод». текста, то это:
‘проверяем десятки Select
нажмите сочетание клавиш
был выбран, в только первое слово ссылки в формуле символа или части т.к. именованной формуле
создана, то скопируйте помощью вспомогательных диапазонов там ещё двеЗамените SummaPropis =
: А поискать не же можно воспользоваться
ячейки уже умеем,
вручную с помощьюЕсли вы передумали заполнять =БАТТЕКСТ() Case dec Case
ALT+F11 ячейке с функцией
в ячейке, начинающимся относительные, а не строки на другие, использована относительная ссылка. лист Служ из и имен;
коротенькие ЕСЛИ() в 0 пробовали? диалоговым окном настройки теперь разберемся с курсора или контекстного ячейку то в
Однако понадобиться дополнительная 1 ed_txt =, чтобы открыть редактор
мы получили тот с заглавной буквы, абсолютные, копирование произошло согласно указанным аргументам;При пересылке файла, например,
файла примера вв любой книге, где именах есть :)Hugo
Смотрим вариант. форматов. Для его заполнением цифровых данных.
меню. Щелчок правой место «Enter» или кодировка — тайская, Nums5(ed) GoTo rrr Visual Basic
результат, который нам а вообще, каждое со сдвигом. ПоэтомуПРОПИСН по электронной почте,
требуется записать число
Остальные имена думаю
: Плохо искали. ТеперьGuest вызова необходимо зайти: Заполните простую табличку кнопкой по заголовку
«Ввод» жмите «ESC». вроде.
Case 2 Toдобавьте новый пустой модуль был нужен. Теперь
слово. Для этого в нижних ячейках– делает буквы формула будет продолжать
сохраните ее в прописью создать Именованную формулами назвать нельзя. можете в коде: Смотрим вариант. «Главная»-«Число» и щелкнуть
как показано на и опция «ШиринаКлавиша «Enter» или инструментДословно из Excel
9 dec_txt = через меню каждое новое слово
тоже существует отдельная отобразилось содержимое следующих прописными, то есть, работать, не смотря директорию C:\Documents and
формулу ЧислоПрописью с :) по слову «ноль»
Числа прописью в Excel быстро и без вспомогательных инструментов!
Зачастую бывают такие ситуации, когда записанные при помощи цифр числа в Excel должны быть представлены в виде прописи, например, подобное потребоваться при составлении договоров, чеков, накладных и так далее.
Естественно, данную задачу можно легко решить при помощи VBA, либо же различных Add-In-ов, однако, в таком случае эти самые Add-In-ы придется устанавливать, либо же интегрировать макросы VBA. В этом же посте я хочу поделиться интересным решением данной задачи при помощи всего одной формулы.
Вот пример её действия:

Файл с формулой можно скачать по следующей ссылке:
Как можете заметить, в функции очень много ссылок на одну и ту же ячейку – H6. Естественно, вручную перетаскивать все ссылки H6 не вариант (их 97!). Поэтому вот как работаем с этой формулой:
1. Её текст можно скопировать из файла по ссылке и вставить в ячейку, где в будущем нужна пропись цифры
2. Выбираем две ячейки, включая ячейку с формулой (показываю на примере самого файла по ссылке – в формуле с выводом сотых заменим ссылку на новое значение в ячейке C6):

Лучше всего, чтобы вторая выбранная ячейка была пустой, или в крайнем случае не содержала той же самой ссылки, так как мы её сейчас будем автоматически менять.
3. Вызываем окно поиска и замены с помощью CTRL+H
4. В «Найти» вписываем заменяемый адрес – H6, в «Заменить на» — адрес новой нужной ячейки – например, C6

5. Нажимаем на «Заменить все». Замена происходит лишь в обеих выбранных ячейках (именно для этого мы и выбирали вторую ячейку, чтобы ограничить замену лишь на выбранный диапазон). Готово! Формула сразу ссылается на нужное значение:

Из особенностей формулы:
1. Формула абсолютно самостоятельна и не использует VBA или сторонние Add-Ins
2. Формула работает с числами до 999.999.999
3. Формула правильно склоняет слова
4. Вся формула в свою очередь состоит в основном из формул ЛЕВСИМВ, ПСТР, ЕСЛИ, ТЕКСТ, И, ВЫБОР
5. Количество символов в формуле с прописью целых и сотых: 6034
Вот в этом видео разобран принцип работы формулы, то, как её использовать, а также рассказаны еще некоторые детали, обязательно советую его посмотреть:

661 пост 14.8K подписчиков
Правила сообщества
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно — сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде «пост — отстой», это оскорбление автора и будет наказываться баном.


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

Читать ещё на Пикабу

EXCEL — ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО
Я решил с двух ног ворваться в тему макросов.

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал
Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(«A2»).Select
ActiveCell.FormulaR1C1 = «Мама, я программист»
Range(«A3»).Select
ActiveCell.FormulaR1C1 = «=TODAY()»
Range(«A4»).Select
End Sub
Такой инструмент автоматической записи называется макрорекордер, по началу он хорошо помогает вообще понять, что происходит. Теперь давайте разберемся как выглядит записанный макрос (записанный макрос у автора этой статьи может различаться с записанным макросом у вас поскольку форма записи с макроса зависит от последовательности нажатий, способах ввода информации и криворукости пользователь, в любом случае автор этой статьи снимает с себя всю ответственность за любые действия которые привели или могут привести к изменению годовых отчетов, искажению пространственное – временного континуума и прочих непредвиденных вымираний.)
Теперь давайте разбираться что делает этот макрос
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.
Range(«A2»).Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = «Мама, я программист» – пишем в ячейку значение
Range(«A3»).Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = «=TODAY()» –пишем в ячейку формулу
Range(«A4»).Select – зачем то выделяем ячейку А4.
End Sub
Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.
Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать
так как мы точно знаем, что хотим поменять только цвет в ячейке А1. Также вместо того чтобы выделять ячейку, а потом в активной ячейке писать формулу можно сразу записать нужное значение в ячейку
Range(“A2”).Value = ”Мама, я программист”
или писать формулу как в третей ячейке
С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.
Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.
Теперь давайте напишем какой ни будь полезный макрос, я буду писать строчки и как можно подробнее их комментировать. Комментарии от программы отделяются символом «‘», он ставится вначале комментария. Прошу учесть, что я самоучка и многого не знаю, и просто напишу так ка делаю это сам, возможно есть более изящные решения. Напоминаю, что это просто ознакомительный опус для тех, кто не в зуб ногой.
Sub Colorization()
‘начало нашего макроса и его название
Dim x As Integer
‘объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
‘она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
‘перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
‘Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = «красный» Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
‘если значение в ячейке равно «красный» то закрашиваем ячейку в красный цвет. Функция If выполняет часть
‘после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
‘строку можно писать в таком виде, если же действий несколько применяется конструкция:
‘If … Then
‘…
‘…
‘End If
If Cells(x, 1).Value = «зеленый» Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
‘как выше только в зеленый цвет
If Cells(x, 1).Value = «синий» Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
‘в синий цвет
Next x ‘берем следующее значение х, конец цикла For, который мы начали выше
End Sub ‘конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

Некоторые пояснения: если не писать просто Cells то макрос будет делать все в активном листе активного окна. Но макрос может идти и в другие листы, файлы, даже в другие приложения офиса, но об этом не сегодня.
После того, как макрос поработал с документом, не удастся кнопкой «назад» вернуть все изменения, так что, если данные важны, то сохраняйте их отдельно и макросом работайте с копией, макросы беспощадны.
Итак, на этом пока все. Надеюсь теперь те, кто никогда не видел макросов получат о них начальное представление. Дальше буду писать про более практичное применение.
Как перевести сумму или число прописью в Excel
Часто нужно перевести число в текст в Excel так, чтобы оно отображалось прописью (словами) на русском или других языках. Так как по умолчанию нет готовой функции, создадим свою пользовательскую функцию с помощью макросов.
Пример использования пользовательской функции для преобразования числа суммы в текстовые слова, которую можно скачать в конце статьи:

Для создания пользовательской функции, которая сможет перевести число в текст прописью , нам нужно выполнить 3 простых шага:
- Открыть редактор макросов ALT+F11.
- Создать новый модуль и в нем нужно написать функцию особенным способом: Function вместо Sub . Тогда наша функция «ЧислоПропись» будет отображаться в списке мастера функций (SHIFT+F3), в категории «Определенные пользователем».

- Вставить в модуль следующий код и сохранить:
Function ЧислоПропись(Число As Currency ) As String
‘до 999 999 999 999
On Error GoTo Число_Error
Dim strМиллиарды As String , strМиллионы As String , strТысячи As String , strЕдиницы As String , strСотые As String
Dim Поз As Integer
strЧисло = Format(Int(Число), "000000000000" )
‘Миллиарды’
Поз = 1
strМиллиарды = Сотни(Mid(strЧисло, Поз, 1))
strМиллиарды = strМиллиарды & Десятки(Mid(strЧисло, Поз + 1, 2), "м" )
strМиллиарды = strМиллиарды & ИмяРазряда(strМиллиарды, Mid(strЧисло, Поз + 1, 2), "миллиард " , "миллиарда " , "миллиардов " )
‘Миллионы’
Поз = 4
strМиллионы = Сотни(Mid(strЧисло, Поз, 1))
strМиллионы = strМиллионы & Десятки(Mid(strЧисло, Поз + 1, 2), "м" )
strМиллионы = strМиллионы & ИмяРазряда(strМиллионы, Mid(strЧисло, Поз + 1, 2), "миллион " , "миллиона " , "миллионов " )
‘Тысячи’
Поз = 7
strТысячи = Сотни(Mid(strЧисло, Поз, 1))
strТысячи = strТысячи & Десятки(Mid(strЧисло, Поз + 1, 2), "ж" )
strТысячи = strТысячи & ИмяРазряда(strТысячи, Mid(strЧисло, Поз + 1, 2), "тысяча " , "тысячи " , "тысяч " )
‘Единицы’
Поз = 10
strЕдиницы = Сотни(Mid(strЧисло, Поз, 1))
strЕдиницы = strЕдиницы & Десятки(Mid(strЧисло, Поз + 1, 2), "м" )
If strМиллиарды & strМиллионы & strТысячи & strЕдиницы = "" Then strЕдиницы = "ноль "
‘strЕдиницы = strЕдиницы & ИмяРазряда(" ", Mid(strЧисло, Поз + 1, 2), "рубль ", "рубля ", "рублей ")
‘Сотые’
‘strСотые = strКопейки & " " & ИмяРазряда(strКопейки, Right(strКопейки, 2), ‘"копейка", "копейки", "копеек")
ЧислоПропись = strМиллиарды & strМиллионы & strТысячи & strЕдиницы
ЧислоПропись = UCase(Left(ЧислоПропись, 1)) & Right(ЧислоПропись, Len(ЧислоПропись) — 1)
Число_Error:
MsgBox Err.Description
End Function
Function Сотни(n As String ) As String
Сотни = ""
Select Case n
Case 0: Сотни = ""
Case 1: Сотни = "сто "
Case 2: Сотни = "двести "
Case 3: Сотни = "триста "
Case 4: Сотни = "четыреста "
Case 5: Сотни = "пятьсот "
Case 6: Сотни = "шестьсот "
Case 7: Сотни = "семьсот "
Case 8: Сотни = "восемьсот "
Case 9: Сотни = "девятьсот "
End Select
End Function
Function Десятки(n As String , Sex As String ) As String
Десятки = ""
Select Case Left(n, 1)
Case "0" : Десятки = "" : n = Right(n, 1)
Case "1" : Десятки = ""
Case "2" : Десятки = "двадцать " : n = Right(n, 1)
Case "3" : Десятки = "тридцать " : n = Right(n, 1)
Case "4" : Десятки = "сорок " : n = Right(n, 1)
Case "5" : Десятки = "пятьдесят " : n = Right(n, 1)
Case "6" : Десятки = "шестьдесят " : n = Right(n, 1)
Case "7" : Десятки = "семьдесят " : n = Right(n, 1)
Case "8" : Десятки = "восемьдесят " : n = Right(n, 1)
Case "9" : Десятки = "девяносто " : n = Right(n, 1)
End Select
Dim Двадцатка As String
Двадцатка = ""
Select Case n
Case "0" : Двадцатка = ""
Case "1"
Select Case Sex
Case "м" : Двадцатка = "один "
Case "ж" : Двадцатка = "одна "
Case "с" : Двадцатка = "одно "
End Select
Case "2" :
Select Case Sex
Case "м" : Двадцатка = "два "
Case "ж" : Двадцатка = "две "
Case "с" : Двадцатка = "два "
End Select
Case "3" : Двадцатка = "три "
Case "4" : Двадцатка = "четыре "
Case "5" : Двадцатка = "пять "
Case "6" : Двадцатка = "шесть "
Case "7" : Двадцатка = "семь "
Case "8" : Двадцатка = "восемь "
Case "9" : Двадцатка = "девять "
Case "10" : Двадцатка = "десять "
Case "11" : Двадцатка = "одиннадцать "
Case "12" : Двадцатка = "двенадцать "
Case "13" : Двадцатка = "тринадцать "
Case "14" : Двадцатка = "четырнадцать "
Case "15" : Двадцатка = "пятнадцать "
Case "16" : Двадцатка = "шестнадцать "
Case "17" : Двадцатка = "семнадцать "
Case "18" : Двадцатка = "восемнадцать "
Case "19" : Двадцатка = "девятнадцать "
End Select
Десятки = Десятки & Двадцатка
End Function
Function ИмяРазряда(Строка As String , n As String , Имя1 As String , Имя24 As String , ИмяПроч As String ) As String
Select Case n
Case "1" : ИмяРазряда = Имя1
Case "2" , "3" , "4" : ИмяРазряда = Имя24
Case Else : ИмяРазряда = ИмяПроч
End Select
End If

Можно написать алгоритм макро программы по-другому и еще сделать так, чтобы она дописывала валюту суммы прописью. Для этого создайте Module2 и введите в него следующий код:
Function ЧислоПрописьюВалюта(Число As Double , Optional Валюта As Integer = 1, Optional Копейки As Integer = 1)
Attribute ЧислоПрописьюВалюта.VB_Description = "Функция преобразовывает число суммы текстовыми словами"
Attribute ЧислоПрописьюВалюта.VB_ProcData.VB_Invoke_Func = " \n1"
Dim Edinicy(0 To 19) As String : Dim EdinicyPoslednie(0 To 19) As String
Dim Desyatki(0 To 9) As String : Dim Sotni(0 To 9) As String : Dim mlrd(0 To 9) As String
Dim mln(0 To 9) As String : Dim tys(0 To 9) As String
Dim SumInt, x, shag, vl As Integer : Dim txt, Sclon_Tys As String
‘———————————————
Application.Volatile
‘———————————————
Edinicy(0) = "" : EdinicyPoslednie(0) = IIf(Валюта = 0, "евро" , IIf(Валюта = 1, "рублей" , "долларов" ))
Edinicy(1) = "один " : EdinicyPoslednie(1) = IIf(Валюта = 0, "один евро" , IIf(Валюта = 1, "один рубль" , "один доллар" ))
Edinicy(2) = "два " : EdinicyPoslednie(2) = IIf(Валюта = 0, "два евро" , IIf(Валюта = 1, "два рубля" , "два доллара" ))
Edinicy(3) = "три " : EdinicyPoslednie(3) = IIf(Валюта = 0, "три евро" , IIf(Валюта = 1, "три рубля" , "три доллара" ))
Edinicy(4) = "четыре " : EdinicyPoslednie(4) = IIf(Валюта = 0, "четыре евро" , IIf(Валюта = 1, "четыре рубля" , "четыре доллара" ))
Edinicy(5) = "пять " : EdinicyPoslednie(5) = IIf(Валюта = 0, "пять евро" , IIf(Валюта = 1, "пять рублей" , "пять долларов" ))
Edinicy(6) = "шесть " : EdinicyPoslednie(6) = IIf(Валюта = 0, "шесть евро" , IIf(Валюта = 1, "шесть рублей" , "шесть долларов" ))
Edinicy(7) = "семь " : EdinicyPoslednie(7) = IIf(Валюта = 0, "семь евро" , IIf(Валюта = 1, "семь рублей" , "семь долларов" ))
Edinicy(8) = "восемь " : EdinicyPoslednie(8) = IIf(Валюта = 0, "восемь евро" , IIf(Валюта = 1, "восемь рублей" , "восемь долларов" ))
Edinicy(9) = "девять " : EdinicyPoslednie(9) = IIf(Валюта = 0, "девять евро" , IIf(Валюта = 1, "девять рублей" , "девять долларов" ))
Edinicy(11) = "одиннадцать " : EdinicyPoslednie(11) = IIf(Валюта = 0, "одиннадцать евро" , IIf(Валюта = 1, "одиннадцать рублей" , "одиннадцать долларов" ))
Edinicy(12) = "надцать " : EdinicyPoslednie(12) = IIf(Валюта = 0, "надцать евро" , IIf(Валюта = 1, "надцать рублей" , "надцать долларов" ))
Edinicy(13) = "тринадцать " : EdinicyPoslednie(13) = IIf(Валюта = 0, "тринадцать евро" , IIf(Валюта = 1, "тринадцать рублей" , "тринадцать долларов" ))
Edinicy(14) = "четырнадцать " : EdinicyPoslednie(14) = IIf(Валюта = 0, "четырнадцать евро" , IIf(Валюта = 1, "четырнадцать рублей" , "четырнадцать долларов" ))
Edinicy(15) = "пятнадцать " : EdinicyPoslednie(15) = IIf(Валюта = 0, "пятнадцать евро" , IIf(Валюта = 1, "пятнадцать рублей" , "пятнадцать долларов" ))
Edinicy(16) = "шестнадцать " : EdinicyPoslednie(16) = IIf(Валюта = 0, "шестнадцать евро" , IIf(Валюта = 1, "шестнадцать рублей" , "шестнадцать долларов" ))
Edinicy(17) = "семнадцать " : EdinicyPoslednie(17) = IIf(Валюта = 0, "семнадцать евро" , IIf(Валюта = 1, "семнадцать рублей" , "семнадцать долларов" ))
Edinicy(18) = "восемнадцать " : EdinicyPoslednie(18) = IIf(Валюта = 0, "восемнадцать евро" , IIf(Валюта = 1, "восемнадцать рублей" , "восемнадцать долларов" ))
Edinicy(19) = "девятнадцать " : EdinicyPoslednie(19) = IIf(Валюта = 0, "девятнадцать евро" , IIf(Валюта = 1, "девятнадцать рублей" , "девятнадцать долларов" ))
»———————————————
Desyatki(0) = "" : Sotni(0) = "" : tys(0) = "тисячь " : mln(0) = "миллионов " : mlrd(0) = "миллиардов "
Desyatki(1) = "десять " : Sotni(1) = "сто " : tys(1) = "тысяча " : mln(1) = "миллион " : mlrd(1) = "миллиарда "
Desyatki(2) = "двадцать " : Sotni(2) = "двести " : tys(2) = "тысячи " : mln(2) = "миллиона " : mlrd(2) = "миллиарда "
Desyatki(3) = "тридцать " : Sotni(3) = "триста " : tys(3) = "тысячи " : mln(3) = "миллиона " : mlrd(3) = "миллиарда "
Desyatki(4) = "сорок " : Sotni(4) = "четыреста " : tys(4) = "тысячи " : mln(4) = "миллиона " : mlrd(4) = "миллиарда "
Desyatki(5) = "пятьдесят " : Sotni(5) = "пятьсот " : tys(5) = "тысяч " : mln(5) = "миллионов " : mlrd(5) = "миллиардов "
Desyatki(6) = "шестьдесят " : Sotni(6) = "шестьсот " : tys(6) = "тысяч " : mln(6) = "миллионов " : mlrd(6) = "миллиардов "
Desyatki(7) = "семьдесят " : Sotni(7) = "семьсот " : tys(7) = "тысяч " : mln(7) = "миллионов " : mlrd(7) = "миллиардов "
Desyatki(8) = "восемьдесят " : Sotni(8) = "восемьсот " : tys(8) = "тысяч " : mln(8) = "миллионов " : mlrd(8) = "миллиардов "
Desyatki(9) = "девяносто " : Sotni(9) = "девятьсот " : tys(9) = "тысяч " : mln(9) = "миллионов " : mlrd(9) = "миллиардов "
‘———————————————
On Error Resume Next
SumInt = Int(Число)
For x = Len(SumInt) To 1 Step -1
shag = shag + 1
Select Case x
Case 12 ‘ — сотни миллиардов
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 11 ‘ — десятки миллиардов
vl = Mid(SumInt, shag, 1)
If vl = "1" And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 10 ‘ — единицы миллиардов
vl = Mid(SumInt, shag, 1)
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then txt = txt & Edinicy(Mid(SumInt, shag — 1, 2)) & "миллиарда " Else txt = txt & Edinicy(vl) & mlrd(vl) ‘числа в диапозоне от 11 до 19 склоняются на "мільярдов" независимо от последнего числа триады
Else
txt = txt & Edinicy(vl) & mlrd(vl)
End If
Case 9 ‘ — сотни миллионов
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 8 ‘ — десятки миллионов
vl = Mid(SumInt, shag, 1)
If vl = "1" And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 7 ‘ — единицы миллионов
vl = Mid(SumInt, shag, 1)
If shag > 2 Then
If (Mid(SumInt, shag — 2, 1) = 0 And Mid(SumInt, shag — 1, 1) = 0 And vl = "0" ) Then GoTo 10
End If
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then txt = txt & Edinicy(Mid(SumInt, shag — 1, 2)) & "миллиона " Else : txt = txt & Edinicy(vl) & mln(vl) ‘числа в диапозоне от 11 до 19 склоняются на "миллиардов" независимо от последнего числа триады
Else
txt = txt & Edinicy(vl) & mln(vl)
End If
‘-КОНЕЦ БЛОКА_______________________
Case 6 ‘ — сотни тысяч
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 5 ‘ — десятки тысяч
vl = Mid(SumInt, shag, 1)
If vl = 1 And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 4 ‘ — единицы тысяч
vl = Mid(SumInt, shag, 1)
If shag > 2 Then
If (Mid(SumInt, shag — 2, 1) = 0 And Mid(SumInt, shag — 1, 1) = 0 And vl = "0" ) Then GoTo 10
End If
Sclon_Tys = Edinicy(vl) & tys(vl) ‘ — вводим переменную Sclon_Tys из-за иного склонения тысяч в русском языке
If vl = 1 Then Sclon_Tys = "одна " & tys(vl) ‘ — для тысяч склонение "один" и "два" неприменимо ( поэтому вводим переменную Sclon_Tys )
If vl = 2 Then Sclon_Tys = "две " & tys(vl) ‘ — для тысяч склонение "один" и "два" неприменимо ( поэтому вводим переменную Sclon_Tys )
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then Sclon_Tys = Edinicy(Mid(SumInt, shag — 1, 2)) & "тисяч "
End If
txt = txt & Sclon_Tys
‘-КОНЕЦ БЛОКА_______________________
Case 3 ‘ — сотни
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 2 ‘ — десятки
vl = Mid(SumInt, shag, 1)
If vl = "1" And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 1 ‘ — единицы
If Mid(SumInt, shag — 1, 1) <> 1 Or Mid(SumInt, shag — 1, 2) = "10" Then vl = Mid(SumInt, shag, 1) Else vl = Mid(SumInt, shag — 1, 2)
txt = txt & EdinicyPoslednie(vl)
End Select
10: Next x
a = Число
b = Int(a)
c = (Round(a — b, 2)) * 100
If c < 10 And c >= 1 Then c = "0" + CStr(c)
If c = 0 Then c = CStr(c) + "0"
d = ""
If Валюта = 1 Then d = "коп." Else d = "цен."
If Валюта > 2 Or Валюта < 0 Then MsgBox "Укажите параметр 0-2"
If Валюта > 2 Or Валюта < 0 Then GoTo 11
If Копейки = 0 Then
d = ""
c = ""
End If
If Копейки = 2 Then d = ""
If Копейки > 2 Or Копейи < 0 Then MsgBox "Укажите параметр 0, 1 или 2"
If Копейки > 2 Or Копейки < 0 Then GoTo 11
ЧислоПрописьюВалюта = UCase(Left(txt, 1)) & LCase(Mid(txt, 2)) + " " + CStr(c) + d
11:
End Function
Sub DescribeFunction()
Dim FuncName As String
Dim FuncDesc As String
Dim Category As String
Dim ArgDesc(1 To 3) As String
FuncName = "ЧислоПрописьюВалюта"
FuncDesc = "Функция преобразовывает число суммы текстовыми словами"
Category = 1 ‘Text category
ArgDesc(1) = "Исходная сумма"
ArgDesc(2) = "(необязательный) Тип отображаемой валюты 0-Евро, 1-Рубли, 2-Доллары."
ArgDesc(3) = "(необязательный) Нужны ли копейки: 0-нет, 1-отображать копейи стандартно, 2-отображать только дробную часть (без слов)."
Application.MacroOptions _
Macro:=FuncName, _
Description:=FuncDesc, _
Category:=Category, _
ArgumentDescriptions:=ArgDesc
End Sub
Также не забудьте добавить в рабочую книгу код вызова макроса регистрации DescribeFunction, чтобы отображать описание атрибутов для пользовательской функции:
Кроме того благодаря данному макросу DescribeFunction функция будет доступна в группе: «ФОРМУЛЫ»-«Библиотека функций»-«Финансовые»-«ЧислоПрописьюВалюта»

Если мы указываем число (от 0 до 2)в параметре второй функции «ЧислоПрописьюВалюта» то функция автоматически подставит нужную валюту в сумме прописью:
- 1-рубли;
- 2-доллары;
- 0-евро;
Как видите, этот VBA-код макроса преобразует числа в слова. После вставки данного кода в модуль редактора макросов, у нас работает новая функция, которую можно вызвать из мастера (кнопка fx возле строки формул).
Украинская версия функции ЧислоСловоВалюта для перевода сумм в гривны находиться в следующем файле:

Теперь вы можете быстро перевести сумму в слова прописью. Чтобы воспользоваться готовым решением рекомендуем скачать пример числа прописью в Excel. Данный файл содержит уже готовую пользовательскую функцию и VBA-код макроса, который доступен в модуле из редактора.
Как в экселе число написать буквами
Цифры прописью в Excel — вот так чудо, и это один из наглядных примеров рационального использования достижений автоматизации процессов. О такой возможности многие пользователи и не догадываются, а между тем можно порядком сэкономить драгоценное время.
Цифры прописью в Excel
Для замены цифр прописью в Excel потребуется воспользоваться дополнительной надстройкой, но не стоит пугаться, если вы ничего в этом не понимаете. Читайте и делайте согласно инструкции, и все у вас получится.
Интересно. Как сделать подобное в Word читайте здесь.
Число прописью в Экселе. Установка
В данном уроке вам будет предложено скачать бесплатно корректно работающий вариант приложения для написания числа прописью найденного на просторах интернета.
Как правило, необходимость конвертировать цифры в текст возникает в различных бухгалтерских и платежных документах, поэтому радует и наличие возможности выбора основных валют (рубли, доллары и евро).
Довольно лирики, давайте приступим и подробно разберемся, как написать число прописью.
Делаем в следующем порядке:
1. Скачиваем и распаковываем файл кликнув здесь.
2. Закиньте файл NUMSTR.XLA в папку Library, которая находится C:\ProgramFiles (x86)\MicrosoftOffice\Office14\Library (возможно расположение немного отличается, зависит от версий ПО).
3. Запустите Excel и на вкладке «Разработчик» кликните по кнопке «Надстройки» ( если ее нет, читайте ниже ).

Внимание. Если нет вкладки «Разработчик», пройдите Файл → Параметры → Настройка ленты и установите галку напротив пункта «Разработчик».

4. В окне «Надстройки» отметьте пункт NumStrAdd-in и нажмите ОК.

Число прописью в Excel. Как пользоваться
Расширение установлено, теперь несколько слов как использовать:
5. Для примера напишите в произвольной ячейке число цифрами.
6. Кликните по кнопке «Вставить Функцию».

7. В открывшемся окне «Мастер функций» в списке «Категория» выберите «Определенные пользователем».
8. После этого выберите необходимую функцию:
NumStr – отобразит цифры буквами в Excel;
RubStr — преобразует число прописью в рублях;
USDStr – конвертирует число прописью в долларах;
EURStr – выведет сумму прописью в евро.
9. В следующем окне «Аргументы функции» укажите в поле ячейку с данными (кликнут курсором) или непосредственно число цифрами, завершив нажатием кнопки ОК и растянувшейся улыбкой.

Интересно. Как закрепить строки в Excel читайте тут.
Сумма прописью в Microsoft Excel

При заполнении различных финансовых документов часто требуется прописать сумму не только числом, но и прописью. Конечно, это занимает гораздо больше времени, чем обычное написание с помощью цифр. Если подобным образом нужно заполнить не одно, а много документов, то временные потери становятся огромными. Кроме того, именно в записи суммы прописью наиболее часто встречаются грамматические ошибки. Давайте выясним, как сделать так, чтобы числа прописью вносились автоматически.
Использование надстройки
В Эксель нет встроенного инструмента, который бы помогал автоматически переводить цифры в слова. Поэтому для решения поставленной задачи используют специальные надстройки.
Одной из самых удобных является надстройка NUM2TEXT. Она позволяет поменять цифры на буквы через Мастер функций.

Перемещаемся в раздел «Параметры».

В активном окне параметров переходим в раздел «Надстройки».


Открывается небольшое окно надстроек Excel. Жмем на кнопку «Обзор…».

В открывшемся окне ищем предварительно скачанный и сохраненный на жесткий диск компьютера файл надстройки NUM2TEXT.xla. Выделяем его и жмем на кнопку «OK».

Мы видим, что данный элемент появился среди доступных надстроек. Ставим галочку около пункта NUM2TEXT и жмем на кнопку «OK».


Запускается Мастер функций. В полном алфавитном перечне функций ищем запись «Сумма_прописью». Её раньше не было, но она появилась тут после установки надстройки. Выделяем эту функцию. Жмем на кнопку «OK».

Отрывается окно аргументов функции Сумма_прописью. Оно содержит только одно поле «Сумма». Сюда можно записать обычное число. Оно в выделенной ячейке отобразиться в формате записанной прописью денежной суммы в рублях и копейках.

Можно в поле занести адрес любой ячейки. Это делается либо путем ручной записи координат этой ячейки, либо простым кликом по ней в то время, когда курсор находится в поле параметра «Сумма». Жмем на кнопку «OK».


Функцию можно также записать и вручную без вызова мастера функций. Она имеет синтаксис Сумма_прописью(сумма) или Сумма_прописью(координаты_ячейки). Таким образом, если вы в ячейке запишите формулу =Сумма_прописью(5) , то после нажатия кнопки ENTER в этой ячейке отобразиться надпись «Пять рублей 00 копеек».

Если вы введете в ячейку формулу =Сумма_прописью(A2) , то в таком случае, любое число, внесенное в ячейку A2 будет отображаться тут денежной суммой прописью.

Как видим, несмотря на то, что в Excel нет встроенного инструмента для преобразования чисел в сумму прописью, эту возможность можно довольно легко получить, просто установив необходимую надстройку в программу.
Сумма прописью в Excel: как написать число текстом
Здравствуйте.
Нередко в различных документах Excel (особенно, связанных с бухгалтерией, подсчетом денег и т.д. 👌) требуется прописать полученную сумму «Итого» прописью (текстом). Например, рядом с числом «5100,45» — написать «пять тысяч сто рублей 45 копеек».
Встроенной простой функции для решения это небольшой задачки в Excel нет (к сожалению). Разумеется, чтобы каждый раз не работать «руками», решая эту задачу — лучше это всё автоматизировать!
Собственно, об этом и будет эта небольшая заметка.
Важно: не претендую на истину в последней инстанции. Предложенный мной способ — не лучший и не худший (есть и другие). Просто он наиболее быстрый и простой для понимания любым неподготовленным пользователем.
Автоматически: число —> текст
Для расширения функций Excel нам понадобиться сторонняя надстройка . Своего рода это скрипт, который нужно будет установить в Excel, а потом использовать его (делается это очень просто). Ссылку на эту надстройку привожу ниже. 👇
Загрузить этот спец. файл можно отсюда: ссылка на Яндекс-диск (на вирусы проверено, всё чисто ✔). Совместимо с Excel 2019, 2016, 2013 (с др. не проверял).
Она позволит написать сумму прописью на русском языке:
После открываем Excel и переходим в меню «Файл/параметры» .

Далее в разделе «Надстройки» нажимаем по кнопке «Перейти» (в нижней части окна).

Надстройки Excel — перейти
Затем с помощью кнопки «Обзор» указываем загруженную надстройку (см. ШАГ 1 ☝), ставим галочку напротив «Сумма прописью» и нажимаем OK. См. пример ниже. 👇

Если всё прошло корректно — то в Excel должно было появиться 4-ре новых функции. Чтобы проверить так ли это — попробуйте начать вводить функцию «=сум» (на русском!). 👇

Теперь в Excel появилось 4 новых функции
Собственно, осталось дело за малым: написать формулу, например, «=Сумма прописью ()» , а в скобках указать ячейку, в которой у вас находится число (сумма), требующуюся написать прописью.
Как видите из примера ниже — всё работает! «Пятьдесят четыре тысячи сто семьдесят семь рублей 84 копейки» (прямо как во всех бухгалтерских документах) 👌

Очень простые альтернативные решения — приветствуются!
Как перевести сумму или число прописью в Excel
Часто нужно перевести число в текст в Excel так, чтобы оно отображалось прописью (словами) на русском или других языках. Так как по умолчанию нет готовой функции, создадим свою пользовательскую функцию с помощью макросов.
Пример использования пользовательской функции для преобразования числа суммы в текстовые слова, которую можно скачать в конце статьи:

Для создания пользовательской функции, которая сможет перевести число в текст прописью , нам нужно выполнить 3 простых шага:
- Открыть редактор макросов ALT+F11.
- Создать новый модуль и в нем нужно написать функцию особенным способом: Function вместо Sub . Тогда наша функция «ЧислоПропись» будет отображаться в списке мастера функций (SHIFT+F3), в категории «Определенные пользователем».

- Вставить в модуль следующий код и сохранить:
Function ЧислоПропись(Число As Currency ) As String
‘до 999 999 999 999
On Error GoTo Число_Error
Dim strМиллиарды As String , strМиллионы As String , strТысячи As String , strЕдиницы As String , strСотые As String
Dim Поз As Integer
strЧисло = Format(Int(Число), «000000000000» )
‘Миллиарды’
Поз = 1
strМиллиарды = Сотни(Mid(strЧисло, Поз, 1))
strМиллиарды = strМиллиарды & Десятки(Mid(strЧисло, Поз + 1, 2), «м» )
strМиллиарды = strМиллиарды & ИмяРазряда(strМиллиарды, Mid(strЧисло, Поз + 1, 2), «миллиард » , «миллиарда » , «миллиардов » )
‘Миллионы’
Поз = 4
strМиллионы = Сотни(Mid(strЧисло, Поз, 1))
strМиллионы = strМиллионы & Десятки(Mid(strЧисло, Поз + 1, 2), «м» )
strМиллионы = strМиллионы & ИмяРазряда(strМиллионы, Mid(strЧисло, Поз + 1, 2), «миллион » , «миллиона » , «миллионов » )
‘Тысячи’
Поз = 7
strТысячи = Сотни(Mid(strЧисло, Поз, 1))
strТысячи = strТысячи & Десятки(Mid(strЧисло, Поз + 1, 2), «ж» )
strТысячи = strТысячи & ИмяРазряда(strТысячи, Mid(strЧисло, Поз + 1, 2), «тысяча » , «тысячи » , «тысяч » )
‘Единицы’
Поз = 10
strЕдиницы = Сотни(Mid(strЧисло, Поз, 1))
strЕдиницы = strЕдиницы & Десятки(Mid(strЧисло, Поз + 1, 2), «м» )
If strМиллиарды & strМиллионы & strТысячи & strЕдиницы = «» Then strЕдиницы = «ноль »
‘strЕдиницы = strЕдиницы & ИмяРазряда(» «, Mid(strЧисло, Поз + 1, 2), «рубль «, «рубля «, «рублей «)
‘Сотые’
‘strСотые = strКопейки & » » & ИмяРазряда(strКопейки, Right(strКопейки, 2), ‘»копейка», «копейки», «копеек»)
ЧислоПропись = strМиллиарды & strМиллионы & strТысячи & strЕдиницы
ЧислоПропись = UCase(Left(ЧислоПропись, 1)) & Right(ЧислоПропись, Len(ЧислоПропись) — 1)
Число_Error:
MsgBox Err.Description
End Function
Function Сотни(n As String ) As String
Сотни = «»
Select Case n
Case 0: Сотни = «»
Case 1: Сотни = «сто »
Case 2: Сотни = «двести »
Case 3: Сотни = «триста »
Case 4: Сотни = «четыреста »
Case 5: Сотни = «пятьсот »
Case 6: Сотни = «шестьсот »
Case 7: Сотни = «семьсот »
Case 8: Сотни = «восемьсот »
Case 9: Сотни = «девятьсот »
End Select
End Function
Function Десятки(n As String , Sex As String ) As String
Десятки = «»
Select Case Left(n, 1)
Case «0» : Десятки = «» : n = Right(n, 1)
Case «1» : Десятки = «»
Case «2» : Десятки = «двадцать » : n = Right(n, 1)
Case «3» : Десятки = «тридцать » : n = Right(n, 1)
Case «4» : Десятки = «сорок » : n = Right(n, 1)
Case «5» : Десятки = «пятьдесят » : n = Right(n, 1)
Case «6» : Десятки = «шестьдесят » : n = Right(n, 1)
Case «7» : Десятки = «семьдесят » : n = Right(n, 1)
Case «8» : Десятки = «восемьдесят » : n = Right(n, 1)
Case «9» : Десятки = «девяносто » : n = Right(n, 1)
End Select
Dim Двадцатка As String
Двадцатка = «»
Select Case n
Case «0» : Двадцатка = «»
Case «1»
Select Case Sex
Case «м» : Двадцатка = «один »
Case «ж» : Двадцатка = «одна »
Case «с» : Двадцатка = «одно »
End Select
Case «2» :
Select Case Sex
Case «м» : Двадцатка = «два »
Case «ж» : Двадцатка = «две »
Case «с» : Двадцатка = «два »
End Select
Case «3» : Двадцатка = «три »
Case «4» : Двадцатка = «четыре »
Case «5» : Двадцатка = «пять »
Case «6» : Двадцатка = «шесть »
Case «7» : Двадцатка = «семь »
Case «8» : Двадцатка = «восемь »
Case «9» : Двадцатка = «девять »
Case «10» : Двадцатка = «десять »
Case «11» : Двадцатка = «одиннадцать »
Case «12» : Двадцатка = «двенадцать »
Case «13» : Двадцатка = «тринадцать »
Case «14» : Двадцатка = «четырнадцать »
Case «15» : Двадцатка = «пятнадцать »
Case «16» : Двадцатка = «шестнадцать »
Case «17» : Двадцатка = «семнадцать »
Case «18» : Двадцатка = «восемнадцать »
Case «19» : Двадцатка = «девятнадцать »
End Select
Десятки = Десятки & Двадцатка
End Function
Function ИмяРазряда(Строка As String , n As String , Имя1 As String , Имя24 As String , ИмяПроч As String ) As String
Select Case n
Case «1» : ИмяРазряда = Имя1
Case «2» , «3» , «4» : ИмяРазряда = Имя24
Case Else : ИмяРазряда = ИмяПроч
End Select
End If

Можно написать алгоритм макро программы по-другому и еще сделать так, чтобы она дописывала валюту суммы прописью. Для этого создайте Module2 и введите в него следующий код:
Function ЧислоПрописьюВалюта(Число As Double , Optional Валюта As Integer = 1, Optional Копейки As Integer = 1)
Attribute ЧислоПрописьюВалюта.VB_Description = «Функция преобразовывает число суммы текстовыми словами»
Attribute ЧислоПрописьюВалюта.VB_ProcData.VB_Invoke_Func = » \n1″
Dim Edinicy(0 To 19) As String : Dim EdinicyPoslednie(0 To 19) As String
Dim Desyatki(0 To 9) As String : Dim Sotni(0 To 9) As String : Dim mlrd(0 To 9) As String
Dim mln(0 To 9) As String : Dim tys(0 To 9) As String
Dim SumInt, x, shag, vl As Integer : Dim txt, Sclon_Tys As String
‘———————————————
Application.Volatile
‘———————————————
Edinicy(0) = «» : EdinicyPoslednie(0) = IIf(Валюта = 0, «евро» , IIf(Валюта = 1, «рублей» , «долларов» ))
Edinicy(1) = «один » : EdinicyPoslednie(1) = IIf(Валюта = 0, «один евро» , IIf(Валюта = 1, «один рубль» , «один доллар» ))
Edinicy(2) = «два » : EdinicyPoslednie(2) = IIf(Валюта = 0, «два евро» , IIf(Валюта = 1, «два рубля» , «два доллара» ))
Edinicy(3) = «три » : EdinicyPoslednie(3) = IIf(Валюта = 0, «три евро» , IIf(Валюта = 1, «три рубля» , «три доллара» ))
Edinicy(4) = «четыре » : EdinicyPoslednie(4) = IIf(Валюта = 0, «четыре евро» , IIf(Валюта = 1, «четыре рубля» , «четыре доллара» ))
Edinicy(5) = «пять » : EdinicyPoslednie(5) = IIf(Валюта = 0, «пять евро» , IIf(Валюта = 1, «пять рублей» , «пять долларов» ))
Edinicy(6) = «шесть » : EdinicyPoslednie(6) = IIf(Валюта = 0, «шесть евро» , IIf(Валюта = 1, «шесть рублей» , «шесть долларов» ))
Edinicy(7) = «семь » : EdinicyPoslednie(7) = IIf(Валюта = 0, «семь евро» , IIf(Валюта = 1, «семь рублей» , «семь долларов» ))
Edinicy(8) = «восемь » : EdinicyPoslednie(8) = IIf(Валюта = 0, «восемь евро» , IIf(Валюта = 1, «восемь рублей» , «восемь долларов» ))
Edinicy(9) = «девять » : EdinicyPoslednie(9) = IIf(Валюта = 0, «девять евро» , IIf(Валюта = 1, «девять рублей» , «девять долларов» ))
Edinicy(11) = «одиннадцать » : EdinicyPoslednie(11) = IIf(Валюта = 0, «одиннадцать евро» , IIf(Валюта = 1, «одиннадцать рублей» , «одиннадцать долларов» ))
Edinicy(12) = «надцать » : EdinicyPoslednie(12) = IIf(Валюта = 0, «надцать евро» , IIf(Валюта = 1, «надцать рублей» , «надцать долларов» ))
Edinicy(13) = «тринадцать » : EdinicyPoslednie(13) = IIf(Валюта = 0, «тринадцать евро» , IIf(Валюта = 1, «тринадцать рублей» , «тринадцать долларов» ))
Edinicy(14) = «четырнадцать » : EdinicyPoslednie(14) = IIf(Валюта = 0, «четырнадцать евро» , IIf(Валюта = 1, «четырнадцать рублей» , «четырнадцать долларов» ))
Edinicy(15) = «пятнадцать » : EdinicyPoslednie(15) = IIf(Валюта = 0, «пятнадцать евро» , IIf(Валюта = 1, «пятнадцать рублей» , «пятнадцать долларов» ))
Edinicy(16) = «шестнадцать » : EdinicyPoslednie(16) = IIf(Валюта = 0, «шестнадцать евро» , IIf(Валюта = 1, «шестнадцать рублей» , «шестнадцать долларов» ))
Edinicy(17) = «семнадцать » : EdinicyPoslednie(17) = IIf(Валюта = 0, «семнадцать евро» , IIf(Валюта = 1, «семнадцать рублей» , «семнадцать долларов» ))
Edinicy(18) = «восемнадцать » : EdinicyPoslednie(18) = IIf(Валюта = 0, «восемнадцать евро» , IIf(Валюта = 1, «восемнадцать рублей» , «восемнадцать долларов» ))
Edinicy(19) = «девятнадцать » : EdinicyPoslednie(19) = IIf(Валюта = 0, «девятнадцать евро» , IIf(Валюта = 1, «девятнадцать рублей» , «девятнадцать долларов» ))
»———————————————
Desyatki(0) = «» : Sotni(0) = «» : tys(0) = «тисячь » : mln(0) = «миллионов » : mlrd(0) = «миллиардов »
Desyatki(1) = «десять » : Sotni(1) = «сто » : tys(1) = «тысяча » : mln(1) = «миллион » : mlrd(1) = «миллиарда »
Desyatki(2) = «двадцать » : Sotni(2) = «двести » : tys(2) = «тысячи » : mln(2) = «миллиона » : mlrd(2) = «миллиарда »
Desyatki(3) = «тридцать » : Sotni(3) = «триста » : tys(3) = «тысячи » : mln(3) = «миллиона » : mlrd(3) = «миллиарда »
Desyatki(4) = «сорок » : Sotni(4) = «четыреста » : tys(4) = «тысячи » : mln(4) = «миллиона » : mlrd(4) = «миллиарда »
Desyatki(5) = «пятьдесят » : Sotni(5) = «пятьсот » : tys(5) = «тысяч » : mln(5) = «миллионов » : mlrd(5) = «миллиардов »
Desyatki(6) = «шестьдесят » : Sotni(6) = «шестьсот » : tys(6) = «тысяч » : mln(6) = «миллионов » : mlrd(6) = «миллиардов »
Desyatki(7) = «семьдесят » : Sotni(7) = «семьсот » : tys(7) = «тысяч » : mln(7) = «миллионов » : mlrd(7) = «миллиардов »
Desyatki(8) = «восемьдесят » : Sotni(8) = «восемьсот » : tys(8) = «тысяч » : mln(8) = «миллионов » : mlrd(8) = «миллиардов »
Desyatki(9) = «девяносто » : Sotni(9) = «девятьсот » : tys(9) = «тысяч » : mln(9) = «миллионов » : mlrd(9) = «миллиардов »
‘———————————————
On Error Resume Next
SumInt = Int(Число)
For x = Len(SumInt) To 1 Step -1
shag = shag + 1
Select Case x
Case 12 ‘ — сотни миллиардов
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 11 ‘ — десятки миллиардов
vl = Mid(SumInt, shag, 1)
If vl = «1» And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 10 ‘ — единицы миллиардов
vl = Mid(SumInt, shag, 1)
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then txt = txt & Edinicy(Mid(SumInt, shag — 1, 2)) & «миллиарда » Else txt = txt & Edinicy(vl) & mlrd(vl) ‘числа в диапозоне от 11 до 19 склоняются на «мільярдов» независимо от последнего числа триады
Else
txt = txt & Edinicy(vl) & mlrd(vl)
End If
Case 9 ‘ — сотни миллионов
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 8 ‘ — десятки миллионов
vl = Mid(SumInt, shag, 1)
If vl = «1» And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 7 ‘ — единицы миллионов
vl = Mid(SumInt, shag, 1)
If shag > 2 Then
If (Mid(SumInt, shag — 2, 1) = 0 And Mid(SumInt, shag — 1, 1) = 0 And vl = «0» ) Then GoTo 10
End If
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then txt = txt & Edinicy(Mid(SumInt, shag — 1, 2)) & «миллиона » Else : txt = txt & Edinicy(vl) & mln(vl) ‘числа в диапозоне от 11 до 19 склоняются на «миллиардов» независимо от последнего числа триады
Else
txt = txt & Edinicy(vl) & mln(vl)
End If
‘-КОНЕЦ БЛОКА_______________________
Case 6 ‘ — сотни тысяч
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 5 ‘ — десятки тысяч
vl = Mid(SumInt, shag, 1)
If vl = 1 And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 4 ‘ — единицы тысяч
vl = Mid(SumInt, shag, 1)
If shag > 2 Then
If (Mid(SumInt, shag — 2, 1) = 0 And Mid(SumInt, shag — 1, 1) = 0 And vl = «0» ) Then GoTo 10
End If
Sclon_Tys = Edinicy(vl) & tys(vl) ‘ — вводим переменную Sclon_Tys из-за иного склонения тысяч в русском языке
If vl = 1 Then Sclon_Tys = «одна » & tys(vl) ‘ — для тысяч склонение «один» и «два» неприменимо ( поэтому вводим переменную Sclon_Tys )
If vl = 2 Then Sclon_Tys = «две » & tys(vl) ‘ — для тысяч склонение «один» и «два» неприменимо ( поэтому вводим переменную Sclon_Tys )
If shag > 1 Then
If Mid(SumInt, shag — 1, 1) = 1 Then Sclon_Tys = Edinicy(Mid(SumInt, shag — 1, 2)) & «тисяч »
End If
txt = txt & Sclon_Tys
‘-КОНЕЦ БЛОКА_______________________
Case 3 ‘ — сотни
vl = Mid(SumInt, shag, 1)
txt = txt & Sotni(vl)
Case 2 ‘ — десятки
vl = Mid(SumInt, shag, 1)
If vl = «1» And Mid(SumInt, shag + 1, 1) <> 0 Then GoTo 10 Else txt = txt & Desyatki(vl) ‘ — если конец триады от 11 до 19 то перескакиваем на единицы, иначе — формируем десятки
Case 1 ‘ — единицы
If Mid(SumInt, shag — 1, 1) <> 1 Or Mid(SumInt, shag — 1, 2) = «10» Then vl = Mid(SumInt, shag, 1) Else vl = Mid(SumInt, shag — 1, 2)
txt = txt & EdinicyPoslednie(vl)
End Select
10: Next x
a = Число
b = Int(a)
c = (Round(a — b, 2)) * 100
If c And c >= 1 Then c = «0» + CStr(c)
If c = 0 Then c = CStr(c) + «0»
d = «»
If Валюта = 1 Then d = «коп.» Else d = «цен.»
If Валюта > 2 Or Валюта Then MsgBox «Укажите параметр 0-2»
If Валюта > 2 Or Валюта Then GoTo 11
If Копейки = 0 Then
d = «»
c = «»
End If
If Копейки = 2 Then d = «»
If Копейки > 2 Or Копейи Then MsgBox «Укажите параметр 0, 1 или 2»
If Копейки > 2 Or Копейки Then GoTo 11
ЧислоПрописьюВалюта = UCase(Left(txt, 1)) & LCase(Mid(txt, 2)) + » » + CStr(c) + d
11:
End Function
Sub DescribeFunction()
Dim FuncName As String
Dim FuncDesc As String
Dim Category As String
Dim ArgDesc(1 To 3) As String
FuncName = «ЧислоПрописьюВалюта»
FuncDesc = «Функция преобразовывает число суммы текстовыми словами»
Category = 1 ‘Text category
ArgDesc(1) = «Исходная сумма»
ArgDesc(2) = «(необязательный) Тип отображаемой валюты 0-Евро, 1-Рубли, 2-Доллары.»
ArgDesc(3) = «(необязательный) Нужны ли копейки: 0-нет, 1-отображать копейи стандартно, 2-отображать только дробную часть (без слов).»
Application.MacroOptions _
Macro:=FuncName, _
Description:=FuncDesc, _
Category:=Category, _
ArgumentDescriptions:=ArgDesc
End Sub
Также не забудьте добавить в рабочую книгу код вызова макроса регистрации DescribeFunction, чтобы отображать описание атрибутов для пользовательской функции:
Кроме того благодаря данному макросу DescribeFunction функция будет доступна в группе: «ФОРМУЛЫ»-«Библиотека функций»-«Финансовые»-«ЧислоПрописьюВалюта»

Если мы указываем число (от 0 до 2)в параметре второй функции «ЧислоПрописьюВалюта» то функция автоматически подставит нужную валюту в сумме прописью:
Как видите, этот VBA-код макроса преобразует числа в слова. После вставки данного кода в модуль редактора макросов, у нас работает новая функция, которую можно вызвать из мастера (кнопка fx возле строки формул).
Украинская версия функции ЧислоСловоВалюта для перевода сумм в гривны находиться в следующем файле:

Теперь вы можете быстро перевести сумму в слова прописью. Чтобы воспользоваться готовым решением рекомендуем скачать пример числа прописью в Excel. Данный файл содержит уже готовую пользовательскую функцию и VBA-код макроса, который доступен в модуле из редактора.