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

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

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...

Generar datos aleatorios con macro "Totalmente Gratis"

Has tu pedido por el correo electronico  solucionesmsexcelvba@gmail.com Los números aleatorios son utilizados en programas de simulación por computadora, en el muestreo estadístico, criptografía de datos y por supuesto en los juegos de azar. Cualquier área que necesite resultados impredecibles hará uso de los números aleatorios.

Asignar nombres a celdas o rangos

Asignar un nombre a un rango de celdas Estos nombres se pueden utilizar dentro de una fórmula para ayudar en la compresión de la misma posteriormente. Para asignar  un nombre a una celda sigue los siguientes pasos. Selecciona la celda o rango a la que asignarás un nombre y haz clic en el cuadro Nombre que se encuentra en el extremo izquierdo de la barra de fórmulas: Escribe el nombre que deseas y presiona Entrar. Otra manera de crear un nombre para un rango es desde la ficha Fórmulas y el botón Asignar nombre . Una vez que hayas seleccionado el rango de celdas oprime este botón y se mostrará el cuadro de diálogo Nombre nuevo : En la caja de texto Nombre coloca el nombre que asignarás a la celda o rango y oprime el botón Aceptar. Utilizar un nombre en una fórmula Como ejemplo final utilizaré el nombre que acabamos de crear dentro de una fórmula para que observes cómo Excel interpreta correctamente el nuevo nombre del rango, observa la barra de fórmul...

Función MIN y MAX

La función MIN y MAX en Excel La función MIN o MAX en Excel nos devuelve el valor mínimo o el valor maximo de un conjunto de valores. Los argumentos de la función MIN o MAX pueden ser los números, las celdas o los rangos que contienen los valores que deseamos evaluar.

Como separar NOMBRES y APELLIDOS con UDF en Excel

 Aquí te dejo un UDF para separar los nombres y apellidos en Excel: La dificultad principal para separar nombres y apellidos en Excel es la cantidad de variantes que pueden existir en los nombres de las personas lo cual hace necesario analizar cada caso específico para utilizar el procedimiento adecuado: y para eso necesitamos realizar ciertos procedimientos, a continuación te presento: Paso 1: Abre un libro de excel y abrir el editor de con el teclado ALT + F11, insertamos un módulo y pegamos el siguiente código: 'Function NOMBRE(AP As Range) As String 'Dim nombreArr() As String 'Dim nuevaCadena As String 'Dim i As Integer 'nombreArr = Split(Trim(AP.Value)) 'For i = 0 To UBound(nombreArr) '    Select Case LCase(nombreArr(i)) '        Case "de", "del", "la", "las", "los", "san" '            nuevaCadena = nuevaCadena & nombreArr(i) & " " '    ...

Función REDONDEAR

La función REDONDEAR en Excel nos ayuda a redondear un número a una cantidad de decimales  especificados. La cantidad de decimales especificados puede ser un número positivo, negativo o cero. Sintaxis de la función REDONDEAR La función REDONDEAR tiene dos argumentos obligatorios: Número ( obligatorio ): El número que va a ser redondeado. Núm_decimales ( obligatorio ): La cantidad de decimales a la que se desea redondear. Ejemplos de la función REDONDEAR En la celda A1 tengo el valor 16.475 y utilizaré la función REDONDEAR con diferentes valores para el segundo argumento de manera que podamos observar la diferencia. Cuando el segundo argumento de la función REDONDEAR es mayor a cero entonces el número se redondea a la cantidad de decimales especificada. Si colocamos un cero como segundo argumento, entonces se redondeará hacia el número entero más próximo. Por el contrario, si especificamos un número negativo, entonces la función REDONDEAR hace el redondeo h...