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

Validación masiva de RFC's de contribuyentes para el CFDI 4.0

Si eres Contador o has manejado la plataforma del SAT entonces creo que estamos hablando el mismo lenguaje, y como siempre Soluciones MS Excel VBA , busca automatizar tu trabajo y que tu día sea mucho mas productivo. Te dejo un archivo de Excel en donde puedes crear el archivo de texto de forma automatizada tal cual como solicita el SAT: El funcionamiento de esta herramienta es relativamente fácil de utilizar, basta con pegar la información a partir de la celda ( B1, C1 y D1 ) , en donde la celda: B = RFC C = Nombre D = Código Postal si no cumple con uno de estos criterios, nos marca el siguiente mensaje: Cumpliendo con los criterios ya mencionados, basta con darle Click en la opción Exportar: Y de forma automática genera el archivo de texto que se llama que por default lo guarda según en donde tengas esta herramienta.   Descargar Herramienta Nota: Probablemente te aparezca algún mensaje que la macro se ha bloqueado , y para que funcione la herramienta sigue los pasos que se en...

Pasos a seguir para permitir que las macros de VBA se ejecuten en archivos

Las macros de internet se bloquearán de forma predeterminada en Office. Las macros de VBA son una forma común en que los actores malintencionados obtienen acceso para implementar malware y ransomware. Por tanto, para ayudar a mejorar la seguridad en Office, se ha cambiado el comportamiento predeterminado de las aplicaciones de Office para bloquear macros en archivos de Internet. Con este cambio, cuando los usuarios abren un archivo que procede de Internet (por ejemplo, datos adjuntos de correo electrónico) y ese archivo contiene macros, se muestra el siguiente mensaje:  Para que funcione las macros, hay que seguir estos pasos: Click de derecho al Archivo y propiedades:    y te aparecerá esta ventana, le activas el check para desbloquear, Aceptar y listo :   Importante: Realizar este proceso solamente si conoces el origen del archivo, no nos hacemos responsable si en algún momento sufre algún daño tu equipo.

Lista para validación de datos en Excel

Cuando compartes tus libros de Excel con otras personas y ellos introducen información en las hojas que has preparado con tanto esfuerzo, es de suma importancia validar los datos de manera que puedas prevenir cualquier error con las fórmulas o alguna interpretación equivocada al momento de realizar un análisis de la información. Afortunadamente Excel tiene herramientas de validación de datos que nos permitirán validar la información al momento que es introducida en una celda. Este grupo de comandos se encuentra en la ficha Datos y dentro del grupo Herramientas de datos . En esta ocasión centraremos nuestra atención en una de las opciones de la Validación de datos que es conocida como la lista de validación de datos y que convierte una celda común en una lista de opciones de las cuales el usuario podrá elegir alguna. Beneficios de la lista de validación Antes de explicar la creación y uso de las listas de validación de datos, me gustaría dar un ejemplo de los beneficio...

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

Validar Datos desde VBA con FOR

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

Aprende a crear filtros avanzados en excel

14 formas de acelerar y optimizar tus macros excel

Esta información es muy útil para quienes manejen el tema de  programación de macros excel.  ¿Tus macros van lentas? ¿Problemas a la hora de ejecutarlas? ¿Cuáles son las técnicas recomendadas? Cuando de  programación de macros excel  se trata, el tema de la eficiencia y la velocidad es clave. Hay 2 leyes fundamentales que hay que recordar: . a. Cuanto menos código tiene una macro mejor…¿por qué? Ayuda a que la macro se ejecute mucho más rápido Simplifica la tarea a la hora de modificar/ampliar/reparar la macro . b. Cuanto más rápido se ejecuta una macro mejor!…¿por qué? Mejora la experiencia del usuario No mantiene la PC ocupada tanto tiempo Respecto de usar menos código dependerá de las habilidades del  programador excel  en cuestión. Hemos visto infinidad de casos donde 30 o 40 líneas de código VBA se pueden resumir en 5 o 6 líneas (algo similar pasa con las fórmulas excel). Siempre hay macros o fórmulas que hacen la...

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) & " " '    ...

Consolidar varias hojas en una sola con Power Query

Te dejo un video para consolidar varias hojas en una sola con Power Query