ВВЕРХ

Сумма, цифры, число прописью на украинском языке в Excel

Описание

Очень часто бывает что нам необходимо отразить цифры прописью на украинском языке в Экселе . Например, отобразить прописью количество страниц в документе - цифру "27" как "Двадцять сім".

Также для целей бухгалтерского учета стоимость торговой операции нужно прописывать словами. Например, сумму 10 568,23 отобразить прописью как "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп.", то есть необходима сумма прописью на украинском языке Однако в Excel нет стандартной функции для таких целей.


VBA код для функции SUMINWORDS

Ниже вы найдете готовую функцию на 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
 'разделяем число на разряды, используя вспомогательную функцию. 
 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(текст; валюта; сотые)

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

Статьи по теме: