............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Convertir Numeros Moneda a formato de letras

Ver el tema anterior Ver el tema siguiente Ir abajo

Convertir Numeros Moneda a formato de letras

Mensaje por GalileoGali el Dom Mar 30, 2008 10:24 pm

Hay muchas variantes de UDF para este tema, aqui va una mas:
Pega en un Modulo Standar o en tu Libro de Macros Personal.xls, el siguiente código:

Código:
Function letra(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 = ConvierteCifra(Millones, False)
CadMiles = ConvierteCifra(Miles, False)
CadCientos = ConvierteCifra(Cientos, True)
caddecimales = ConvierteDecimal(Decimales)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = 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) = "UN" Then
Cadena = Cadena & "UNO "
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos)
Else
Cadena = Cadena & " " & Trim(CadCientos)
End If
letra = Trim(Cadena & caddecimales)
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
letra = Trim(Cadena)
End If
End If

End Function

Function ConvierteCifra(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
ConvierteCifra = txtCentena & " " & txtDecena & txtUnidad
End Function

Function ConvierteDecimal(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
ConvierteDecimal = " 00/100 M.N."
Else
ConvierteDecimal = txtDecenadecimal & txtUnidaddecimal
End If
End Function

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por miguelpo el Mar Ago 26, 2008 10:32 pm

Q gran aporte
gracias............................................
de nuevo...............................................
avatar
miguelpo

Masculino Cantidad de envíos : 49
Edad : 37
Ciudad - Pais : Peru, Lima
Version de Excel : 2000
Fecha de inscripción : 07/07/2008

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por apm el Miér Jun 10, 2009 2:05 pm

Estoy usando el codigo mencionado, pero tengo el siguiente problema.

Al usarlo en mi hoja de excel, cuando pongo un numero sin centavos ej. 600.00, aparece como seiscientos 00/100 MN, o sea no aparece PESOS. Cuando el numero lleva centavos, ej. 600.01, aparece seiscientos pesos 00/100 MN. Quisiera saber como hacer para que tambien aparezca la palabra PESOS cuando la cifra no tenga centavos (ej. 600.00).

Gracias

apm

Masculino Cantidad de envíos : 1
Edad : 41
Ciudad - Pais : mex
Version de Excel : 2007
Fecha de inscripción : 09/06/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por jairga el Miér Jun 10, 2009 3:29 pm

Prueba con esta funcion:

Código:
Function EnLetras(Valor, Optional ByVal Tipo As Byte = 1) As String '
 'Funcion Principal '
  If Not IsNumeric(Valor) Then
    EnLetras = "¡ La referencia no es valor o... 'excede' la precisión": Exit Function
  End If: Dim Moneda As String, Fracs As String, Cents As Integer
  Moneda = " Pesos M/N"
  If Right(Letras(Abs(Int(Valor))), 6) = "illón " Or _
    Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
  Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
  If Cents = 1 Then Fracs = " céntavos" Else Fracs = " céntavos"
  If Cents = 0 Then Fracs = "" Else Fracs = " con " & Letras(Cents) & Fracs
  EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fracs
  If Valor < 0 Then EnLetras = "menos " & EnLetras
  If Tipo = 2 Then EnLetras = UCase(EnLetras) ' TODO EN MAYUSCULAS '
  If Tipo = 3 Then EnLetras = StrConv(EnLetras, vbProperCase) ' Todo Como
 'Nombre Propio '
  If Tipo = 4 Then EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2)
 End Function

 Private Function Letras(Valor) As String ' Función Auxiliar [uso
 'exclusivo' de la funcion 'principal'] '
  Select Case Int(Valor)
    Case 0: Letras = "cero"
    Case 1: Letras = "un"
    Case 2: Letras = "dos"
    Case 3: Letras = "tres"
    Case 4: Letras = "cuatro"
    Case 5: Letras = "cinco"
    Case 6: Letras = "seis"
    Case 7: Letras = "siete"
    Case 8: Letras = "ocho"
    Case 9: Letras = "nueve"
    Case 10: Letras = "diez"
    Case 11: Letras = "once"
    Case 12: Letras = "doce"
    Case 13: Letras = "trece"
    Case 14: Letras = "catorce"
    Case 15: Letras = "quince"
    Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
    Case 20: Letras = "veinte"
    Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
    Case 30: Letras = "treinta"
    Case 40: Letras = "cuarenta"
    Case 50: Letras = "cincuenta"
    Case 60: Letras = "sesenta"
    Case 70: Letras = "setenta"
    Case 80: Letras = "ochenta"
    Case 90: Letras = "noventa"
    Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
    Case 100: Letras = "cien"
    Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
    Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
    Case 500: Letras = "quinientos"
    Case 700: Letras = "setecientos"
    Case 900: Letras = "novecientos"
    Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
    Case 1000: Letras = "mil"
    Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
    Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
      If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
    Case 1000000: Letras = "un millón "
    Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
    Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
      If (Valor - Int(Valor / 1000000) * 1000000) _
        Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
    Case 1000000000000#: Letras = "un billón "
    Case Is < 2000000000000#
      Letras = "un billón " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
    Case Else: Letras = Letras(Int(Valor / 1000000000000#)) & " billones "
      If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) _
        Then Letras = Letras & " " & Letras(Valor - Int(Valor / _
        1000000000000#) * 1000000000000#)
  End Select
 End Function

jairga
Moderador
Moderador

Masculino Cantidad de envíos : 163
Edad : 40
Ciudad - Pais : Cartagena-Barranquilla(Colombia)
Version de Excel : XP-2003-2007
Fecha de inscripción : 11/03/2008

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lizpaez55 el Vie Jun 12, 2009 4:53 pm

Holaa

Muchas gracias por tu aporte..realmente me va a ser de garn utilidad!=)

Me cuesta un poco excel!jaja

Saludos a todos

Liz

lizpaez55

Femenino Cantidad de envíos : 1
Edad : 28
Ciudad - Pais : españa
Version de Excel : 98
Fecha de inscripción : 12/06/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lorenarey9 el Miér Sep 30, 2009 8:29 pm

Buenas noches, me interesa este aporte, pero no sé como hacer me podrían explicar paso a paso donde debo colocar eso. gracias

lorenarey9

Femenino Cantidad de envíos : 19
Edad : 38
Ciudad - Pais : venezuela
Version de Excel : xp 2003
Fecha de inscripción : 30/09/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lorenarey9 el Miér Sep 30, 2009 8:52 pm

Buenas noches, me interesa este aporte, pero no sé como hacer me podrían explicar paso a paso donde debo colocar eso. gracias

lorenarey9

Femenino Cantidad de envíos : 19
Edad : 38
Ciudad - Pais : venezuela
Version de Excel : xp 2003
Fecha de inscripción : 30/09/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por GalileoGali el Miér Sep 30, 2009 11:37 pm

[Tienes que estar registrado y conectado para ver este vínculo]

Ya estando en el editor, para insertar Modulo

[Tienes que estar registrado y conectado para ver este vínculo]

Copias el codigo y lo pegas en:


_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lorenarey9 el Jue Oct 01, 2009 7:16 pm

Muchas gracias por tu apoyo, te cuento que segui los pasos tal como muestran las figuras, pero después que hago donde se graba eso, como ejecuto luego esa macro? queda guardada en libro personal o en un libro? gracias!

lorenarey9

Femenino Cantidad de envíos : 19
Edad : 38
Ciudad - Pais : venezuela
Version de Excel : xp 2003
Fecha de inscripción : 30/09/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por GalileoGali el Jue Oct 01, 2009 11:03 pm

Por ejemplo si pegas el codigo de la Funcion "EnLetras(valor,1)", podes invocar la Funcion en la Hoja poniendo la funcion en la celda tal como lo haces con cualquier otra funcion.

Si queres que la funcion funcione en cualquier Libro, en lugar de ponerla en el Modulo de un Libro determinado, la incorporas a un modulo del Libro Personal.xls

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lorenarey9 el Vie Ago 06, 2010 10:29 pm

Buenas noches, estoy interesada en retomar este foro ya que me parece de mucha ayuda poder ejecutar esta macro, dado que por mi trabajo debo transcribir los montos a letras, me gustaria que me ayudaras como hacer que me funcione por que hice las indicaciones que aprecen en el foro y no logro que funcione, seria de mucha ayuda que me explicaras desde 0, gracias!

lorenarey9

Femenino Cantidad de envíos : 19
Edad : 38
Ciudad - Pais : venezuela
Version de Excel : xp 2003
Fecha de inscripción : 30/09/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por Alejandro62 el Sáb Ago 14, 2010 11:23 pm

Hola Lorenarey9, ve por favor este archivo, creo te sera muy util. Al bajarlo le das descarga regular y esperamos como un minuto, tecleas las 2 palabras clave que te pide y listo ahora ya se abre este archivo de Excel.
Al abrirlo no se te olvide activar las macros.

[Tienes que estar registrado y conectado para ver este vínculo]

Saludos.

Alejandro62

Masculino Cantidad de envíos : 37
Edad : 55
Ciudad - Pais : Mexico, Estado de Mexico
Version de Excel : Excel 2010
Fecha de inscripción : 21/11/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por lorenarey9 el Jue Ago 19, 2010 6:38 pm

Excelente muchas gracias, justo lo que quería!

lorenarey9

Femenino Cantidad de envíos : 19
Edad : 38
Ciudad - Pais : venezuela
Version de Excel : xp 2003
Fecha de inscripción : 30/09/2009

Volver arriba Ir abajo

Re: Convertir Numeros Moneda a formato de letras

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.