Pasar de numero a letras en excel
Hola amigos tengo la siguiente macro que convierte de numero a letras pero tengo un inconveniente y es que no me escribe los "centavos" y me los muestra de la siguiente manera:
255.12 = "doscientos cincuenta y cinco con 12/100"
la forma que necesito que lo muestre es asi:
255.12 = "doscientos cincuenta y cinco con doce centavos"
Ademas necesito que antes del 1000 me coloque la palabra "un" . Por ejemplo
1100 = "un mil cien"
El codigo del que les hablo es el siguiente:
Function Letras(x)
Nu = Array("cero", "uno", "dos", "tres", "cuatro", "cinco", _
"seis", "siete", "ocho", "nueve", "diez", "once", "doce", _
"trece", "catorce", "quince", "dieciseis", "diecisiete", _
"dieciocho", "diecinueve", "veinte", "veintiuno", "veintidos", _
"veintitres", "veinticuatro", "veinticinco", "veintiseis", _
"veintisiete", "veintiocho", "veintinueve")
Nd = Array("", "", "", "treinta", "cuarenta", "cincuenta", _
"sesenta", "setenta", "ochenta", "noventa")
Nc = Array("", "ciento", "doscientos", "trescientos", "cuatrocientos", _
"quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos")
u = x Mod 10
d = Int(x / 10) Mod 10
c = Int(x / 100)
If d > 2 Then
Letras = Nd(d) + " y " + Nu(u)
Else
u = d * 10 + u
Letras = Nu(u)
End If
If u = 0 Then Letras = Nd(d)
If c > 0 Then Letras = Nc(c) + " " + Letras
If x = 100 Then Letras = "cien"
End Function
Function Enletras(x)
centavos = Int(x * 100) Mod 100
x = Int(x)
grupo1 = x Mod 1000
grupo2 = Int(x / 1000) Mod 1000
grupo3 = Int(x / 1000000)
n = Letras(grupo3)
If Right(n, 3) = "uno" Then
Enletras = Left(n, Len(n) - 1) + " millones "
Else
If grupo3 > 0 Then Enletras = n + " millones "
End If
If grupo3 = 1 Then Enletras = "un millón "
n = Letras(grupo2)
If Right(n, 3) = "uno" Then
Enletras = Enletras + Left(n, Len(n) - 1) + " mil "
Else
If grupo2 > 0 Then Enletras = Enletras + n + " mil "
End If
If grupo1 > 0 Then Enletras = Enletras + Letras(grupo1)
If centavos > 0 Then Enletras = Enletras + " con " + Str(centavos) + "/00"
End Function
Ojala me puedan dar una mano.
Saludos!
255.12 = "doscientos cincuenta y cinco con 12/100"
la forma que necesito que lo muestre es asi:
255.12 = "doscientos cincuenta y cinco con doce centavos"
Ademas necesito que antes del 1000 me coloque la palabra "un" . Por ejemplo
1100 = "un mil cien"
El codigo del que les hablo es el siguiente:
Function Letras(x)
Nu = Array("cero", "uno", "dos", "tres", "cuatro", "cinco", _
"seis", "siete", "ocho", "nueve", "diez", "once", "doce", _
"trece", "catorce", "quince", "dieciseis", "diecisiete", _
"dieciocho", "diecinueve", "veinte", "veintiuno", "veintidos", _
"veintitres", "veinticuatro", "veinticinco", "veintiseis", _
"veintisiete", "veintiocho", "veintinueve")
Nd = Array("", "", "", "treinta", "cuarenta", "cincuenta", _
"sesenta", "setenta", "ochenta", "noventa")
Nc = Array("", "ciento", "doscientos", "trescientos", "cuatrocientos", _
"quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos")
u = x Mod 10
d = Int(x / 10) Mod 10
c = Int(x / 100)
If d > 2 Then
Letras = Nd(d) + " y " + Nu(u)
Else
u = d * 10 + u
Letras = Nu(u)
End If
If u = 0 Then Letras = Nd(d)
If c > 0 Then Letras = Nc(c) + " " + Letras
If x = 100 Then Letras = "cien"
End Function
Function Enletras(x)
centavos = Int(x * 100) Mod 100
x = Int(x)
grupo1 = x Mod 1000
grupo2 = Int(x / 1000) Mod 1000
grupo3 = Int(x / 1000000)
n = Letras(grupo3)
If Right(n, 3) = "uno" Then
Enletras = Left(n, Len(n) - 1) + " millones "
Else
If grupo3 > 0 Then Enletras = n + " millones "
End If
If grupo3 = 1 Then Enletras = "un millón "
n = Letras(grupo2)
If Right(n, 3) = "uno" Then
Enletras = Enletras + Left(n, Len(n) - 1) + " mil "
Else
If grupo2 > 0 Then Enletras = Enletras + n + " mil "
End If
If grupo1 > 0 Then Enletras = Enletras + Letras(grupo1)
If centavos > 0 Then Enletras = Enletras + " con " + Str(centavos) + "/00"
End Function
Ojala me puedan dar una mano.
Saludos!
1 Respuesta
Respuesta de Elsa Matilde
1