InicioCiencia EducacionConvierte números a letras en Excel

Convierte números a letras en Excel

Ciencia Educacion10/16/2012



Lord Roy Vader
presenta:


Convierte números a letras en Microsoft Excel

Todas las versiones
Compatible también para Access, Word y Power Point

Este es el resultado que buscamos:



No existe una función de fábrica en Excel (o en Access) capaz de realizar la tarea. Se tiene que crear... o, como en este caso, copiar y pegar el siguiente código en un módulo de programación que debe ser habilitado desde la aplicación de Microsoft Office. Más abajo en el post encontrarás los pasos para usar dicho entorno si nunca lo has utilizado previamente.

Primero, el código de programación en Visual Basic for Applications (VBA) que debes copiar y pegar:


Function Convierte_a_letra(Cantidad As Currency) As String
    'Esta función recibe una cantidad numérica como argumento
    'y devuelve la misma cantidad pero convertida
    'a letras en el formato de las leyes mexicanas
    'para expedición de facturas, notas de venta, pagarés y cheques
    
    'Elaboró
    'Roy Vader
    'roy.lobo@live.com.mx

    Dim Cantidad_con_letra As String
    Dim Roy_Vader As Byte
    Dim Cantidad_texto As String
    
    Cantidad_texto = Format(Abs(Cantidad), "000000000.00")
    Cantidad_con_letra = ""
    For Roy_Vader = 1 To 9
        Select Case Roy_Vader
        
        Case 1, 4, 7 'Centenas
        
            If Roy_Vader = 4 Then
                If Val(Mid(Cantidad_texto, Roy_Vader - 3, 3)) > 1 Then
                    Cantidad_con_letra = Cantidad_con_letra & "millones "
                ElseIf Val(Mid(Cantidad_texto, Roy_Vader - 3, 3)) = 1 Then
                    Cantidad_con_letra = Cantidad_con_letra & "millón "
                End If
            End If
            
            If Roy_Vader = 7 Then
                If Val(Mid(Cantidad_texto, Roy_Vader - 3, 3)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "mil "
                End If
            End If
            
            Select Case Mid(Cantidad_texto, Roy_Vader, 1)
            Case "9"
                Cantidad_con_letra = Cantidad_con_letra & "novecientos "
            Case "8"
                Cantidad_con_letra = Cantidad_con_letra & "ochocientos "
            Case "7"
                Cantidad_con_letra = Cantidad_con_letra & "setecientos "
            Case "6"
                Cantidad_con_letra = Cantidad_con_letra & "seiscientos "
            Case "5"
                Cantidad_con_letra = Cantidad_con_letra & "quinientos "
            Case "4"
                Cantidad_con_letra = Cantidad_con_letra & "cuatrocientos "
            Case "3"
                Cantidad_con_letra = Cantidad_con_letra & "trescientos "
            Case "2"
                Cantidad_con_letra = Cantidad_con_letra & "doscientos "
            Case "1"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 2)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "ciento "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "cien "
                End If
            End Select 'Posicion centanas
            
        Case 2, 5, 8 'Decenas
            Select Case Mid(Cantidad_texto, Roy_Vader, 1)
            Case "9"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "noventa y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "noventa "
                End If
            Case "8"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "ochenta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "ochenta "
                End If
            Case "7"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "setenta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "setenta "
                End If
            Case "6"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "sesenta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "sesenta "
                End If
            Case "5"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "cincuenta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "cincuenta "
                End If
            Case "4"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "cuarenta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "cuarenta "
                End If
            Case "3"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "treinta y "
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "treinta "
                End If
            Case "2"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 0 Then
                    Cantidad_con_letra = Cantidad_con_letra & "veinti"
                Else
                    Cantidad_con_letra = Cantidad_con_letra & "veinte "
                End If
            Case "1"
                If Val(Mid(Cantidad_texto, Roy_Vader + 1, 1)) > 5 Then
                    Cantidad_con_letra = Cantidad_con_letra & "dieci"
                Else
                    Select Case Mid(Cantidad_texto, Roy_Vader + 1, 1)
                    Case "5"
                        Cantidad_con_letra = Cantidad_con_letra & "quince "
                    Case "4"
                        Cantidad_con_letra = Cantidad_con_letra & "catorce "
                    Case "3"
                        Cantidad_con_letra = Cantidad_con_letra & "trece "
                    Case "2"
                        Cantidad_con_letra = Cantidad_con_letra & "doce "
                    Case "1"
                        Cantidad_con_letra = Cantidad_con_letra & "once "
                    Case "0"
                        Cantidad_con_letra = Cantidad_con_letra & "diez "
                    End Select 'Posicion unidades
                End If
                
            End Select 'Posicion decenas
            
        Case 3, 6, 9 'Unidades
            Select Case Mid(Cantidad_texto, Roy_Vader, 1)
            Case "9"
                Cantidad_con_letra = Cantidad_con_letra & "nueve "
            Case "8"
                Cantidad_con_letra = Cantidad_con_letra & "ocho "
            Case "7"
                Cantidad_con_letra = Cantidad_con_letra & "siete "
            Case "6"
                Cantidad_con_letra = Cantidad_con_letra & "seis "
            Case "5"
                If Mid(Cantidad_texto, Roy_Vader - 1, 1) <> "1" Then
                    Cantidad_con_letra = Cantidad_con_letra & "cinco "
                End If
            Case "4"
                If Mid(Cantidad_texto, Roy_Vader - 1, 1) <> "1" Then
                    Cantidad_con_letra = Cantidad_con_letra & "cuatro "
                End If
            Case "3"
                If Mid(Cantidad_texto, Roy_Vader - 1, 1) <> "1" Then
                    Cantidad_con_letra = Cantidad_con_letra & "tres "
                End If
            Case "2"
                If Mid(Cantidad_texto, Roy_Vader - 1, 1) <> "1" Then
                    Cantidad_con_letra = Cantidad_con_letra & "dos "
                End If
            Case "1"
                If Mid(Cantidad_texto, Roy_Vader - 1, 1) <> "1" Then
                    Cantidad_con_letra = Cantidad_con_letra & "un "
                End If
            End Select 'Posicion unidades
            
        End Select 'Posicion
    Next
    If Val(Mid(Cantidad_texto, 1, 9)) > 1 Then
        Cantidad_con_letra = Cantidad_con_letra & "pesos "
    ElseIf Val(Mid(Cantidad_texto, 1, 9)) = 1 Then
        Cantidad_con_letra = Cantidad_con_letra & "peso "
    Else
        Cantidad_con_letra = Cantidad_con_letra & "cero pesos "
    End If
    
    Cantidad_con_letra = Cantidad_con_letra & Right(Cantidad_texto, 2) & "/100 M. N."
    
    Convierte_a_letra = Cantidad_con_letra
End Function



Pasos para crear (o insertar) funciones nuevas en aplicaciones de Office:

1. Presiona la combinación de teclas ALT + F11 o, si la tienes disponible, busca la pestaña "Programador" y dale clic en el botón de comando "Visual Basic". En una instalación estándar de Microsoft Office no se encuentra habilitada esta opción, tendrías que habilitarla por tu cuenta en las opciones de configuración de las barras de herramientas. En cualquier caso ALT + F11 te fuiciona la tengas habilitada o no.



2. Lo anterior abrirá el Entorno de Desarrollo de VBA del programa de Microsoft Office en que te encuentres.



3. El siguiente paso consiste en crear un Módulo de programación para escribir (o como en este caso, nada más pegar) nuestra función. Puede ser de esta manera:



... o de esta otra



4. En cualquiera de los dos casos, el resultado será el siguiente:



5. Este es el espacio donde, simplemente, se pega o se escribe el código de una función, en el ejemplo, una función simple que devuelve un valor constante:



6. Desde este momento y sin necesidad de guardar la función ya se encuentra disponible. En el caso de Excel puedes encontrar la función en el menú "Fórmulas" y en el comando "Insertar función":



7. Busca la función que creaste en la categoría "Definidas por el usuario"



8. ... y la seleccionas:



9. Al darle clic en "Aceptar" te pedirá los argumentos que requiera la función si la función no los tiene, simplemente hay que darle clic en "Aceptar" otra vez. En el caso de la función "Convierte Números a letras" sí se solicitirá el valor numérico que ha de convertirse.



10. ¡Y listo!



Te puedes evitar desde el paso 6 al 10 si simplemente escribes en la celda la función con su argumento cuando es requerido, en el caso del ejemplo, escribirías en la celda lo siguiente:

=Gravedad_Terrestre()

En el caso de la función que nos ocupa en este post, escribirías lo siguiente

=Convierte_a_letra(A1)

... asumiendo que en la celda A1 se encuentra el número a ser convertido.


En las versiones 2007 y 2010 de Excel, recuerda al final guardar tu libro "Habilitado para Macros". También, al abrirlo tendrás que habilitar las macros pues las funciones se escriben en el mismo lenguaje. Ta saldría normalmente esta ventana al abrir tu libro:



... dale clic al botón "Opciones" y luego a la opción "Habilitar contenido"



Dale clic al botón "Aceptar" y ¡listo! Tu función se encuentra disponible nuevamente.




Espero haya sido útil para ti este post. Esta función devuelve el formato mexicano de conversión a letras de una cantidad monetaria usado en nuestro sistema de finanzas. Si deseas una función que aplique para tu país mándame ejemplos de cómo lo utilizan en tu nación y con gusto la implemento en este código. Te agradeceré la ayuda.

Te recomiendo las siguientes comunidades:







"May the force be with you"
Datos archivados del Taringa! original
88puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

r
roy_vader🇦🇷
Usuario
Puntos0
Posts12
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.