Цифры буквами в Excel
Цифры прописью в 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 читайте тут.
Источник статьи: http://dorroggi.ru/stati/47-
Сумма прописью в Microsoft Excel
При заполнении различных финансовых документов часто требуется прописать сумму не только числом, но и прописью. Конечно, это занимает гораздо больше времени, чем обычное написание с помощью цифр. Если подобным образом нужно заполнить не одно, а много документов, то временные потери становятся огромными. Кроме того, именно в записи суммы прописью наиболее часто встречаются грамматические ошибки. Давайте выясним, как сделать так, чтобы числа прописью вносились автоматически.
Использование надстройки
В Эксель нет встроенного инструмента, который бы помогал автоматически переводить цифры в слова. Поэтому для решения поставленной задачи используют специальные надстройки.
Одной из самых удобных является надстройка NUM2TEXT. Она позволяет поменять цифры на буквы через Мастер функций.
Перемещаемся в раздел «Параметры».
В активном окне параметров переходим в раздел «Надстройки».
Открывается небольшое окно надстроек Excel. Жмем на кнопку «Обзор…».
В открывшемся окне ищем предварительно скачанный и сохраненный на жесткий диск компьютера файл надстройки NUM2TEXT.xla. Выделяем его и жмем на кнопку «OK».
Мы видим, что данный элемент появился среди доступных надстроек. Ставим галочку около пункта NUM2TEXT и жмем на кнопку «OK».
Запускается Мастер функций. В полном алфавитном перечне функций ищем запись «Сумма_прописью». Её раньше не было, но она появилась тут после установки надстройки. Выделяем эту функцию. Жмем на кнопку «OK».
Отрывается окно аргументов функции Сумма_прописью. Оно содержит только одно поле «Сумма». Сюда можно записать обычное число. Оно в выделенной ячейке отобразиться в формате записанной прописью денежной суммы в рублях и копейках.
Можно в поле занести адрес любой ячейки. Это делается либо путем ручной записи координат этой ячейки, либо простым кликом по ней в то время, когда курсор находится в поле параметра «Сумма». Жмем на кнопку «OK».
Функцию можно также записать и вручную без вызова мастера функций. Она имеет синтаксис Сумма_прописью(сумма) или Сумма_прописью(координаты_ячейки). Таким образом, если вы в ячейке запишите формулу =Сумма_прописью(5) , то после нажатия кнопки ENTER в этой ячейке отобразиться надпись «Пять рублей 00 копеек».
Если вы введете в ячейку формулу =Сумма_прописью(A2) , то в таком случае, любое число, внесенное в ячейку A2 будет отображаться тут денежной суммой прописью.
Как видим, несмотря на то, что в Excel нет встроенного инструмента для преобразования чисел в сумму прописью, эту возможность можно довольно легко получить, просто установив необходимую надстройку в программу.
Источник статьи: http://lumpics.ru/how-make-amount-words-in-excel/
Сумма прописью в Excel: как написать число текстом
Здравствуйте.
Нередко в различных документах Excel (особенно, связанных с бухгалтерией, подсчетом денег и т.д. 👌) требуется прописать полученную сумму «Итого» прописью (текстом). Например, рядом с числом «5100,45» — написать «пять тысяч сто рублей 45 копеек».
Встроенной простой функции для решения это небольшой задачки в Excel нет (к сожалению). Разумеется, чтобы каждый раз не работать «руками», решая эту задачу — лучше это всё автоматизировать!
Собственно, об этом и будет эта небольшая заметка.
Важно: не претендую на истину в последней инстанции. Предложенный мной способ — не лучший и не худший (есть и другие). Просто он наиболее быстрый и простой для понимания любым неподготовленным пользователем.
Автоматически: число —> текст
Для расширения функций Excel нам понадобиться сторонняя надстройка . Своего рода это скрипт, который нужно будет установить в Excel, а потом использовать его (делается это очень просто). Ссылку на эту надстройку привожу ниже. 👇
Загрузить этот спец. файл можно отсюда: ссылка на Яндекс-диск (на вирусы проверено, всё чисто ✔). Совместимо с Excel 2019, 2016, 2013 (с др. не проверял).
Она позволит написать сумму прописью на русском языке:
После открываем Excel и переходим в меню «Файл/параметры» .
Далее в разделе «Надстройки» нажимаем по кнопке «Перейти» (в нижней части окна).
Надстройки Excel — перейти
Затем с помощью кнопки «Обзор» указываем загруженную надстройку (см. ШАГ 1 ☝), ставим галочку напротив «Сумма прописью» и нажимаем OK. См. пример ниже. 👇
Если всё прошло корректно — то в Excel должно было появиться 4-ре новых функции. Чтобы проверить так ли это — попробуйте начать вводить функцию «=сум» (на русском!). 👇
Теперь в Excel появилось 4 новых функции
Собственно, осталось дело за малым: написать формулу, например, «=Сумма прописью ()» , а в скобках указать ячейку, в которой у вас находится число (сумма), требующуюся написать прописью.
Как видите из примера ниже — всё работает! «Пятьдесят четыре тысячи сто семьдесят семь рублей 84 копейки» (прямо как во всех бухгалтерских документах) 👌
Очень простые альтернативные решения — приветствуются!
Источник статьи: http://ocomp.info/excel-kak-napisat-chislo-tekstom.html
Как перевести сумму или число прописью в 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
If Строка <> «» Then
ИмяРазряда = «»
Select Case Left(n, 1)
Case «0» , «2» , «3» , «4» , «5» , «6» , «7» , «8» , «9» : n = Right(n, 1)
End Select
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-код макроса, который доступен в модуле из редактора.
Источник статьи: http://exceltable.com/vba-macros/chislo-propisyu