Сумма прописью в 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
Как минимум 1 проблема из списка может уже сейчас убить Ваш ноутбук Lenovo
Расшифровка аудиотекста в Microsoft Word: опция, о которой Вы даже не догадывались
Новый интерфейс пользователя Windows 10: уже успели оценить?
Номера телефонов, с которых НЕЛЬЗЯ брать трубку, даже под угрозой пыток
Откуда у мошенников телефонные номера? ТОП мест для слива из первых рук
Во многих документах мы можем видеть строку, в которой требуется указать сумму не в числовом виде, а прописью. Это защищает отчетность от подделки, ведь цифру легко переправить. А вот длинную запись незаметно исправить не так-то просто. Сумма прописью в Excel доступна только в виде надстроек или с использованием формул. Встроенного инструмента не имеется.
Как в Excel сделать сумму прописью
Чтобы получить эту возможность, вы можете скачать надстройку «Сумма прописью» в Excel бесплатно на нашем сайте.
Разместите его в любом удобном каталоге и подключите. Для этого следует пройти следующие этапы:
- Запустите Excel и нажмите «Файл».
- Щелкните на параметры.
- Далее переходите в надстройки.
И кликайте по кнопке «Перейти». - Чтобы подгрузить скачанный файл жмите «Обзор».
- И ищите его в папке, куда сохраняли. Вам предложат скопировать файл в папку надстроек, рекомендуем согласиться. Так Excel всегда будет видеть эту надстройку и вы легко найдете функцию для суммы прописью.
- Нужная библиотека Excel подключена. Галочка означает, что ее можно использовать. Жмите ОК.
- Нужные действия реализованы в виде функции СУММА_ПРОПИСЬЮ. Чтобы применить ее, введите в ячейку A1 число и установите указатель рядом, на B1. Нажмите значок Fx около строки формул.
- И в полном алфавитном перечне найдите функцию СУММА_ПРОПИСЬЮ. Рекомендуем начать печатать название. В таком случае Excel сам перемотает ближе к нужному разделу.
- Жмите ОК и в окне мастера укажите адрес A1. Можно просто мышкой кликнуть по ячейке.
- После нажатия ОК вы увидите сумму прописью.
Эта функция «сумма_прописью» работает в Excel 2007, 2010, 2016
Данная надстройка работает только для рублей. Если вам нужна другая валюта, скачайте еще файл sumprop.xla. Действуя по аналогии подключите надстройку для получения суммы прописью в Excel.
Для проверки введем в ячейке A3 произвольное число. Пусть это будет десятичная дробь. Также вызовем окно вставки функций и найдем новые функции для вывода суммы прописью.
Как видите, нам стали доступны:
- Сумма Прописью
- Сумма Прописью Доллары
- Сумма Прописью Евро
- Сумма Прописью Евро
Переведем число в евро. Выбираем соответствующую функцию и кликаем по ячейке с числом.
После нажатия ОК получаем результат.
С помощью этих инструментов преобразование числа в текст прописью в Excel выполняется очень просто. Если по каким-то причинам вы не хотите устанавливать их в Excel, можно воспользоваться другим способом.
Формула суммы прописью в Excel — как написать число
Для вывода числа прописью в Excel можно создать формулу. Приведем пример:
Для ее использования вам необходимо указать несколько массивов Excel:
Просто скопируйте эту таблицу на лист Excel, а формулу вставляйте туда, где необходима сумма прописью. Вышеприведенная конструкция предназначена для ячейки A3. Не забудьте поменять адрес.
В англоязычном Excel формула суммы прописью будет выглядеть следующим образом:
SUBSTITUTE(PROPER(INDEX(n_4,MID(TEXT(A1,n0),1,1)+1)&INDEX(n0x,MID(TEXT(A1,n0),2,1)+1,MID(TEXT(A1,n0),3,1)+1)&IF(-MID(TEXT(A1,n0),1,3),»миллиард»&VLOOKUP(MID(TEXT(A1,n0),3,1)*AND(MID(TEXT(A1,n0),2,1)-1),мил,2),»»)&INDEX(n_4,MID(TEXT(A1,n0),4,1)+1)&INDEX(n0x,MID(TEXT(A1,n0),5,1)+1,MID(TEXT(A1,n0),6,1)+1)&IF(-MID(TEXT(A1,n0),4,3),»миллион»&VLOOKUP(MID(TEXT(A1,n0),6,1)*AND(MID(TEXT(A1,n0),5,1)-1),мил,2),»»)&INDEX(n_4,MID(TEXT(A1,n0),7,1)+1)&INDEX(n1x,MID(TEXT(A1,n0),8,1)+1,MID(TEXT(A1,n0),9,1)+1)&IF(-MID(TEXT(A1,n0),7,3),VLOOKUP(MID(TEXT(A1,n0),9,1)*AND(MID(TEXT(A1,n0),8,1)-1),тыс,2),»»)&INDEX(n_4,MID(TEXT(A1,n0),10,1)+1)&INDEX(n0x,MID(TEXT(A1,n0),11,1)+1,MID(TEXT(A1,n0),12,1)+1)),»z»,» «)&IF(TRUNC(TEXT(A1,n0)),»»,»Ноль «)&»рубл»&VLOOKUP(MOD(MAX(MOD(MID(TEXT(A1,n0),11,2)-11,100),9),10),<0,"ь ";1,"я ";4,"ей ">,2)&RIGHT(TEXT(A1,n0),2)&» копе»&VLOOKUP(MOD(MAX(MOD(RIGHT(TEXT(A1,n0),2)-11,100),9),10),<0,"йка";1,"йки";4,"ек">,2)
Как видим, это не самый удобный способ преобразовать число в текст прописью в Excel.
Преобразование с помощью макросов Excel
Можно написать собственную функцию, которая произведет конвертацию суммы прописью. Нажмите сочетание ALT+F11 и в открывшемся разработчике Excel VBA вставьте новый модуль.
В него добавьте следующий код.
Теперь эту функцию можно вызвать обычным путем и получить сумму прописью. Она находится в разделе функций Excel «Определенные пользователем».
В качестве аргумента укажите адрес с числом.
Перевод в сумму прописью осуществляется только для целых чисел.
Дробное число требует дополнительной формулы:
Вместо ячейки A7 подставляйте свой адрес. Копейки в таком исполнении будут выводиться в виде числа.
Мы рассмотрели все способы представления суммы прописью в Excel. Выбирайте для себя самый удобный и пользуйтесь с удовольствием!
Источник статьи: http://windowstips.ru/summa-propisyu-v-excel
Как перевести сумму или число прописью в 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