Наши сайты:
USD26.851
Мы на facebook

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

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

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

Для этого:

  1. Нажмите клавиши ALT + F11 , чтобы открыть редактор Visual Basic
  2. Добавьте новый пустой модуль через меню Insert - Module
  3. Скопируйте і вставьте туда текст этой функции:

Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
 'moonexcel.com.ua 
 Dim Nums1, Nums2, Nums3, Nums4 As Variant
 
 Nums0 = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums1 = Array("", "один ", "два ", "три ", "чотири ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums2 = Array("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", _
                        "восемьдесят ", "девяносто ")
 Nums3 = Array("", "сто ", "двести ", "триста ", "четириста ", "пятьсот ", "шестьсот ", "сімьсот ", _
                        "восемьсот ", "девятьсот ")
 Nums4 = Array("", "одна ", "две ", "три ", "четири ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums5 = Array("десять ", "одинадцать ", "дванадцать ", "тринадцать ", "чотирнадцать ", _
                        "паятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
  
 If n < 1 Then
   SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
   
If curr = "" Then
   SUMINWORDS = "Нуль"
End If
      
   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)
 sotmil = Class(n, 9)
 bil = Class(n, 10)
   
'проверяем Милиарды
 
 Select Case bil
 
Case 1
     bil_txt = Nums1(bil) & "милиард "
Case 2 To 4
     bil_txt = Nums1(bil) & "милиарды "
Case 5 To 9
     bil_txt = Nums1(bil) & "милиардов "
          
 End Select
   
'проверяем миллионы
 
 Select Case sotmil
   Case 1 To 9
     sotmil_txt = Nums3(sotmil)
 End Select
  
 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 0
     If decmil > 0 Then mil_txt = Nums4(mil) & "миллионов "
   Case 1
     mil_txt = Nums1(mil) & "миллион "
   Case 2, 3, 4
     mil_txt = Nums1(mil) & "миллиона "
   Case 5 To 9
     mil_txt = Nums1(mil) & "миллионов "
 End Select
 
 If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "миллионов "
 
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) & "тысячa "
   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 = Nums0(ed)

rrr:
'Формируем итоговую строку
 
 SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
 & tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop

If curr = "" Then
   SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
 & tys_txt & sot_txt & dec_txt & ed_txt
 End If
 
 SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
 
End Function
  
'вспомогательная функция для выделения в числе разрадов
Private Function Class(M, I)
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function

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

=SUMINWORDS(текст;валюта;сотые)

Если в переметре "валюта" проставить пустые двойные кавычки (""), тогда сумма будет выводиться как целое число прописью:

 

ОЗНАКОМИТЬСЯ С ИЗДАНИЕМ
Контекстная реклама
Курсы валют
Настройки
Оформление
Светлая тема
(стандартный)
Серая тема
Темная тема
Параметры экрана
Фиксированная ширина
(стандартный)
Во весь экран