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!

La función ESPACIOS en Excel

La función ESPACIOS en Excel La función ESPACIOS en Excel remueve los espacios de un texto a excepción del espacio sencillo entre cada palabra. Si tenemos una base de datos en Excel muy grande y removemos los espacios excedentes de los textos podremos contribuir a minimizar el tamaño del archivo. Sintaxis de la función ESPACIOS La función ESPACIOS tiene un solo parámetro: Texto (obligatorio): El texto al que deseamos quitar los espacios excedentes. La función ESPACIOS removerá todos los espacios a la izquierda y a la derecha del texto y reducirá los espacios entre palabras a un solo espacio sencillo. Ejemplos de la función ESPACIOS En la siguiente fórmula podrás observar que estoy especificando un texto como argumento de la función ESPACIOS el cual tienen múltiples espacios al inicio y final del texto. ESPACIOS(”          texto simple     “) = “texto simple” El resultado de esta fórmula será la cadena de texto sin los espacios del inicio y final. Ahora

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

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órmulas: A

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.

Sumar datos filtrados

Muchas veces queremos saber el importe de datos filtrados, para eso necesitamos   la formula "SUBTOTALES" esta funcion suma solo los datos visibles ya que con la funcion SUMA extrae todos los datos filtrados. Aqui te dejo un ejemplo,espero que sea de tu utilidad. -------DLG

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 encuen

Sumar solo número sin considerar textos

Hace unos minutos hicieron una consulta ¿ Cual es la fórmula para sumar solo números sin considerar textos? Aqui esta la solución aplica esta formula =SUMAPRODUCTO( "MATRIZ") Saludos DLG

La función DIAS.LAB en Excel

La función DIAS.LAB en Excel nos ayuda a obtener el número de días laborables entre dos fechas determinadas. La función DIAS.LAB nos permite especificar un conjunto de días de vacaciones que serán excluidos de los días laborables contabilizados. Sintaxis de la función DIAS.LAB A continuación una descripción de los argumentos de la función DIAS.LAB : Fecha_inicial ( obligatorio ): Es la fecha a partir de la cual se comenzarán a contar los días laborables. Fecha_final ( obligatorio ): La fecha que marca el final de la contabilización de días laborables. Vacaciones ( opcional ): Conjunto de una o varias fechas que serán excluidas del calendario de días laborables. La función DIAS.LAB contabiliza los días laborables de lunes a viernes y excluye los fines de semana  (sábado y domingo). Ejemplos de la función DIAS.LAB En el siguiente ejemplo podrás observar el número de días laborables que existen entre el  1 de enero del 2012 y el 22 de febrero del 2012. Con este resu