Ir al contenido principal

Convertir números a letras

Te muestro como crear tu propia función para convertir números a letras, esto puede serte de mucha utilidad si usas Excel para imprimir  reportes en los que debas ingresar un numero en letras.
Primero ingresa a VBA presionando las teclas Alt+F11, e inserta un Modulo (Si ya tienes un modulo no necesitas insertar uno nuevo)

Insertar un modulo de codigo en VBA 
Ahora selecciona tu modulo (Module1)
Ventana de codigo para agregar la funcion
Y en la ventana derecha ingresa este texto:

Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional MonedaPlural As String = "") As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit
Dim ValorEntero As Long
    Valor = Round(Valor, 2)
    lyCantidad = Int(Valor)
    ValorEntero = lyCantidad
    lyCentavos = (Valor - lyCantidad) * 100
    laUnidades = 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")
    laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
    laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
    lnNumeroBloques = 1
   
    Do
        lnPrimerDigito = 0
        lnSegundoDigito = 0
        lnTercerDigito = 0
        lcBloque = ""
        lnBloqueCero = 0
        For I = 1 To 3
            lnDigito = lyCantidad Mod 10
            If lnDigito <> 0 Then
                Select Case I
                Case 1
                    lcBloque = " " & laUnidades(lnDigito - 1)
                    lnPrimerDigito = lnDigito
                Case 2
                    If lnDigito <= 2 Then
                        lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
                    Else
                    lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque
                    End If
                    lnSegundoDigito = lnDigito
                Case 3
                    lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque
                    lnTercerDigito = lnDigito
                End Select
            Else
                lnBloqueCero = lnBloqueCero + 1
            End If
            lyCantidad = Int(lyCantidad / 10)
            If lyCantidad = 0 Then
                Exit For
            End If
        Next I
        Select Case lnNumeroBloques
            Case 1
                NumLetras = lcBloque
            Case 2
                NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & NumLetras
            Case 3
                NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & NumLetras
        End Select
        lnNumeroBloques = lnNumeroBloques + 1
    Loop Until lyCantidad = 0
    NumLetras = NumLetras & " " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function

Y guarda los cambios presionando Ctrl+S o con el boton de Guardar en la barra de herramientas.

Como usar la función para convertir los números a letras?
Digamos que nuestros importes inicia apartir de la celda A1 y en la columna B1 aplico la siguiente formula:
=NOMPROPIO(NumLetras(A1,"Peso","Pesos"))
 y tendremos este resultado:


Puedes descargar el archivo - Convertir número a letras utilizado en este artículo y reutilizar las funciones.







Comentarios

Entradas más populares de este blog

Controlar base de datos de proveedores.

Has tu pedido por el correo electronico   solucionesmsexcelvba@gmail.com ¡Yo Te lo diseño de acuerdo a tus necesidades!

Concatenar textos en un solo textbox

Como su mismo nombre lo dice, es un código que concatena varios textbox en un solo textbox. espero les sirva de algo       Descargar Archivo

Una alternativa a la función BUSCARV en Excel

Como seguramente sabes, la función BUSCARV es una de las funciones más utilizadas en Excel y es de gran ayuda para buscar valores dentro de una lista. Sin embargo esta función tiene una restricción que puede ponerte en aprietos. Condición para utilizar la función BUSCARV La condición que tenemos para utilizar la función BUSCARV es que el valor que estamos buscando debe estar en la primera columna del rango de datos y esta condición se debe de cumplir siempre. En la siguiente imagen puedes observar cómo utilizo fácilmente la función BUSCARV para encontrar el total de la factura 8975: Sin embargo, si deseo encontrar el valor de la factura por el nombre de cliente no será posible utilizar la función BUSCARV ya que la columna Cliente no es la primera columna de la tabla. Por supuesto, una opción sería modificar la tabla de datos y mover la columna C como la primera columna, pero en ocasiones no podemos hacer dicho movimiento. En esta ocasión te mostraré una alternativa

Macro Para Dividir texto en celdas diferentes

Has tu pedido por el correo electronico   solucionesmsexcelvba@gmail.com ¡Yo Te lo diseño de acuerdo a tus necesidades! "Muchas personas en su trabajo diario realizan tareas repetitivas frente a sus hojas Excel, desperdiciando días enteros en realizar informes de manera manual los cuales, con un simple clic a un botón en cuestión de segundos estaría realizado".

Ejemplos de formato condicional en Excel 2013

En esta ocasión realizaremos algunos ejemplos de formato condicional en Excel 2013 para dejar en claro el potencial y ventajas de uso que nos ofrece esta funcionalidad al momento de analizar nuestros datos. Formato condicional en números Cuando los datos de nuestras celdas son valores numéricos, Excel provee de varias opciones para aplicar un formato condicional rápidamente. Las primeras alternativas que analizaremos serán las que se encuentran en Inicio > Estilos > Formato condicional > Resaltar reglas de celdas. Sabiendo que nuestros datos son valores numéricos, podemos utilizar las siguientes opciones: Es mayor que : Se aplicará el formato a todas las celdas con un valor mayor al especificado. En menor que : El formato será aplicado a las celdas con un valor menor que el indicado. Entre : Excel evaluará las celdas para saber aquellas que tengan un valor dentro del rango indicado y se les aplicará el formato. Es igual a : Solo las celdas que sean iguales a

Función CUENTACOLOR para contar celdas con colores.

Este archivo contiene la función personalizada CUENTACOLOR y sirve para contar celdas que contengan un determinado color de un reporte. CODIGO: Function CUENTACOLOR(RangoColor As Range, CeldaColor As Range) As Long '''''Soluciones MS Excel VBA''''''' Dim rngCelda As Range CUENTA = 0 For Each Celda In RangoColor If Celda.Interior.ColorIndex = CeldaColor.Interior.ColorIndex And IsNumeric(Celda) Then CUENTA = CUENTA + 1 End If Next CUENTACOLOR = CUENTA End Function Puedes descargar el libro de trabajo utilizado en este artículo y reutilizar las funciones

Funcion (NOMPROPIO,MAYUSC,MINUSC)

Existen algunas funciones en Excel que te ayudarán a aplicar formato de mayúsculas ó minúsculas a textos de manera fácil y rápida. Revisaremos estas funciones con un ejemplo sencillo. En la celda A1 colocaré el valor “excel total”: Primera letra en mayúscula Ahora haré uso de la función NOMPROPIO para colocar la primera letra de cada palabra en mayúscula. La fórmula queda de la siguiente manera: =NOMPROPIO(A1) El resultado al aplicar esta fórmula en la celda B1 es el siguiente: Convertir a mayúsculas Para transformar todas las letras en mayúsculas de la celda B1 y utilizaré la función MAYUSC aplicando la siguiente fórmula: =MAYUSC(B1) Con esta fórmula, la celda C1 tendrá el siguiente resultado: Convertir a minúsculas Finalmente haré uso de la función MINUSC para convertir de nuevo todas las letras en minúsculas. La fórmula a utilizar será la siguiente: =MINUSC(C1) Este es el resultado final:

Convertir una fecha a texto en Excel

Seguramente alguna vez has intentado concatenar una fecha a un texto solo para darte cuenta que el resultado no es lo que esperabas ya que Excel toma en cuenta el valor numérico de la fecha y terminamos con  un número concatenado en el texto. Para dejar en claro a lo que me refiero realiza la siguiente prueba. En la celda A1 coloca la fórmula =HOY() y en la celda B1 ingresa el texto “LA FECHA ES”. Ahora en la celda C1 coloca la fórmula =CONCATENAR(B1, ” “, A1) y observa el resultado: Definitivamente ese no era el resultado que esperábamos al realizar la concatenación de ambas celdas. El hecho es que todas las fechas en Excel son valores numéricos y para cualquier cálculo siempre se toma en cuenta dicho valor y no lo que vemos desplegado en pantalla. La manera de solucionar este inconveniente es convertir la fecha a texto en Excel . ¿Cómo convertir una fecha a texto en Excel? Para hacer la conversión de una fecha a un texto debemos utilizar la función TEXTO.