Как создается сумма прописью в 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 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<=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^(I1))

EndFunction

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

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

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

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

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

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

Оцените статью
Добавить комментарий

  1. Виктория

    Спасибо вам большое! Воспользовалась первым вариантом, скопировала формулу и вуаля!! Все работает!!!

    Ответить
    1. Нагаев Артём

      Очень рад был помочь! Постарался по максимуму описать в статье процесс, что бы было удобно и легко )))

      Ответить
  2. Лука

    Спасибо, но у вас цифра одиннадцать с одной Н пишется

    Ответить
    1. Нагаев Артём

      Спасибо )

      Ответить
  3. Карл

    в строке 11 ошибка, надо изменить на  If n = 0 Then

    Ответить
    1. Нагаев Артём

      ок

      Ответить
  4. Ксения

    Спасибо огромное! очень облегчает ежедневную рутину.

    Ответить
    1. Нагаев Артём

      Очень рад помочь! ))

      Ответить
  5. Олеся

    одинадцать кофэ автору!

    Ответить
    1. Нагаев Артём

      спасибо… люблю кофе )))

      Ответить