Добрый день уважаемый читатель!
Статья посвящена такому интересному вопросу: «Как создается сумма прописью в Excel?». Эта возможность позволяет нам всю массу информации и расчетов, которые сведены в один результат, оформить как финансовой документ, которые нельзя трактовать двузначно. Недаром же любые банковские, юридические и финансовые документы оформляются и цифрами и буквами. Окромя всего, такие суммы не позволяют ошибаться, где же должна стоять запятая и просто отлично выглядят в сравнении с рядом цифр. Подведя итог, скажу, что любой пользователь Excel, который работает с цифрами и временем, а также печатает документы с их использованием, очень нуждается в инструменте создающим сумму прописью.
Решить эту проблему можно несколькими способами:
Создание сумм прописью с помощью формул
Это вполне осуществимый вариант, но очень громоздкий. Формула, которая может самостоятельно преобразовывать числа в буковки и правильно орфографически написать сумму прописью получится очень большой. В случае, когда вы захотите упростить формулу, вам нужно будет отдельный блок формул, который буде и заниматься всеми преобразованиями. Единственное преимущество от использования формулы, это когда вы разберетесь с ней, то самостоятельно сможете ее изменять: разрядность, валюту, склонение и т.п.
Ради общего интереса я предоставлю вам пример файла с работающей формулой, которую я нашёл на 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 999999 в ее текстовое воплощение, создается сумма прописью.
Код нужного макроса выглядит так:
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СУММАПРОПИСЬЮ(nAsDouble)AsString Dim Nums1,Nums2,Nums3,Nums4 AsVariant Nums1=Array(«»,«один «,«два «,«три «,«четыре «,«пять «,«шесть «,«семь «,«восемь «,«девять «) Nums2=Array(«»,«десять «,«двадцать «,«тридцать «,«сорок «,«пятьдесят «,«шестьдесят «,«семьдесят «,_ «восемьдесят «,«девяносто «) Nums3=Array(«»,«сто «,«двести «,«триста «,«четыреста «,«пятьсот «,«шестьсот «,«семьсот «,_ «восемьсот «,«девятьсот «) Nums4=Array(«»,«одна «,«две «,«три «,«четыре «,«пять «,«шесть «,«семь «,«восемь «,«девять «) Nums5=Array(«десять «,«одиннадцать «,«двенадцать «,«тринадцать «,«четырнадцать «, «пятнадцать «,«шестнадцать «,«семнадцать «,«восемнадцать «,«девятнадцать «) Ifn&lt;=0Then СУММАПРОПИСЬЮ=«ноль» Exit Function EndIf ‘разделяем число на разряды, используя вспомогательную функцию 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 Casedecmil Case1 mil_txt=Nums5(mil)&«миллионов « GoTowww Case2To9 decmil_txt=Nums2(decmil) EndSelect Select Casemil Case1 mil_txt=Nums1(mil)&«миллион « Case2,3,4 mil_txt=Nums1(mil)&«миллиона « Case5To20 mil_txt=Nums1(mil)&«миллионов « EndSelect 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 Casedec Case1 ed_txt=Nums5(ed) GoTorrr Case2To9 dec_txt=Nums2(dec) EndSelect ed_txt=Nums1(ed) rrr: ‘формируем итоговую строку СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt End Function ‘вспомогательнаяфункциядлявыделенияизчисларазрядов PrivateFunctionClass(M,I) Class=Int(Int(M—(10^I)*Int(M/(10^I)))/10^(I—1)) EndFunction |
Сохраняете внесенные изменения и теперь можно пользоваться новой функцией, как и прочими, она отображается в «Мастере функций» в категории «Определенные пользователем» или же просто вручную ввести ее в ячейке указав какую сумму необходимо сделать прописной.
Но как видите, макрос пишет прописью суммы, только целые числа, а вот для получения еще и копеек, эту конструкцию нужно доработать использованием следующей функции:
=СУММАПРОПИСЬЮ(A3)&» руб. «&ТЕКСТ((A3-ЦЕЛОЕ(A3))*100;»00″)&» коп.»
Приставку «Module2» в моей формуле можете опустить, так как таким образом, программа разделяет 2 похожие формулы, одна от установленных надстроек, а вторая от макроса.
А на этом у меня всё! Я очень надеюсь, что всё о том, как ваши цифры сделать прописными вам понятно. Буду очень благодарен за оставленные комментарии, так как это показатель читаемости и вдохновляет на написание новых статей! Делитесь с друзьями прочитанным и ставьте лайк!
Не забудьте поблагодарить автора!
Спасибо вам большое! Воспользовалась первым вариантом, скопировала формулу и вуаля!! Все работает!!!
Очень рад был помочь! Постарался по максимуму описать в статье процесс, что бы было удобно и легко )))
Спасибо, но у вас цифра одиннадцать с одной Н пишется
Спасибо )
в строке 11 ошибка, надо изменить на If n = 0 Then
ок
Спасибо огромное! очень облегчает ежедневную рутину.
Очень рад помочь! ))
одинадцать кофэ автору!
спасибо… люблю кофе )))