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:
- Presione ALT+F11 para abrir el editor Visual Basic
- Agregar un nuevo módulo vacío a través del menú Insert - Module
- Copia y pega el texto de esta función allí:
- Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
-
- 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
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
' dividimos el número en dígitos usando la función auxiliar Clase
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)
' comprobando miles de millones
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
' comprobando millones
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)
' comprobamos miles
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)
' revisamos docenas
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:
' formar la línea final
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
' Función auxiliar para selección entre el número de dígitos.
Private Function Class(M, I)
Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
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: