75 прописью на русском. Как прописать сумму, число, цифры прописью в Excel. Арабские и римские цифры

Сумма прописью в excel

75 прописью на русском. Как прописать сумму, число, цифры прописью в Excel. Арабские и римские цифры

После установки надстройки VBA-Excel добавится функционал для вставки суммы прописью. Он содержит удобную форму для ввода (см. рисунок справа), а также функцию СУММАПРОПИСЬЮ, которой можно пользоваться так же как и любой встроенной в Excel.

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

Вы можете указать сумму прописью в договоре в рублях (как с копейками так и без), в долларах США или евро (с центами или без). Помимо суммы договора можно прописывать прописью и срок в календарных или рабочих днях. Можно указывать количество товара прописью в штуках.

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

Вставка суммы прописью через пользовательскую форму

Наиболее простой способ вставить сумму прописью – это заполнить специальную форму.

  1. Выберите ячейку, в которую необходимо вставить число прописью.
  2. На вкладке VBA-Excel нажмите команду Сумма прописью и выберите язык Русский.
  3.  Появится диалоговое окно для выбора параметров функции. Заполните ее так как необходимо Вам. Настройки автоматически сохраняются, чтобы не пришлось повторять действия в следующий раз.
  4. Нажмите Вставить текстом, тогда сумма прописью будет вставлена в ячейку как текст. Нажмите Вставить формулой в случае если в ячейку должна быть вставлена формула, в этом случае сумма прописью будет автоматически изменяться при редактировании числа.

Второй способ вставить сумму прописью – это ввести формулу в ячейку: =СУММАПРОПИСЬЮ(A1), где A1 – ссылка на ячейку с формулой.

Далее рассмотрим подробнее синтаксис функции.

Подробный синтаксис функции

Для использования функции не обязательно постоянно вызывать форму с параметрами. Функцию можно использовать также как и прочие функции Excel. Функция имеет следующие переменные:

=СУММАПРОПИСЬЮ(Число; [Падеж]; [Тип_данных]; [Дробь_прописью]; [Дублировать_число]; [Скобки]; [Заглавная])

Квадратные скобки означают что переменная не обязательная, в этом случае используется значение по умолчанию.

  • Число – ссылка на ячейку или число (не обязательно в числовом формате), которое необходимо написать прописью.
  • [Падеж] – число от 1 до 6, определяющее падеж
  1. Именительный (по умолчанию если параметр не указан)
  2. Родительный
  3. Дательный
  4. Винительный
  5. Творительный
  6. Предложный
  • [Тип_данных] – число от 0 до 8 для добавления после суммы прописью в нужном падеже тип данных
  1. Ничего (по умолчанию если параметр не указан)
  2. Рубли
  3. Доллары США
  4. Евро
  5. Календарные дни
  6. Рабочие дни
  7. Дни
  8. Штуки
  9. Целое + дробная часть
  • [Дробь_прописью] – значение 0 или 1, которое указывает на необходимость записи дробной части числа прописью
  1. Не выводить прописью дробную часть числа (по умолчанию)
  2. Указать прописью также и дробную часть числа
  • [Дублировать_число] – значение 0 или 1, которое указывает на необходимость дублирования числа перед суммой прописью
  1. Скрыть число перед суммой прописью
  2. Продублировать числовое значение суммы прописью (по умолчанию)
  • [Скобки] – значение 0 или 1, которое указывает на необходимость записывать сумму прописью в скобках
  1. Убрать скобки из суммы прописью
  2. Поместить сумму прописью в скобки (по умолчанию)
  • [Заглавная] – значение 0 или 1, которое указывает на необходимость делать первую букву суммы прописью заглавной
  1. Все буквы суммы прописью строчные
  2. Сделать первую букву заглавной (по умолчанию)

Разберем синтаксис функции на примерах:

Склонение числительных по падежам.

Добавление типа данных после указания суммы прописью. Обратите внимание, что если вторая переменная (падеж) не задана, то указывается по умолчанию в именительном падеже.

Как прописать дробную часть числа с помощью функции.

Различные форматы вывода суммы прописью.

Функция сумма прописью на украинском языке

Аналогичный функционал для вставки суммы прописью есть и для украинского языка.  Также имеется похожая форма для удобной вставки и функция СУММАПРОПИСЬЮУКР.

Чтобы вызвать форму для вставки суммы прописью на украинском языке, выполните следующие действия:

  1. Выберите ячейку, в которую необходимо вставить число прописью.
  2. На вкладке VBA-Excel нажмите команду Сумма прописью и выберите язык Украинский.
  3. Дальнейшие действия аналогичны 

Функция сумма прописью на английском языке

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

Чтобы вставить число прописью на английском языке нужно:

  1. Выбрать ячейку в которую необходимо вставить результат
  2. На вкладке VBA-Excel нажмите команду Сумма прописью и выберите язык Английский.
  3. Укажите число и нажмите одну из кнопок Вставить формулой или Вставить текстом.

Вместо формы ввода, Вы также можете пользоваться функцией =СУММАПРОПИСЬЮEN(ЧИСЛО). Функция имеет один аргумент: ЧИСЛО – значение или ссылка на ячейку с числом, которое необходимо преобразовать в текст прописью. 

Источник: https://micro-solution.ru/projects/addin_vba-excel/summ_words

Сумма прописью в Excel

75 прописью на русском. Как прописать сумму, число, цифры прописью в Excel. Арабские и римские цифры

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

Как в Excel сделать сумму прописью

Скачать файл надстройки

Чтобы получить эту возможность, вы можете скачать надстройку «Сумма прописью» в Excel бесплатно на нашем сайте.

Разместите его в любом удобном каталоге и подключите. Для этого следует пройти следующие этапы:

  • Запустите Excel и нажмите «Файл».
  • Щелкните на параметры.
  • Далее переходите в надстройки. И кликайте по кнопке «Перейти».
  • Чтобы подгрузить скачанный файл жмите «Обзор».
  • И ищите его в папке, куда сохраняли. Вам предложат скопировать файл в папку надстроек, рекомендуем согласиться. Так Excel всегда будет видеть эту надстройку и вы легко найдете функцию для суммы прописью.
  • Нужная библиотека Excel подключена. Галочка означает, что ее можно использовать. Жмите ОК.
  • Нужные действия реализованы в виде функции СУММА_ПРОПИСЬЮ. Чтобы применить ее, введите в ячейку A1 число и установите указатель рядом, на B1. Нажмите значок Fx около строки формул.
  • И в полном алфавитном перечне найдите функцию СУММА_ПРОПИСЬЮ. Рекомендуем начать печатать название. В таком случае Excel сам перемотает ближе к нужному разделу.
  • Жмите ОК и в окне мастера укажите адрес A1. Можно просто мышкой кликнуть по ячейке.
  • После нажатия ОК вы увидите сумму прописью.

Эта функция «сумма_прописью» работает в Excel 2007, 2010, 2016

Данная надстройка работает только для рублей. Если вам нужна другая валюта, скачайте еще файл sumprop.xla. Действуя по аналогии подключите надстройку для получения суммы прописью в Excel.

Для проверки введем в ячейке A3 произвольное число. Пусть это будет десятичная дробь. Также вызовем окно вставки функций и найдем новые функции для вывода суммы прописью.

Как видите, нам стали доступны:

  • Сумма Прописью
  • Сумма Прописью Доллары
  • Сумма Прописью Евро
  • Сумма Прописью Евро

Переведем число в евро. Выбираем соответствующую функцию и кликаем по ячейке с числом.
После нажатия ОК получаем результат.

С помощью этих инструментов преобразование числа в текст прописью в Excel выполняется очень просто. Если по каким-то причинам вы не хотите устанавливать их в Excel, можно воспользоваться другим способом.

Формула суммы прописью в Excel – как написать число

Для вывода числа прописью в Excel можно создать формулу. Приведем пример:

ПОДСТАВИТЬ(ПРОПНАЧ(ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);1;1)+1)&ИНДЕКС(n0x;ПСТР(ТЕКСТ(A3;n0);2;1)+1;ПСТР(ТЕКСТ(A3;n0);3;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);1;3);”миллиард”&ВПР(ПСТР(ТЕКСТ(A3;n0);3;1)*И(ПСТР(ТЕКСТ(A3;n0);2;1)-1);мил;2);””)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);4;1)+1)&ИНДЕКС(n0x;ПСТР(ТЕКСТ(A3;n0);5;1)+1;ПСТР(ТЕКСТ(A3;n0);6;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);4;3);”миллион”&ВПР(ПСТР(ТЕКСТ(A3;n0);6;1)*И(ПСТР(ТЕКСТ(A3;n0);5;1)-1);мил;2);””)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);7;1)+1)&ИНДЕКС(n1x;ПСТР(ТЕКСТ(A3;n0);8;1)+1;ПСТР(ТЕКСТ(A3;n0);9;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);7;3);ВПР(ПСТР(ТЕКСТ(A3;n0);9;1)*И(ПСТР(ТЕКСТ(A3;n0);8;1)-1);тыс;2);””)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);10;1)+1)&ИНДЕКС(ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);14;6);n1x;n0x);ПСТР(ТЕКСТ(A3;n0);11;1)+1;ПСТР(ТЕКСТ(A3;n0);12;1)+1));”z”;” “)&ЕСЛИ(ОТБР(ТЕКСТ(A3;n0));;”Ноль “)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);14;6);ЕСЛИ(ОСТАТ(МАКС(ОСТАТ(ПСТР(ТЕКСТ(A3;n0);11;2)-11;100);9);10);”целых “;”целая “)&ПОДСТАВИТЬ(ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);14;6)/105+1)&ИНДЕКС(n1x;ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)/104;10)+1;ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)/1000;10)+1)&ЕСЛИ(ЦЕЛОЕ(ПСТР(ТЕКСТ(A3;n0);14;6)/1000);ВПР(ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)/1000;10)*(ОСТАТ(ЦЕЛОЕ(ПСТР(ТЕКСТ(A3;n0);14;6)/104);10)1);тыс;2);””)&ИНДЕКС(n_4;ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)/100;10)+1)&ИНДЕКС(n1x;ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)/10;10)+1;ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6);10)+1);”z”;” “)&ИНДЕКС(доля;ДЛСТР(ПСТР(ТЕКСТ(A3;n0);14;6));(ОСТАТ(МАКС(ОСТАТ(ПСТР(ТЕКСТ(A3;n0);14;6)-11;100);9);10)>0)+1);)

Для ее использования вам необходимо указать несколько массивов Excel:

  • n_1 ={“”;”одинz”;”дваz”;”триz”;”четыреz”;”пятьz”;”шестьz”;”семьz”;”восемьz”;”девятьz”}
  • n_2 ={“десятьz”;”одиннадцатьz”;”двенадцатьz”;”тринадцатьz”;”четырнадцатьz”;”пятнадцатьz”;”шестнадцатьz”;”семнадцатьz”;”восемнадцатьz”;”девятнадцатьz”}
  • n_3 ={“”:1:”двадцатьz”:”тридцатьz”:”сорокz”:”пятьдесятz”:”шестьдесятz”:”семьдесятz”:”восемьдесятz”:”девяностоz”}
  • n_4 ={“”;”стоz”;”двестиz”;”тристаz”;”четырестаz”;”пятьсотz”;”шестьсотz”;”семьсотz”;”восемьсотz”;”девятьсотz”}
  • n_5 ={“”;”однаz”;”двеz”;”триz”;”четыреz”;”пятьz”;”шестьz”;”семьz”;”восемьz”;”девятьz”}
  • n0 =”000000000000″&ПСТР(1/2;2;1)&”0#####”
  • n0x =ЕСЛИ(n_3=1;n_2;n_3&n_1)
  • n1x =ЕСЛИ(n_3=1;n_2;n_3&n_5)
  • доля ={“десятая”;”десятых”:”сотая”;”сотых”:”тысячная”;”тысячных”:”десятитысячная”;”десятитысячных”:”стотысячная”;”стотысячных”:”миллионная “;”миллионных”}
  • мил ={0;”овz”:1;”z”:2;”аz”:5;”овz”}
  • тыс ={0;”тысячz”:1;”тысячаz”:2;”тысячиz”:5;”тысячz”}

Просто скопируйте эту таблицу на лист 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 вставьте новый модуль.

В него добавьте следующий код.

Function SUMMPROPIS(n As Double) As String Dim Chis1, Chis2, Chis3, Chis4, Chis5 As Variant Chis1 = Array(“”, “один “, “два “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Chis2 = Array(“”, “десять “, “двадцать “, “тридцать “, “сорок “, “пятьдесят “, “шестьдесят “, “семьдесят “, “восемьдесят”, “девяносто “) Chis3 = Array(“”, “сто “, “двести “, “триста “, “четыреста “, “пятьсот “, “шестьсот “, “семьсот “, “восемьсот “, “девятьсот “) Chis4 = Array(“”, “одна “, “две “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Chis5 = Array(“десять “, “одиннадцать “, “двенадцать “, “тринадцать “, “четырнадцать “, “пятнадцать “, “шестнадцать “, “семнадцать “, “восемнадцать “, “девятнадцать “) If n 0 Then thous_txt = Chis4(thous) & “тысяч ” Case 1 thous_txt = Chis4(thous) & “тысяча ” Case 2, 3, 4 thous_txt = Chis4(thous) & “тысячи ” Case 5 To 9 thous_txt = Chis4(thous) & “тысяч ” End Select If desthous = 0 And thous = 0 And hundthous 0 Then hundthous_txt = hundthous_txt & ” тысяч ” eee: hund_txt = Chis3(hund) Select Case des Case 1 cifr_txt = Chis5(cifr) GoTo rrr Case 2 To 9 des_txt = Chis2(des) End Select cifr_txt = Chis1(cifr) rrr: SUMMPROPIS = desmil_txt & mil_txt & hundthous_txt & desthous_txt & thous_txt & hund_txt & des_txt & cifr_txt End Function Private Function Retclass(M, I) Retclass = Int(Int(M – (10 I) * Int(M / (10 I))) / 10 (I – 1)) End Function

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

Перевод в сумму прописью осуществляется только для целых чисел.
Дробное число требует дополнительной формулы: =SUMMPROPIS(A7)&” руб. “&ТЕКСТ((A7-ЦЕЛОЕ(A7))*100;”00″)&” коп.”

Вместо ячейки A7 подставляйте свой адрес. Копейки в таком исполнении будут выводиться в виде числа.

Мы рассмотрели все способы представления суммы прописью в Excel. Выбирайте для себя самый удобный и пользуйтесь с удовольствием!

Источник: https://WindowsTips.ru/summa-propisyu-v-excel

Как прописать сумму, число, цифры прописью в Excel

75 прописью на русском. Как прописать сумму, число, цифры прописью в Excel. Арабские и римские цифры

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

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

Как написать сумму прописью на украинском языке

Сумма в рублях, долларах или евро с копейками прописью

Допустим, мы делаем какие-то расчеты в таблице и получаем итоговую сумму в рублях 1526,23

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

Propis(Amount;Money;lang;Prec)

где

Amount — это ссылка на ячейку с числом

Money — тут указывается вид валюты, можно указать рубли, доллары и евро («RUB», «USD», «EUR») — валюта обязательно указывается в кавычках.

lang — это язык на котором необходимо вывести сумму, доступно два языка английский и русский («EN», «RU») — так же указываем в кавычках

Prec — показывать (1) или не показывать (0) дробную часть

https://www.youtube.com/watch?v=MgkXG-Kb0Vc

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

Чтобы создать пользовательскую функцию Propis, необходимо скопировать код, указанный ниже, далее нажмите ALT+F11, чтобы открыть VBA, добавьте новый пустой модуль через меню Insert — Module и вставьте туда скопированный код

Макрос пользовательской функции суммы прописью

Function Propis(Amount As String, Optional Money As String = “RUB”, Optional lang As String = “RU”, Optional Prec As Integer = 1) Dim whole As Double Amount = Replace(Amount, “-“, Application.International(xlDecimalSeparator)) Amount = Replace(Amount, “.”, Application.International(xlDecimalSeparator)) Amount = Replace(Amount, “,”, Application.

International(xlDecimalSeparator)) Sum = WorksheetFunction.

Round(CDbl(Amount), 2) Money = UCase(Money) lang = UCase(lang) whole = Int(Sum) fraq = Format(Round((Sum – whole) * 100), “00”) Select Case Class(whole, 1) + Class(whole, 2) * 10 Case 1, 21, 31, 41, 51, 61, 71, 81, 91 w_rus_r = “рубль” w_rus_d = “доллар” w_rus_e = “евро” w_en_r = “rubles” w_en_d = “dollars” w_en_e = “euro” Case 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94 w_rus_r = “рубля” w_rus_d = “доллара” w_rus_e = “евро” w_en_r = “rubles” w_en_d = “dollars” w_en_e = “euro” Case Else w_rus_r = “рублей” w_rus_d = “долларов” w_rus_e = “евро” w_en_r = “rubles” w_en_d = “dollars” w_en_e = “euro” End Select Select Case fraq Case 1, 21, 31, 41, 51, 61, 71, 81, 91 f_rus_r = “копейка” f_rus_d = “цент” f_rus_e = “цент” f_rus_p = “сотая” f_en_r = “kopecks” f_en_d = “cents” f_en_e = “cents” f_en_e = “cents” Case 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94 f_rus_r = “копейки” f_rus_d = “цента” f_rus_e = “цента” f_en_r = “kopecks” f_en_d = “cents” f_en_e = “cents” Case Else f_rus_r = “копеек” f_rus_d = “центов” f_rus_e = “центов” f_en_r = “kopecks” f_en_d = “cents” f_en_e = “cents” End Select If Prec = 0 Then fraq = “” f_rus_r = “” f_rus_d = “” f_rus_e = “” f_en_r = “” f_en_d = “” f_en_e = “” End If If lang = “RU” Then Select Case Money Case “RUB” Out = ScriptRus(whole) & ” ” & w_rus_r & ” ” & fraq & ” ” & f_rus_r Case “USD” Out = ScriptRus(whole) & ” ” & w_rus_d & ” ” & fraq & ” ” & f_rus_d Case “EUR” Out = ScriptRus(whole) & ” ” & w_rus_e & ” ” & fraq & ” ” & f_rus_e End Select End If If lang = “EN” Then Select Case Money Case “RUB” Out = ScriptEng(whole) & ” ” & w_en_r & ” ” & fraq & ” ” & f_en_r Case “USD” Out = ScriptEng(whole) & ” ” & w_en_d & ” ” & fraq & ” ” & f_en_d Case “EUR” Out = ScriptEng(whole) & ” ” & w_en_e & ” ” & fraq & ” ” & f_en_e End Select End If Propis = WorksheetFunction.Trim(Out) End Function Private Function Class(m, i) Class = Int(Int(m – (10 i) * Int(m / (10 i))) / 10 (i – 1))End Function Private Function ScriptRus(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array(“”, “один “, “два “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Nums2 = Array(“”, “десять “, “двадцать “, “тридцать “, “сорок “, “пятьдесят “, “шестьдесят “, “семьдесят “, “восемьдесят “, “девяносто “) Nums3 = Array(“”, “сто “, “двести “, “триста “, “четыреста “, “пятьсот “, “шестьсот “, “семьсот “, “восемьсот “, “девятьсот “) Nums4 = Array(“”, “одна “, “две “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Nums5 = Array(“десять “, “одиннадцать “, “двенадцать “, “тринадцать “, “четырнадцать “, “пятнадцать “, “шестнадцать “, “семнадцать “, “восемнадцать “, “девятнадцать “) If n = 0 Then ScriptRus = “Ноль” Exit Function End If ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class(n, 4) dectys = Class(n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil = Class(n, 8) sotmil = Class(n, 9) mlrd = Class(n, 10) If mlrd > 0 Then Select Case mlrd Case 1 mlrd_txt = Nums1(mlrd) & “миллиард ” Case 2, 3, 4 mlrd_txt = Nums1(mlrd) & “миллиарда ” Case 5 To 20 mlrd_txt = Nums1(mlrd) & “миллиардов ” End Select End If If (sotmil + decmil + mil) > 0 Then sotmil_txt = Nums3(sotmil) Select Case decmil Case 1 mil_txt = Nums5(mil) & “миллионов ” GoTo www Case 2 To 9 decmil_txt = Nums2(decmil) End Select Select Case mil Case 1 mil_txt = Nums1(mil) & “миллион ” Case 2, 3, 4 mil_txt = Nums1(mil) & “миллиона ” Case 0, 5 To 20 mil_txt = Nums1(mil) & “миллионов ” End Select End Ifwww: sottys_txt = Nums3(sottys) Select Case dectys Case 1 tys_txt = Nums5(tys) & “тысяч ” GoTo eee Case 2 To 9 dectys_txt = Nums2(dectys) End Select Select Case tys Case 0 If dectys > 0 Then tys_txt = Nums4(tys) & “тысяч ” Case 1 tys_txt = Nums4(tys) & “тысяча ” Case 2, 3, 4 tys_txt = Nums4(tys) & “тысячи ” Case 5 To 9 tys_txt = Nums4(tys) & “тысяч ” End Select If dectys = 0 And tys = 0 And sottys 0 Then sottys_txt = sottys_txt & ” тысяч “eee: sot_txt = Nums3(sot) Select Case dec Case 1 ed_txt = Nums5(ed) GoTo rrr Case 2 To 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1(ed)rrr: ScriptRus = mlrd_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt ScriptRus = UCase(Left(ScriptRus, 1)) & LCase(Mid(ScriptRus, 2, Len(ScriptRus) – 1)) End Function Private Function ScriptEng(ByVal Number As Double) Dim BigDenom As String, Temp As String Dim Count As Integer ReDim Place(9) As String Place(2) = ” Thousand ” Place(3) = ” Million ” Place(4) = ” Billion ” Place(5) = ” Trillion ” strAmount = Trim(Str(Int(Number))) Count = 1 Do While strAmount “” Temp = GetHundreds(Right(strAmount, 3)) If Temp “” Then BigDenom = Temp & Place(Count) & BigDenom If Len(strAmount) > 3 Then strAmount = Left(strAmount, Len(strAmount) – 3) Else strAmount = “” End If Count = Count + 1 Loop Select Case BigDenom Case “” BigDenom = “Zero ” Case “One” BigDenom = “One ” Case Else BigDenom = BigDenom & ” ” End Select ScriptEng = BigDenom End Function Private Function GetHundreds(ByVal MyNumber) Dim result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right(“000” & MyNumber, 3) If Mid(MyNumber, 1, 1) “0” Then result = GetDigit(Mid(MyNumber, 1, 1)) & ” Hundred ” End If If Mid(MyNumber, 1, 1) “0” And (Mid(MyNumber, 2, 1) “0” Or Mid(MyNumber, 3, 1) “0”) Then result = result & “And ” End If If Mid(MyNumber, 2, 1) “0” Then result = result & GetTens(Mid(MyNumber, 2)) Else result = result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = resultEnd FunctionPrivate Function GetTens(TensText) Dim result As String result = “” If Val(Left(TensText, 1)) = 1 Then Select Case Val(TensText) Case 10: result = “Ten” Case 11: result = “Eleven” Case 12: result = “Twelve” Case 13: result = “Thirteen” Case 14: result = “Fourteen” Case 15: result = “Fifteen” Case 16: result = “Sixteen” Case 17: result = “Seventeen” Case 18: result = “Eighteen” Case 19: result = “Nineteen” Case Else End Select Else Select Case Val(Left(TensText, 1)) Case 2: result = “Twenty ” Case 3: result = “Thirty ” Case 4: result = “Forty ” Case 5: result = “Fifty ” Case 6: result = “Sixty ” Case 7: result = “Seventy ” Case 8: result = “Eighty ” Case 9: result = “Ninety ” Case Else End Select result = result & GetDigit _ (Right(TensText, 1)) End If GetTens = resultEnd FunctionPrivate Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = “One” Case 2: GetDigit = “Two” Case 3: GetDigit = “Three” Case 4: GetDigit = “Four” Case 5: GetDigit = “Five” Case 6: GetDigit = “Six” Case 7: GetDigit = “Seven” Case 8: GetDigit = “Eight” Case 9: GetDigit = “Nine” Case Else: GetDigit = “” End SelectEnd Function

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

=Propis(B2;”RUB”;”RU”;1)

Числа прописью с копейками  заглавными или строчными буквами в Excel

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

Function РубПропись(Сумма As Double, Optional Без_копеек As Boolean = False, _ Optional КопПрописью As Boolean = False, Optional начинитьПрописной As Boolean = True) As String'Функция для написания суммы прописью Dim ed, des, sot, ten, razr, dec Dim i As Integer, str As String, s As String Dim intPart As String, frPart As String Dim mlnEnd, tscEnd, razrEnd, rub, cop dec = Array(“”, “одна “, “две “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) ed = Array(“”, “один “, “два “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) ten = Array(“десять “, “одиннадцать “, “двенадцать “, “тринадцать “, “четырнадцать “, “пятнадцать “, “шестнадцать “, “семнадцать “, “восемнадцать “, “девятнадцать “) des = Array(“”, “”, “двадцать “, “тридцать “, “сорок “, “пятьдесят “, “шестьдесят “, “семьдесят “, “восемьдесят “, “девяносто “) sot = Array(“”, “сто “, “двести “, “триста “, “четыреста “, “пятьсот “, “шестьсот “, “семьсот “, “восемьсот “, “девятьсот “) razr = Array(“”, “тысяч”, “миллион”, “миллиард”) mlnEnd = Array(“ов “, ” “, “а “, “а “, “а “, “ов “, “ов “, “ов “, “ов “, “ов “) tscEnd = Array(” “, “а “, “и “, “и “, “и “, ” “, ” “, ” “, ” “, ” “) razrEnd = Array(mlnEnd, mlnEnd, tscEnd, “”) rub = Array(“рублей”, “рубль”, “рубля”, “рубля”, “рубля”, “рублей”, “рублей”, “рублей”, “рублей”, “рублей”) cop = Array(“копеек”, “копейка”, “копейки”, “копейки”, “копейки”, “копеек”, “копеек”, “копеек”, “копеек”, “копеек”) If Сумма >= 1000000000000# Or Сумма < 0 Then РубПропись = CVErr(xlErrValue): Exit Function '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& If Round(Сумма, 2) >= 1 Then intPart = Left$(Format(Сумма, “000000000000.00”), 12) For i = 0 To 3 s = Mid$(intPart, i * 3 + 1, 3) If s “000” Then str = str & sot(CInt(Left$(s, 1))) If Mid$(s, 2, 1) = “1” Then str = str & ten(CInt(Right$(s, 1))) Else str = str & des(CInt(Mid$(s, 2, 1))) & IIf(i = 2, dec(CInt(Right$(s, 1))), ed(CInt(Right$(s, 1)))) End If On Error Resume Next str = str & IIf(Mid$(s, 2, 1) = “1”, razr(3 – i) & razrEnd(i)(0), _ razr(3 – i) & razrEnd(i)(CInt(Right$(s, 1)))) On Error GoTo 0 End If Next i str = str & IIf(Mid$(s, 2, 1) = “1”, rub(0), rub(CInt(Right$(s, 1)))) End If РубПропись = str '''''''''''''''''' If Без_копеек = False Then frPart = Right$(Format(Сумма, “0.00”), 2) If frPart = “00” Then frPart = “” Else If КопПрописью Then frPart = IIf(Left$(frPart, 1) = “1”, ten(CInt(Right$(frPart, 1))) & cop(0), _ des(CInt(Left$(frPart, 1))) & dec(CInt(Right$(frPart, 1))) & cop(CInt(Right$(frPart, 1)))) Else frPart = IIf(Left$(frPart, 1) = “1”, frPart & ” ” & cop(0), frPart & ” ” & cop(CInt(Right$(frPart, 1)))) End If End If РубПропись = str & ” ” & frPart End If ''''''''''''''''''' РубПропись = str & frPart If начинитьПрописной Then Mid$(РубПропись, 1, 1) = UCase(Mid$(РубПропись, 1, 1))' If начинитьПрописной Then РубПропись = UCase(Left(РубПропись, 1)) & Mid(РубПропись, 2)End Function

  • Без копеек (1), с копейками (0)
  • Копейки прописью (1), числом (0)
  • Начинать прописью (0), заглавной (1)

Вот как используется функция

Примечание

  • Данная функция будет работать с числами от 0 до 99 999 999
  • Перед копирование кода переключите раскладку клавиатуры на русский язык (для корректного копирования русского текста)
  • Код VBA необходимо вставлять во все файлы (Книги Excel), где вы хотите, чтобы она работала
  • После вставки код, необходимо сохранить файл с поддержкой макросов xlsm (в Excel, начиная с 2007 версии)
  • Функцию можно либо набирать в ручную, либо, если вы забыли как она пишется, через мастер функций (кнопка fx в строке формул, категория Определенные пользователем)

68 Комментариев

Источник: https://sirexcel.ru/makrosi_vba/kak-propisat-summu-chislo-cifry-propisyu-v-excel/

Как создается сумма прописью в Excel?

75 прописью на русском. Как прописать сумму, число, цифры прописью в Excel. Арабские и римские цифры

       Добрый день уважаемый читатель!

     Статья посвящена такому интересному вопросу: «Как создается сумма прописью в Excel?». Эта возможность позволяет нам всю массу информации и расчетов, которые сведены в один результат, оформить как финансовой документ, которые нельзя трактовать двузначно.

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

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

       Решить эту проблему можно несколькими способами:

  1. С помощью формул;
  2. С помощью пользовательской функции;
  3. С помощью VBA.

      Создание сумм прописью с помощью формул

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

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

Единственное преимущество от использования формулы, это когда вы разберетесь с ней, то самостоятельно сможете ее изменять: разрядность, валюту, склонение и т.п.

    Ради общего интереса я предоставлю вам пример файла с работающей формулой, которую я нашёл на excelworld.ru, поскольку самостоятельно формульным решением задачи я не занимался, но считаю нужным предоставить весь наработанный или собранный материал. Скачать пример можно по этой ссылке.

С помощью пользовательской функции

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

     Для этого вам необходимо выполнить некоторые действия. Сначала скачиваете файл надстройки здесь. После, переносите его в папку AddIns, которую можно найти по пути C:\Documents and Settings\User\Application Data\Microsoft\AddIns, только вы вместо «User» подставляете имя вашего пользователя Windows.

Еще может возникнуть проблема в отображении папки «Application Data», она может быть скрыта, тогда вам в настройках «Свойства папки» нужно активировать пункт «Показать скрытые файлы и папки».       Теперь собственно и приступим к включении этой надстройки.

В Excel выбираем «Файл» — «Параметры» — «Надстройки».       В диалоговом окне «Настройки» ставим галочку напротив включаемой надстройки «Сумма Прописью» и нажимаем «ОК».     Следующим шагом, ставим курсор на нужную ячейку и вызываем «Мастер функций».

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

Сразу замечу, что надстроек бывает много, есть и более расширенные, но эта меня полностью устраивает, вот я ее и описываю.       В результате мы получаем возможность получить следующие данные:

С помощью VBA

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

  • Комбинацией горячих клавиш ALT+F11 вызвать редактор Visual Basic;
  • С помощью меню «Insert» — «Module», создать пустой новый модуль;
  • Скопировать предоставленный код макроса в тело модуля.

      Получается готовая пользовательская функция VBA, которая умеет превращать любую сумму от 0 до 9 999 999 в ее текстовое воплощение, создается сумма прописью.

      Код нужного макроса выглядит так:

Function СУММАПРОПИСЬЮ(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array(“”, “один “, “два “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Nums2 = Array(“”, “десять “, “двадцать “, “тридцать “, “сорок “, “пятьдесят “, “шестьдесят “, “семьдесят “, _               “восемьдесят “, “девяносто “) Nums3 = Array(“”, “сто “, “двести “, “триста “, “четыреста “, “пятьсот “, “шестьсот “, “семьсот “, _           “восемьсот “, “девятьсот “) Nums4 = Array(“”, “одна “, “две “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “) Nums5 = Array(“десять “, “одиннадцать “, “двенадцать “, “тринадцать “, “четырнадцать “,              “пятнадцать “, “шестнадцать “, “семнадцать “, “восемнадцать “, “девятнадцать “) If n &lt;= 0 Then    СУММАПРОПИСЬЮ = “ноль” Exit Function End If  'разделяем число на разряды, используя вспомогательную функцию Class ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class(n, 4) dectys = Class(n, 5)   sottys = Class(n, 6) mil = Class(n, 7) decmil = Class(n, 8) 'проверяем миллионы Select Case decmil Case 1 mil_txt = Nums5(mil) & “миллионов ” GoTo www Case 2 To 9 decmil_txt = Nums2(decmil) End Select Select Case mil Case 1 mil_txt = Nums1(mil) & “миллион ” Case 2, 3, 4 mil_txt = Nums1(mil) & “миллиона ” Case 5 To 20 mil_txt = Nums1(mil) & “миллионов ” End Select www: sottys_txt = Nums3(sottys) 'проверяем тысячи Select Case dectys Case 1 tys_txt = Nums5(tys) & “тысяч ” GoTo eee Case 2 To 9 dectys_txt = Nums2(dectys) End Select Select Case tys Case 0 If dectys > 0 Then tys_txt = Nums4(tys) & “тысяч ” Case 1 tys_txt = Nums4(tys) & “тысяча ” Case 2, 3, 4 tys_txt = Nums4(tys) & “тысячи ” Case 5 To 9 tys_txt = Nums4(tys) & “тысяч ” End Select If dectys = 0 And tys = 0 And sottys 0 Then sottys_txt = sottys_txt & ” тысяч ” eee: sot_txt = Nums3(sot) 'проверяем десятки Select Case dec Case 1 ed_txt = Nums5(ed) GoTo rrr Case 2 To 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1(ed) rrr: 'формируем итоговую строку СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt End Function 'вспомогательная функция для выделения из числа разрядов Private Function Class(M, I) Class = Int(Int(M – (10 I) * Int(M / (10 I))) / 10 (I – 1)) End Function

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

Function СУММАПРОПИСЬЮ(n As Double) As String

   Dim Nums1, Nums2, Nums3, Nums4 As Variant

      Nums1 = Array(“”, “один “, “два “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “)

      Nums2 = Array(“”, “десять “, “двадцать “, “тридцать “, “сорок “, “пятьдесят “, “шестьдесят “, “семьдесят “, _

              “восемьдесят “, “девяносто “)

      Nums3 = Array(“”, “сто “, “двести “, “триста “, “четыреста “, “пятьсот “, “шестьсот “, “семьсот “, _

             “восемьсот “, “девятьсот “)

      Nums4 = Array(“”, “одна “, “две “, “три “, “четыре “, “пять “, “шесть “, “семь “, “восемь “, “девять “)

      Nums5 = Array(“десять “, “одиннадцать “, “двенадцать “, “тринадцать “, “четырнадцать “,

             “пятнадцать “, “шестнадцать “, “семнадцать “, “восемнадцать “, “девятнадцать “)

    If n &lt;= 0 Then

        СУММАПРОПИСЬЮ = “ноль”

Exit Function

End If

 'разделяем число на разряды, используя вспомогательную функцию Class

   ed = Class(n, 1)

   dec = Class(n, 2)

   sot = Class(n, 3)

   tys = Class(n, 4)

   dectys = Class(n, 5)

   sottys = Class(n, 6)

   mil = Class(n, 7)

   decmil = Class(n, 8)

'проверяем миллионы

Select Case decmil

   Case 1

     mil_txt = Nums5(mil) & “миллионов “

     GoTo www

   Case 2 To 9

     decmil_txt = Nums2(decmil)

End Select

Select Case mil

   Case 1

     mil_txt = Nums1(mil) & “миллион “

   Case 2, 3, 4

     mil_txt = Nums1(mil) & “миллиона “

   Case 5 To 20

     mil_txt = Nums1(mil) & “миллионов “

End Select

www:

sottys_txt = Nums3(sottys)

'проверяем тысячи

Select Case dectys

   Case 1

     tys_txt = Nums5(tys) & “тысяч “

     GoTo eee

   Case 2 To 9

     dectys_txt = Nums2(dectys)

End Select

Select Case tys

   Case 0

     If dectys > 0 Then tys_txt = Nums4(tys) & “тысяч “

   Case 1

     tys_txt = Nums4(tys) & “тысяча “

   Case 2, 3, 4

     tys_txt = Nums4(tys) & “тысячи “

   Case 5 To 9

     tys_txt = Nums4(tys) & “тысяч “

End Select

If dectys = 0 And tys = 0 And sottys 0 Then sottys_txt = sottys_txt & ” тысяч “

eee:

sot_txt = Nums3(sot)

'проверяем десятки

Select Case dec

   Case 1

     ed_txt = Nums5(ed)

     GoTo rrr

   Case 2 To 9

     dec_txt = Nums2(dec)

End Select

ed_txt = Nums1(ed)

rrr:

'формируем итоговую строку

СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt

End Function

'вспомогательная функция для выделения из числа разрядов

Private Function Class(M, I)

  Class = Int(Int(M – (10 I) * Int(M / (10 I))) / 10 (I – 1))

End Function

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

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

      =СУММАПРОПИСЬЮ(A3)&” руб. «&ТЕКСТ((A3-ЦЕЛОЕ(A3))*100;»00″)&” коп.”

    Приставку «Module2» в моей формуле можете опустить, так как таким образом, программа разделяет 2 похожие формулы, одна от установленных надстроек, а вторая от макроса.

     А на этом у меня всё! Я очень надеюсь, что всё о том, как ваши цифры сделать прописными вам понятно. Буду очень благодарен за оставленные комментарии, так как это показатель читаемости и вдохновляет на написание новых статей! Делитесь с друзьями прочитанным и ставьте лайк!

     Не забудьте поблагодарить автора!

Что такое ограбление банка по сравнению с основанием банка?
Бертольт Брехт​

Статья помогла? Поделись ссылкой с друзьями, твитни или лайкни!

Источник: http://topexcel.ru/kak-sozdaetsya-summa-propisyu-v-excel/

Юрист ответит
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: