foro de excel

todo tipo de soluciones en excel

foro de excel
de numeros a letras en excel
* E-mail:
* Password:
Registrarse Presentación Miembros Imágenes
¿Has olvidado tu Password?

Lista de mensajes
Autor Mensaje
nolberto
 
Mensajes: 57
Registrado: Noviembre/2006
Estado: Off-line
Grupo: Administrador del foro
 
 
  Re: Re: de numeros a letras en excel 20/Junio/2008 - 03:40

http://soluexcel.es.tl

 

=PERSONAL.XLS!enletras()

 

esta es con denominacion..

=PERSONAL.XLS!letras(A1,1) el 1 espara pesos

=PERSONAL.XLS!letras(A1,2) el 2 para solares usd

 

'Funciones para convertir de números a letras

'Llamada : Letras(Número,Formato) - Formato 1-Pesos, 2-Dólares

Function Unidades(num, UNO)

Dim U

Dim Cad

 

U = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE")

Cad = ""

If num = 1 Then

If UNO = 1 Then

Cad = Cad & "UNO"

Else

Cad = Cad & "UN"

End If

Else

Cad = Cad & U(num - 1)

End If

Unidades = Cad

End Function

 

Function Decenas(num1, res)

Dim D1

D1 = Array("ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", _

"DIECIOCHO", "DIECINUEVE")

D2 = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", _

"SETENTA", "OCHENTA", "NOVENTA")

 

If num1 > 10 And num1 < 20 Then

Cad1 = D1(num1 - 10 - 1)

Else

Cad1 = D2((num1 \ 10) - 1)

If (num1 \ 10) <> 2 Then

If res > 0 Then

Cad1 = Cad1 & " Y "

Cad1 = Cad1 & Unidades(num1 Mod 10, 0)

End If

Else

If res = 0 Then

Cad1 = Cad1 & "E"

Else

Cad1 = Cad1 & "I"

Cad1 = Cad1 & Unidades(num1 Mod 10, 0)

End If

End If

End If

Decenas = Cad1

End Function

 

Function Cientos(num2)

num3 = num2 \ 100

Select Case num3

Case 1

If num2 = 100 Then

cad2 = "CIEN "

Else

cad2 = "CIENTO "

End If

Case 5

cad2 = "QUINIENTOS "

Case 7

cad2 = "SETECIENTOS "

Case 9

cad2 = "NOVECIENTOS "

Case Else

cad2 = Unidades(num3, 0) & "CIENTOS "

End Select

 

num2 = num2 Mod 100

If num2 > 0 Then

If num2 < 10 Then

cad2 = cad2 & Unidades(num2, num2)

Else

cad2 = cad2 & Decenas(num2, num2 Mod 10)

End If

End If

Cientos = cad2

End Function

 

Function Miles(num4)

If (num4 >= 100) Then

cad3 = Cientos(num4)

Else

If (num4 >= 10) Then

cad3 = Decenas(num4, num4 Mod 10)

Else

cad3 = Unidades(num4, 0)

End If

End If

cad3 = cad3 & " MIL "

Miles = cad3

End Function

 

Function Millones(cant)

If cant = 1 Then

ter = " "

Else

ter = "ES "

End If

If (cant >= 1000) Then

cantl = cantl & Miles(cant \ 1000)

cant = cant Mod 1000

End If

If cant > 0 Then

If cant >= 100 Then

cantl = cantl & Cientos(cant)

Else

If cant >= 10 Then

cantl = cantl & Decenas(cant, cant Mod 10)

Else

cantl = cantl & Unidades(cant, 0)

End If

End If

End If

Millones = cantl & " MILLON" & ter

End Function

Function decimales(numero As Single) As Integer

Dim iaux As Integer

iaux = numero - Application.Round(numero, 2)

decimales = iaux

End Function

 

Function letras(cantm As Variant, ByVal mon As Integer) As String

Dim cants1 As String, num1 As Variant, num2 As Variant

 

num1 = cantm \ 1000000

num2 = cantm - (num1 * 1000000)

 

cents = (num2 * 100) Mod 100

If cents = 0 Then

cents1 = "00"

Else

cents1 = Format(cents)

End If

cantm = cantm - (cents / 100)

If cantm >= 1000000 Then

cantlm = Millones(cantm \ 1000000)

cantm = cantm Mod 1000000

End If

If cantm > 0 Then

If (cantm >= 1000) Then

cantlm = cantlm & Miles(cantm \ 1000)

cantm = cantm Mod 1000

End If

End If

If cantm > 0 Then

If cantm >= 100 Then

cantlm = cantlm & Cientos(cantm)

Else

If cantm >= 10 Then

cantlm = cantlm & Decenas(cantm, cantm Mod 10)

Else

cantlm = cantlm & Unidades(cantm, 1)

End If

End If

End If

If mon = 1 Then

letras = cantlm & " PESOS " & cents1 & "/100 M.N."

Else

letras = cantlm & " DOLARES " & cents1 & "/100 U.S.D."

End If

End Function

este otro es sin denominacion

 

http://soluexcel.es.tl

 

=PERSONAL.XLS!num_letras()

 

Function num_letras(Numero As Double) As String

Dim Letras As String

Dim HuboCentavos As Boolean

Dim Decimales As Double

Decimales = Numero - Int(Numero)

Numero = Int(Numero)

Dim Numeros(90) As String

Numeros(0) = "cero"

Numeros(1) = "uno"

Numeros(2) = "dos"

Numeros(3) = "tres"

Numeros(4) = "cuatro"

Numeros(5) = "cinco"

Numeros(6) = "seis"

Numeros(7) = "siete"

Numeros(8) = "ocho"

Numeros(9) = "nueve"

Numeros(10) = "diez"

Numeros(11) = "once"

Numeros(12) = "doce"

Numeros(13) = "trece"

Numeros(14) = "catorce"

Numeros(15) = "quince"

Numeros(20) = "veinte"

Numeros(30) = "treinta"

Numeros(40) = "cuarenta"

Numeros(50) = "cincuenta"

Numeros(60) = "sesenta"

Numeros(70) = "setenta"

Numeros(80) = "ochenta"

Numeros(90) = "noventa"

Do

'*---> Centenas de Millón

If (Numero < 1000000000) And (Numero >= 100000000) Then

If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then

Letras = Letras & "cien millones "

Else

Select Case Int(Numero / 100000000)

Case 1

Letras = Letras & "ciento"

Case 5

Letras = Letras & "quinientos"

Case 7

Letras = Letras & "setecientos"

Case 9

Letras = Letras & "novecientos"

Case Else

Letras = Letras & Numeros(Int(Numero / 100000000))

End Select

If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then

Letras = Letras & "cientos "

Else

Letras = Letras & " "

End If

End If

Numero = Numero - (Int(Numero / 100000000) * 100000000)

End If

'*---> Decenas de Millón

If (Numero < 100000000) And (Numero >= 10000000) Then

If Int(Numero / 1000000) < 16 Then

Letras = Letras & Numeros(Int(Numero / 1000000))

Letras = Letras & " millones "

Numero = Numero - (Int(Numero / 1000000) * 1000000)

Else

Letras = Letras & Numeros(Int(Numero / 10000000) * 10)

Numero = Numero - (Int(Numero / 10000000) * 10000000)

If Numero > 1000000 Then

Letras = Letras & " y "

End If

End If

End If

'*---> Unidades de Millón

If (Numero < 10000000) And (Numero >= 1000000) Then

If Int(Numero / 1000000) = 1 Then

Letras = Letras & " un millón "

Else

Letras = Letras & Numeros(Int(Numero / 1000000))

Letras = Letras & " millones "

End If

Numero = Numero - (Int(Numero / 1000000) * 1000000)

End If

'*---> Centenas de Millar

If (Numero < 1000000) And (Numero >= 100000) Then

If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then

Letras = Letras & "cien mil "

Else

Select Case Int(Numero / 100000)

Case 1

Letras = Letras & "ciento"

Case 5

Letras = Letras & "quinientos"

Case 7

Letras = Letras & "setecientos"

Case 9

Letras = Letras & "novecientos"

Case Else

Letras = Letras & Numeros(Int(Numero / 100000))

End Select

If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) And (Int(Numero / 100000) <> 9) Then

Letras = Letras & "cientos "

Else

Letras = Letras & " "

End If

End If

Numero = Numero - (Int(Numero / 100000) * 100000)

End If

'*---> Decenas de Millar

If (Numero < 100000) And (Numero >= 10000) Then

If Int(Numero / 1000) < 16 Then

Letras = Letras & Numeros(Int(Numero / 1000))

Letras = Letras & " mil "

Numero = Numero - (Int(Numero / 1000) * 1000)

Else

Letras = Letras & Numeros(Int(Numero / 10000) * 10)

Numero = Numero - (Int((Numero / 10000)) * 10000)

If Numero > 1000 Then

Letras = Letras & " y "

Else

Letras = Letras & " mil "

End If

End If

End If

'*---> Unidades de Millar

If (Numero < 10000) And (Numero >= 1000) Then

If Int(Numero / 1000) = 1 Then

Letras = Letras & "un"

Else

Letras = Letras & Numeros(Int(Numero / 1000))

End If

Letras = Letras & " mil "

Numero = Numero - (Int(Numero / 1000) * 1000)

End If

'*---> Centenas

If (Numero < 1000) And (Numero > 99) Then

If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then

Letras = Letras & "cien "

Else

Select Case Int(Numero / 100)

Case 1

Letras = Letras & "ciento"

Case 5

Letras = Letras & "quinientos"

Case 7

Letras = Letras & "setecientos"

Case 9

Letras = Letras & "novecientos"

Case Else

Letras = Letras & Numeros(Int(Numero / 100))

End Select

If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then

Letras = Letras & "cientos "

Else

Letras = Letras & " "

End If

End If

Numero = Numero - (Int(Numero / 100) * 100)

End If

'*---> Decenas

If (Numero < 100) And (Numero > 9) Then

If Numero < 16 Then

Letras = Letras & Numeros(Int(Numero))

Numero = Numero - Int(Numero)

Else

Letras = Letras & Numeros(Int((Numero / 10)) * 10)

Numero = Numero - (Int((Numero / 10)) * 10)

If Numero > 0.99 Then

Letras = Letras & " y "

End If

End If

End If

'*---> Unidades

If (Numero < 10) And (Numero > 0.99) Then

Letras = Letras & Numeros(Int(Numero))

Numero = Numero - Int(Numero)

End If

Loop Until (Numero = 0)

'*---> Decimales

If (Decimales > 0) Then

Letras = Letras & " con "

Letras = Letras & Format(Decimales * 100, "00") & "/100 centavos"

End If

num_letras = Letras

End Function

http://soluexcel.es.tl

csvmorris
 
Mensajes: 3
Registrado: Abril/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Re: de numeros a letras en excel 17/Junio/2008 - 22:05

NORBERTO GRACIAS POR EL ENVIO, OYE NADA MAS QUE HAY ALGO QUE NO ENTIENDO, DESPUES DE PEGARLA EN VISUAL, ¿QUE HAGO PARA QUE FUNCIONE? ME PODRAS ENSEÑAR UN PEQUEÑO EJEMPLO......GRACIAS
nolberto
 
Mensajes: 57
Registrado: Noviembre/2006
Estado: Off-line
Grupo: Administrador del foro
 
 
  de numeros a letras en excel 04/Junio/2008 - 23:49

http://soluexcel.es.tl

para convertir de numeros a letras en excel..

aqui esta la macro..

copia el codigo y pegalo en un modulo de visual basic en excel..

Option Base 1
Option Explicit
Function EnLetras(Cantidad As Double) As String
    Dim CDU As Integer, Resto As Double
    Dim ii As Byte, Divisor As Single
    Dim UnoVeintinueve As Variant, TreintaNoventa As Variant, CienNovecientos As Variant
    
    UnoVeintinueve = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", _
        "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", _
        "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", _
        "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", _
        "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", _
        "VEINTIOCHO", "VEINTINUEVE")
    TreintaNoventa = Array("TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", _
        "SETENTA", "OCHENTA", "NOVENTA")
    CienNovecientos = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", _
        "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", _
        "OCHOCIENTOS", "NOVECIENTOS")
    
    If Cantidad < 0 Then
        EnLetras = "Menos "
        Cantidad = Abs(Cantidad)
    Else
        EnLetras = ""
    End If
    
    Resto = Cantidad
    If Int(Resto) = 0 Then
        EnLetras = EnLetras + "CERO"
        GoTo Centavos
    End If
    
    For ii = 1 To 3
        Divisor = 10 ^ (9 - 3 * ii)
        CDU = Int(Resto / Divisor)
        Resto = WorksheetFunction.Round(Resto - Divisor * CDU, 2)
        If CDU = 0 Then GoTo OtroII
        If CDU = 1 Then
            If ii = 1 Then EnLetras = EnLetras + "UN MILLON "
            If ii = 2 Then EnLetras = EnLetras + "UN MIL "
            If ii = 3 Then EnLetras = EnLetras + "UN "
            GoTo OtroII
        End If
        If CDU = 100 Then
            If ii = 1 Then EnLetras = EnLetras + "CIEN MILLONES "
            If ii = 2 Then EnLetras = EnLetras + "CIEN MIL "
            If ii = 3 Then EnLetras = EnLetras + "CIEN "
            GoTo OtroII
        End If
        
        If CDU > 100 Then
            EnLetras = EnLetras + CienNovecientos(Int(CDU / 100)) + " "
            CDU = CDU - 100 * Int(CDU / 100)
        End If
        If CDU > 29 Then
            EnLetras = EnLetras + TreintaNoventa(Int(CDU / 10) - 2) + " "
            CDU = CDU - 10 * Int(CDU / 10)
            If CDU > 0 Then EnLetras = EnLetras + "Y "
        End If
        If CDU > 1 Then
            EnLetras = EnLetras + UnoVeintinueve(CDU)
        ElseIf CDU = 1 Then
            EnLetras = EnLetras + UnoVeintinueve(CDU)
        End If
        If ii = 1 Then EnLetras = EnLetras + "MILLONES "
        If ii = 2 Then EnLetras = EnLetras + " MIL "
OtroII:
    Next ii
Centavos:
        Resto = WorksheetFunction.Round(100 * Resto, 0)
        If Int(Cantidad) = 1000000 Then
            EnLetras = RTrim(EnLetras) + " DE PESOS"
        ElseIf Int(Cantidad) = 1 Then
            EnLetras = RTrim(EnLetras) + " PESO"
        Else
            EnLetras = RTrim(EnLetras) + " PESOS"
        End If
        EnLetras = EnLetras + " CON " + CStr(Resto) + "/100"
End Function

 

http://soluexcel.es.tl


Usuarios activos
2 usuarios activos: 0 miembros y 2 huespedes en el foro.
 Reglas de mensaje
puedes escribir nuevos temas
puedes responder a los temas
puedes adjuntar archivos
no puedes editar tus mensajes
Contactar con el Administrador del foro.

La utilización del servicio vendrá condicionada por la previa aceptación de las Condiciones Generales de Uso del Servicio.



Foro gratis creado en ForosWebGratis.com. Crea tu propio foro aquí.

http://soluexcel.es.tl