TOP

Suma, números, números escritos en ucraniano.

Descripción

Muy a menudo sucede que necesitamos mostrar números escritos en ucraniano en Excel . Por ejemplo, mostrar el número de páginas de un documento por escrito: un número "27" como "Двадцять сім" .

Además, a efectos contables, el coste de una transacción comercial debe expresarse en palabras. Por ejemplo, la cantidad 10 568,23 mostrar por escrito cómo "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп." , es decir, necesario suma en idioma ucraniano , pero Excel no tiene una función estándar para tales fines.


VBA código para la función SUMINWORDS

A continuación encontrará una función lista para usar en VBA, que traduce cualquier número a su representación de texto en ucraniano, es decir, en número por escrito . Esta característica debe agregarse a su libro antes de usarlo.

Para esto:

  1. Presione ALT+F11 para abrir el editor Visual Basic
  2. Agregar un nuevo módulo vacío a través del menú Insert - Module
  3. Copia y pega el texto de esta función allí:
  1. Function SUMINWORDS(n As Double, curr As Variant, kop As VariantAs String  
  2.  ' moonexcel.com.ua   
  3.  Dim Nums1, Nums2, Nums3, Nums4 As Variant  
  4.    
  5.  Nums0 = Array("""одна ""дві ""три ""чотири ""п'ять ""шість ""сім ""вісім ""дев'ять ")  
  6.  Nums1 = Array("""один ""два ""три ""чотири ""п'ять ""шість ""сім ""вісім ""дев'ять ")  
  7.  Nums2 = Array("""десять ""двадцять ""тридцять ""сорок ""п'ятдесят ""шістдесят ""сімдесят ", _  
  8.                         "вісімдесят ""дев'яносто ")  
  9.  Nums3 = Array("""сто ""двісті ""триста ""чотириста ""п'ятсот ""шістсот ""сімсот ", _  
  10.                         "вісімсот ""дев'ятсот ")  
  11.  Nums4 = Array("""одна ""дві ""три ""чотири ""п'ять ""шість ""сім ""вісім ""дев'ять ")  
  12.  Nums5 = Array("десять ""одинадцять ""дванадцять ""тринадцять ""чотирнадцять ", _  
  13.                         "п'ятнадцять ""шістнадцять ""сімнадцять ""вісімнадцять ""дев'ятнадцять ")  
  14.     
  15.  If n < 1 Then  
  16.    SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop  
  17.      
  18. If curr = "" Then  
  19.    SUMINWORDS = "Нуль"  
  20. End If  
  21.         
  22.    Exit Function  
  23.  End If  
  24.  ' dividimos el número en dígitos usando la función auxiliar Clase   
  25.  ed     = Class(n, 1)  
  26.  dec    = Class(n, 2)  
  27.  sot    = Class(n, 3)  
  28.  tys    = Class(n, 4)  
  29.  dectys = Class(n, 5)  
  30.  sottys = Class(n, 6)  
  31.  mil    = Class(n, 7)  
  32.  decmil = Class(n, 8)  
  33.  sotmil = Class(n, 9)  
  34.  bil    = Class(n, 10)  
  35.      
  36.  ' comprobando miles de millones   
  37.  Select Case bil  
  38.     Case 1  
  39.       bil_txt = Nums1(bil) & "мільярд "  
  40.     Case 2 To 4  
  41.       bil_txt = Nums1(bil) & "мільярди "  
  42.     Case 5 To 9  
  43.       bil_txt = Nums1(bil) & "мільярдів "  
  44.  End Select  
  45.      
  46.  ' comprobando millones   
  47.  Select Case sotmil  
  48.    Case 1 To 9  
  49.      sotmil_txt = Nums3(sotmil)  
  50.  End Select  
  51.     
  52.  Select Case decmil  
  53.    Case 1  
  54.      mil_txt = Nums5(mil) & "мільйонів "  
  55.      GoTo www  
  56.    Case 2 To 9  
  57.      decmil_txt = Nums2(decmil)  
  58.  End Select  
  59.    
  60.  Select Case mil  
  61.    Case 0  
  62.      If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "  
  63.    Case 1  
  64.      mil_txt = Nums1(mil) & "мільйон "  
  65.    Case 2, 3, 4  
  66.      mil_txt = Nums1(mil) & "мільйона "  
  67.    Case 5 To 9  
  68.      mil_txt = Nums1(mil) & "мільйонів "  
  69.  End Select  
  70.    
  71.  If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "  
  72.    
  73. www:  
  74.  sottys_txt = Nums3(sottys)  
  75.    
  76.  ' comprobamos miles   
  77.  Select Case dectys  
  78.    Case 1  
  79.      tys_txt = Nums5(tys) & "тисяч "  
  80.      GoTo eee  
  81.    Case 2 To 9  
  82.      dectys_txt = Nums2(dectys)  
  83.  End Select  
  84.    
  85.  Select Case tys  
  86.    Case 0  
  87.      If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "  
  88.    Case 1  
  89.      tys_txt = Nums4(tys) & "тисячa "  
  90.    Case 2, 3, 4  
  91.      tys_txt = Nums4(tys) & "тисячі "  
  92.    Case 5 To 9  
  93.      tys_txt = Nums4(tys) & "тисяч "  
  94.  End Select  
  95.    
  96.  If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "  
  97.    
  98. eee:  
  99.  sot_txt = Nums3(sot)  
  100.    
  101.  ' revisamos docenas   
  102.  Select Case dec  
  103.    Case 1  
  104.      ed_txt = Nums5(ed)  
  105.      GoTo rrr  
  106.    Case 2 To 9  
  107.      dec_txt = Nums2(dec)  
  108.  End Select  
  109.     
  110.  ed_txt = Nums0(ed)  
  111.   
  112. rrr:  
  113.  ' formar la línea final   
  114.  SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _  
  115.  & tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop  
  116.   
  117.  If curr = "" Then  
  118.    SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _  
  119.  & tys_txt & sot_txt & dec_txt & ed_txt  
  120.  End If  
  121.    
  122.  SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)  
  123.    
  124. End Function  
  125.     
  126.  ' Función auxiliar para selección entre el número de dígitos.   
  127. Private Function Class(M, I)  
  128.   Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))  
  129. End Function  

Guarde el archivo y regrese a Excel.

Usando la función

Ahora puede insertar la función creada en cualquier celda de la hoja de este libro de la forma habitual: a través del asistente de funciones (botón en la barra de fórmulas, categoría Usuario definido (User defined) o simplemente escribiéndolo en la celda manualmente y especificando la celda con la suma como argumento. Además, en los parámetros de la función, puede especificar el nombre de la moneda (hryvnia, dólar, euro, etc.) y el nombre de las centésimas (centavos, céntimos, etc.):

=SUMINWORDS(texto; moneda; centenas)

Si en el parámetro "divisa" inserte comillas dobles vacías ( "" ), entonces el importe se mostrará como un todo número por escrito :

Artículos sobre el tema: