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"