TOP

Suma, liczby, liczba zapisana w języku ukraińskim w Excel

Opis

Bardzo często zdarza się, że musimy się wystawić liczby zapisane w języku ukraińskim w programie Excel . Na przykład wyświetl liczbę stron w dokumencie na piśmie - liczbę „27” jako "Двадцять сім".

Ponadto dla celów księgowych koszt transakcji handlowej należy zapisać słownie. Na przykład sumę 10 568,23 należy wyświetlić pisemnie jako "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп.", czyli konieczne suma po ukraińsku , ale Excel nie ma standardowej funkcji do takich celów.


VBA kod funkcji SUMINWORDS

Poniżej znajdziesz gotową funkcję na VBA, która tłumaczy dowolną liczbę na jej reprezentację tekstową w języku ukraińskim, czyli liczbę zapisaną. Tę funkcję należy dodać do książki przed użyciem.

Dla tego:

  1. Naciśnij ALT+F11, aby otworzyć edytor Visual Basic
  2. Dodaj nowy pusty moduł poprzez menu Insert - Module
  3. Skopiuj i wklej tam tekst tej funkcji:
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
 'liczbę dzielimy na cyfry za pomocą funkcji pomocniczej Klasa 
 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)
   
 'sprawdzanie miliardów 
 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
   
 'sprawdzanie milionów 
 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)
 
 'sprawdzamy tysiące 
 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)
 
 'sprawdzamy dziesiątki 
 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:
 'tworzą ostatnią linię 
 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
  
 'funkcja pomocnicza do wyboru z liczby cyfr 
Private Function Class(M, I)
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function

Zapisz plik i wróć do Excel.

Korzystanie z funkcji

Teraz możesz wstawić utworzoną funkcję do dowolnej komórki arkusza tej książki w zwykły sposób - poprzez kreator funkcji (przycisk na pasku formuły, kategoria Zdefiniowane przez użytkownika) lub po prostu wpisując ją ręcznie w komórce i określając komórkę z sumą jako argumentem. Ponadto w parametrach funkcji możesz podać nazwę waluty (hrywna, dolar, euro...) i nazwę setnych (grosze, centy...):

=SUMINWORDS(tekst; waluta; setki)

Jeśli w parametrze "waluta" wstaw puste cudzysłowy („”), wówczas suma zostanie wypisana jako liczba całkowita:

Artykuły na ten temat: