viernes, 8 de mayo de 2009

Función de Excel de Numeros a Letras

En algún momento, necesité hacer muchos contratos, con diferentes montos para cada uno de ellos, utilizando la utilidad de combinación de correspondencia, entonces me dí a la tarea de buscar alguna herramienta o función de Excel que me ayudara a pasar cifras de Números a Letras, es decir, poder trasformar automáticamente (23.514) a (VEINTITRES MIL QUINIENTOS CATORCE), esto la verdad no representa un enorme problema, pero cuando tienes que hacerlo 80 veces o mas, o varias veces cada tanto tiempo, la verdad se vuelve tedioso, la verdad no encontré ninguna función nativa de Excel, entonces luego de buscar y adaptar de aqui y de allá, les tengo un buen resultado.

Bueno.... traté de subir el código de la función, pero parece que no funcionó muy bien, por eso dejo aqui la imagen con el código para todos...

Si lo requieren tengo el mismo código implementado para Java y JavaScript (Num2Text.java y Num2Text.js)

Dar Click sobre la imagen para ampliar...

La fuente de este código es el blog de Jhonny Vargas P.

si tienen problemas para subirlo a Excel, con guslto les ayudaré, o si necesitan el código en .bas para importarlo a Excel.

lo implemente en Excel 2002 y me funcionó de maravilla ... solo modifique un poco lo de "EleAEse" agregando esto al final del código para que funcione en la hoja de calculo como una funcion del usuario...

Public Function NumeroATexto(ByVal d As Double) As String

If d - Int(d) Then
Lentero = Num2Text(Int(d))
Ldec = Num2Text(Mid(d - Int(d), 3, 2))
NumeroATexto = Num2Text(Int(d)) & " PESOS CON " & Num2Text(Mid(d - Int(d), 3, 2)) & " CENTAVOS"
Else
NumeroATexto = Num2Text(Int(d)) & " PESOS"
End If
End Function


Igual aqui tienen un applet que hice para que vean que sí funciona jeejejej

Solo escriban el número y den click en cambiar.... :D

Añade este Gadget Num2Text a tu Google Desktop, iGoogle o a tu Web

Add to Google



7 comentarios:

  1. barabaro anda con numeros enteros no con decimales.se puede agregar decimales ejemplo 68,50 que escribar sesenta y ocho con 50/100.
    gracias

    ResponderEliminar
  2. esta barbaro el programita pero no escribe decimales ejemplo 50,50 deberia escribir cincuenta con 50/100.se puede solucionar eso.
    gracias

    ResponderEliminar
  3. hola juan he tardado mucho en responder pues he estado algo ocupado...me disculpo, he diseñado un gadget que te puede ser de utilidad, puedes probarlo arriba ya he solucionado lo de los decimales.
    saludos.

    ResponderEliminar
  4. Me podrias indicar por favor como lo subo a excel, he estado intentando pero creo q no soy muy bueno con la computadora

    ResponderEliminar
  5. saludos armagoba... claro que si... no es tan difícil si estas algo familiarizado con vba... en fin...haces lo siguiente.. en excel Herramientas/Macro/Editor de visual Basic, una vez allí entras por el menú Insertar/Modulo, allí cargas el codigo... mas esto Public

    Function NumeroATexto(ByVal d As Double) As String
    If d - Int(d) Then
    Lentero = Num2Text(Int(d))
    Ldec = Num2Text(Mid(d - Int(d), 3, 2))
    NumeroATexto = Num2Text(Int(d)) & " PESOS CON " & Num2Text(Mid(d - Int(d), 3, 2)) & " CENTAVOS"
    Else
    NumeroATexto = Num2Text(Int(d)) & " PESOS"
    End If
    End Function
    y listo... luego desde excel llamas la funcion NumeroATexto() como cualquier otra
    espero te sirva..

    ResponderEliminar
  6. ANigo he dado vuelcos por toda la hoja pero nada que me funciona.. que he hecho mal.. escribi tal y cual la imagen.. donde coloco la otra funcion... al comienzo, al final o es una función más.... grassss

    ResponderEliminar
  7. "Public Function Num2Text(ByVal value As Double) As String
    Select Case value
    Case 0: Num2Text = "CERO"
    Case 1: Num2Text = "UN"
    Case 2: Num2Text = "DOS"
    Case 3: Num2Text = "TRES"
    Case 4: Num2Text = "CUATRO"
    Case 5: Num2Text = "CINCO"
    Case 6: Num2Text = "SEIS"
    Case 7: Num2Text = "SIETE"
    Case 8: Num2Text = "OCHO"
    Case 9: Num2Text = "NUEVE"
    Case 10: Num2Text = "DIEZ"
    Case 11: Num2Text = "ONCE"
    Case 12: Num2Text = "DOCE"
    Case 13: Num2Text = "TRECE"
    Case 14: Num2Text = "CATORCE"
    Case 15: Num2Text = "QUINCE"
    Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)
    Case 20: Num2Text = "VEINTE"
    Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)
    Case 30: Num2Text = "TREINTA"
    Case 40: Num2Text = "CUARENTA"
    Case 50: Num2Text = "CINCUENTA"
    Case 60: Num2Text = "SESENTA"
    Case 70: Num2Text = "SETENTA"
    Case 80: Num2Text = "OCHENTA"
    Case 90: Num2Text = "NOVENTA"
    Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
    Case 100: Num2Text = "CIEN"
    Case Is < 200: Num2Text = "CIENTO " & Num2Text(value - 100)
    Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
    Case 500: Num2Text = "QUINIENTOS"
    Case 700: Num2Text = "SETECIENTOS"
    Case 900: Num2Text = "NOVECIENTOS"
    Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
    Case 1000: Num2Text = "MIL"
    Case Is < 2000: Num2Text = "MIL " & Num2Text(value Mod 1000)
    Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
    If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
    Case 1000000: Num2Text = "UN MILLON"
    Case Is < 2000000: Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)
    Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES"
    If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
    Case 1000000000000#: Num2Text = "UN BILLON"
    Case Is < 2000000000000#: Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
    Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"
    If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
    End Select
    End Function

    Public Function NumeroATexto(ByVal d As Double) As String
    If d - Int(d) Then

    Lentero = Num2Text(Int(d))
    Ldec = Num2Text(Mid(d - Int(d), 3, 2))

    NumeroATexto = Num2Text(Int(d)) & " PESOS CON " & Num2Text(Mid(d - Int(d), 3, 2)) & " CENTAVOS"

    Else

    NumeroATexto = Num2Text(Int(d)) & " PESOS"
    End If


    End Function
    "

    ResponderEliminar