Búsqueda personalizada

martes, 23 de septiembre de 2008

Tucoteca en excel...... Numeros en letras

Bueno una herramienta muy util es cuando necesitas convertir numeros a letras en excel y no quieres tener que escribir todo el texto, para solucionar la problematica planteada se necesita agregar una macro al visual basic del excel, para que atraves de una simple formula puedas llevar a cabo tu cometido. La formula que usaras al final debe quedar asi =EnLetras(celda que contenga el numero,aqui se coloca 1, 2 o 3) dependiendo el tipo de formato que quieras..
 En lo posterior subire una macro parecida pero un tanto mas simple...

Option Explicit
'Función programada inicialmente por Roberto M.G. (rm tenologia)

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
  If Int(Abs(Valor)) = 1 Then Moneda = " peso" Else Moneda = " pesos"
  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 = " centavo" Else Fracs = " centavos"
  If Cents = 0 Then Fracs = "" Else Fracs = " con " & Letras(Cents) & Fracs
  EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fracs
  If Valor < enletras = "menos ">
  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) 'Primera letra en mayuscula SOLAMENTE '
  EnLetras = "(" & EnLetras & ")"
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 < letras = "dieci">
    Case 20: Letras = "veinte"
    Case Is < letras = "veinti">
    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 < letras =" Letras(Int(Valor">
    Case 100: Letras = "cien"
    Case Is < letras = "ciento ">
    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 < letras =" Letras(Int(Valor">
    Case 1000: Letras = "mil"
    Case Is < letras = "mil ">
    Case Is < letras =" Letras(Int(Valor">
      If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
    Case 1000000: Letras = "un millón "
    Case Is < letras = "un millón ">
    Case Is < letras =" Letras(Int(Valor">
      If (Valor - Int(Valor / 1000000) * 1000000) _
        Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
    Case 1000000000000#: Letras = "un billón "
    Case Is <>
      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

Espero les pueda servir el dato.................

 


No hay comentarios: