
Conversor de números a letras
Excel
Publicado el 15 de Marzo del 2006 por Jorge Eduardo Gallegos Torres (3 códigos)
114.066 visualizaciones desde el 15 de Marzo del 2006
Ejemplo de una macro en Excel para la conversión de números a letras.
Esta página se mantiene gracias a la publicidad
Te agradecemos que desactives el bloqueador de publicidad y refresques la página.
Si alguno de los archivos de descarga no funciona, comentanos aquí el error.
Comentarios sobre la versión: Versión 1 (76)
MUCHAS GRACIAS
Andres
Suerte!!!
E. Gallegos
Excel, menu herramientas, Macros, editor de Visual Basic.
En el modulo en la funcion llamada letra por el final de la funcion modifique el nombre de la moneda de su pais ejemplo LEMPIRAS moneda de Honduras:
If Millones & Miles & Cientos & Decimales = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " LEMPIRAS CON" & Trim(Decimales) & "/100 CENTAVOS"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " LEMPIRAS CON" & Trim(Decimales) & "/100 CENTAVOS"
End If
saludos,
Norberto.
El problema es que no traduce las cantidades "redondeadas" por Excel. Ejemplo
Si el total de la factura es 15.255,64. eso se redondea a 15.256. la función proporcionada no acepta el redondeo hacia una unidad mas.
Saludos
Un abrazo y gracias.-
si es copia me da lo mismo total lo vi aca
xauuu
Hay que modificar lo siguiente:
(como no se puede subrallar, lo pongo asi)
ANTES
If Millones & Miles & Cientos & Decimales = \\\"000000\\\" Then
Cadena = Cadena & \\\" \\\" & Trim(CadCientos) & \\\" LEMPIRAS CON\\\" & Trim(Decimales) & \\\"/100 CENTAVOS\\\"
Else
Cadena = Cadena & \\\" \\\" & Trim(CadCientos) & \\\" LEMPIRAS CON\\\" & Trim(Decimales) & \\\"/100 CENTAVOS\\\"
End If
DESPUES
If Millones & Miles & Cientos & Decimales = \\\"000000\\\" Then
Cadena = Cadena & \\\" \\\" & Trim(CadCientos) & \\\" LEMPIRAS CON\\\" & Trim(cadDecimales) & \\\"/100 CENTAVOS\\\"
Else
Cadena = Cadena & \\\" \\\" & Trim(CadCientos) & \\\" LEMPIRAS CON\\\" & Trim(cadDecimales) & \\\"/100 CENTAVOS\\\"
End If
Muchas gracias
If Decimales = "00" Then
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UNO "
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Trim(Decimales) & "/100 M.N."
Else
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Trim(Decimales) & "/100 M.N."
End If
letra = Trim(Cadena)
End If
Else
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UNO " & "CON " & Trim(caddecimales)
Else
If Millones & Miles & Cientos & Decimales = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Trim(Decimales) & "/100 M.N."
Else
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Trim(Decimales) & "/100 M.N."
End If
EXCELENTE!!!
Gracias
si te sirve para corregir.....
He probado con versiones anteriores de office pero al parecer no funciona con Officce 2000 Profesional la formula, agradeceria cualquier información.
Nuevamente Gracias.
Saludos
Osky
SOLO QUE NO SE COMO CAMBIAR EL CODIGO PARA QUE EN CASO DE QUE LA CANTIDAD NO TENGA DECIMALES DE TODAS FORMAS LE PONGA PESOS 00/100 M. N., COMO LE HAGO?
FELICIDADES¡¡¡¡¡¡¡¡¡¡¡¡¡
muy bueno este aporte
Muy buen archivo felicidades
si el nº es mayor a mil millones no da error y da el valor en letras hasta las 9 cifras enteras solamente
cuando el numero es decimal debería aparecer la cantidad decimal en letras
si el nº es decimal o sea por ej. 0.25 no muestra bien 25 centavos
Saludos
http://tip.dis.ulpgc.es/numeros
15.02 QUINCE COMA CERO DOS
Function CONVNUM(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Dim caddecimales
Texto = Round(Numero, 2)
Texto = FormatNumber(Texto, 2)
Texto = Right(Space(14) & Texto, 14)
Millones = Mid(Texto, 1, 3)
Miles = Mid(Texto, 5, 3)
Cientos = Mid(Texto, 9, 3)
Decimales = Mid(Texto, 13, 2)
CadMillones = CONVC(Millones, False)
CadMiles = CONVC(Miles, False)
CadCientos = CONVC(Cientos, True)
caddecimales = CONVD(Decimales)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
CadMillones = ""
Cadena = Cadena & "UN " & CadMillones & "MILLON"
Else
Cadena = CadMillones & " MILLONES"
End If
End If
If Trim(CadMiles) > "" Then
If Trim(CadMiles) = "UN" Then
CadMiles = ""
Cadena = Cadena & "" & CadMiles & "MIL"
CadMiles = "UN"
Else
Cadena = Cadena & " " & CadMiles & " MIL"
End If
End If
If Trim(CadMiles) > "001" Then
CadMiles = "MIL"
End If
If Decimales = "00" Then
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UNO "
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " Bs. CON " & Trim(Decimales) & "/100"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " Bs. CON " & Trim(Decimales) & "/100"
End If
CONVNUM = Trim(Cadena)
End If
Else
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UNO " & "CON " & Trim(caddecimales)
Else
If Millones & Miles & Cientos & Decimales = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " Bs CON " & Trim(Decimales) & "/100"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " Bs CON " & Trim(Decimales) & "/100"
End If
CONVNUM = Trim(Cadena)
End If
End If
End Function
Function CONVC(Texto, IsCientos As Boolean)
Dim Centena
Dim Decena
Dim Unidad
Dim txtCentena
Dim txtDecena
Dim txtUnidad
Centena = Mid(Texto, 1, 1)
Decena = Mid(Texto, 2, 1)
Unidad = Mid(Texto, 3, 1)
Select Case Centena
Case "1"
txtCentena = "CIEN"
If Decena & Unidad <> "00" Then
txtCentena = "CIENTO"
End If
Case "2"
txtCentena = "DOSCIENTOS"
Case "3"
txtCentena = "TRESCIENTOS"
Case "4"
txtCentena = "CUATROCIENTOS"
Case "5"
txtCentena = "QUINIENTOS"
Case "6"
txtCentena = "SEISCIENTOS"
Case "7"
txtCentena = "SETECIENTOS"
Case "8"
txtCentena = "OCHOCIENTOS"
Case "9"
txtCentena = "NOVECIENTOS"
End Select
Select Case Decena
Case "1"
txtDecena = "DIEZ"
Select Case Unidad
Case "1"
txtDecena = "ONCE"
Case "2"
txtDecena = "DOCE"
Case "3"
txtDecena = "TRECE"
Case "4"
txtDecena = "CATORCE"
Case "5"
txtDecena = "QUINCE"
Case "6"
txtDecena = "DIECISEIS"
Case "7"
txtDecena = "DIECISIETE"
Case "8"
txtDecena = "DIECIOCHO"
Case "9"
txtDecena = "DIECINUEVE"
End Select
Case "2"
txtDecena = "VEINTE"
If Unidad <> "0" Then
txtDecena = "VEINTI"
End If
Case "3"
txtDecena = "TREINTA"
If Unidad <> "0" Then
txtDecena = "TREINTA Y "
End If
Case "4"
txtDecena = "CUARENTA"
If Unidad <> "0" Then
txtDecena = "CUARENTA Y "
End If
Case "5"
txtDecena = "CINCUENTA"
If Unidad <> "0" Then
txtDecena = "CINCUENTA Y "
End If
Case "6"
txtDecena = "SESENTA"
If Unidad <> "0" Then
txtDecena = "SESENTA Y "
End If
Case "7"
txtDecena = "SETENTA"
If Unidad <> "0" Then
txtDecena = "SETENTA Y "
End If
Case "8"
txtDecena = "OCHENTA"
If Unidad <> "0" Then
txtDecena = "OCHENTA Y "
End If
Case "9"
txtDecena = "NOVENTA"
If Unidad <> "0" Then
txtDecena = "NOVENTA Y "
End If
End Select
If Decena <> "1" Then
Select Case Unidad
Case "1"
If IsCientos = False Then
txtUnidad = "UN"
Else
txtUnidad = "UNO"
End If
Case "2"
txtUnidad = "DOS"
Case "3"
txtUnidad = "TRES"
Case "4"
txtUnidad = "CUATRO"
Case "5"
txtUnidad = "CINCO"
Case "6"
txtUnidad = "SEIS"
Case "7"
txtUnidad = "SIETE"
Case "8"
txtUnidad = "OCHO"
Case "9"
txtUnidad = "NUEVE"
End Select
End If
CONVC = txtCentena & " " & txtDecena & txtUnidad
End Function
Function CONVD(Texto)
Dim Decenadecimal
Dim Unidaddecimal
Dim txtDecenadecimal
Dim txtUnidaddecimal
Decenadecimal = Mid(Texto, 1, 1)
Unidaddecimal = Mid(Texto, 2, 1)
Select Case Decenadecimal
Case "1"
txtDecenadecimal = "DIEZ"
Select Case Unidaddecimal
Case "1"
txtDecenadecimal = "ONCE"
Case "2"
txtDecenadecimal = "DOCE"
Case "3"
txtDecenadecimal = "TRECE"
Case "4"
txtDecenadecimal = "CATORCE"
Case "5"
txtDecenadecimal = "QUINCE"
Case "6"
txtDecenadecimal = "DIECISEIS"
Case "7"
txtDecenadecimal = "DIECISIETE"
Case "8"
txtDecenadecimal = "DIECIOCHO"
Case "9"
txtDecenadecimal = "DIECINUEVE"
End Select
Case "2"
txtDecenadecimal = "VEINTE"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "VEINTI"
End If
Case "3"
txtDecenadecimal = "TREINTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "TREINTA Y "
End If
Case "4"
txtDecenadecimal = "CUARENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "CUARENTA Y "
End If
Case "5"
txtDecenadecimal = "CINCUENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "CINCUENTA Y "
End If
Case "6"
txtDecenadecimal = "SESENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "SESENTA Y "
End If
Case "7"
txtDecenadecimal = "SETENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "SETENTA Y "
End If
Case "8"
txtDecenadecimal = "OCHENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "OCHENTA Y "
End If
Case "9"
txtDecenadecimal = "NOVENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "NOVENTA Y "
End If
End Select
If Decenadecimal <> "1" Then
Select Case Unidaddecimal
Case "1"
txtUnidaddecimal = "UNO"
Case "2"
txtUnidaddecimal = "DOS"
Case "3"
txtUnidaddecimal = "TRES"
Case "4"
txtUnidaddecimal = "CUATRO"
Case "5"
txtUnidaddecimal = "CINCO"
Case "6"
txtUnidaddecimal = "SEIS"
Case "7"
txtUnidaddecimal = "SIETE"
Case "8"
txtUnidaddecimal = "OCHO"
Case "9"
txtUnidaddecimal = "NUEVE"
End Select
End If
If Decenadecimal = 0 And Unidaddecimal = 0 Then
CONVD = ""
Else
CONVD = txtDecenadecimal & txtUnidaddecimal
End If
End Function
Muy buen trabajo, felicitaciones
el cero que lo coloque porfavor
alguno de ustedes podria indicarme o que tengo que hacer para que me ponga esto en letras 0101 quiero que le ponga CERO CIENTO UNO
el cero que lo coloque porfavor