Tabla de contenidos
Número a letras
Convertir números a letras en Excel es una tarea que muchos usuarios emplean, pero la herramienta aún no tiene una función que nos permita hacer esto fácilmente, por lo que necesitamos crear una función personalizada para hacerlo.
Está función que se mostrará es soportado para la mayoría de países, al final de este artículo te mostraré cómo cambiar la función para mostrar el nombre de la moneda de su país, porque la función predeterminada es mostrar «Sol», que es la moneda que corresponde a Perú.
Mostrar pestaña programador
La pestaña Programador no se muestra de forma predeterminada, pero puede agregarla a la cinta de opciones.
- En la pestaña Archivo, vaya a Opciones> Personalizar cinta de opciones.
- En Personalizar la cinta de opciones y Pestañas principales, active la casilla Programador.
Después de mostrar la pestaña, la pestaña Programador permanece visible, a menos que desactive la casilla o tenga que volver a instalar Microsoft Office programa.
La pestaña Desarrollador es el lugar al que puede ir cuando quiera hacer o usar lo siguiente:
- Escribir macros.
- Ejecutar macros previamente grabadas.
- Usar comandos XML.
- Usar controles ActiveX.
- Crear aplicaciones para usar con programas de Microsoft Office.
- Usar controles de formularios en Microsoft Excel.
- Trabajar con ShapeSheet en Microsoft Visio.
- Crear nuevas formas y galerías de símbolos en Microsoft Visio.
Accediendo visual basic en Excel
Una vez que activamos la pestaña de programador, nos dirigimos a la opción Visual Basic, dentro de ello ubicamos nuestro proyecto en el caso que tenga varios, para nuestro caso se llama Proverbio 1 Luxor.xlsm, añadimos un nuevo modulo, pude renombrarlo o dejarlo por defecto.
Es importante considerar que una vez culminado el archivo Excel se tiene que guardar con extensión para macros.
Código de número a letras
En el módulo nuevo que creo, dentro de ella emplear el siguiente código, luego le damos en guardar.
Se está empleando una función llamado LuxorLetras que pide 3 parámetros unos obligatoria y 2 opcionales, el primero es el valor del número, las otras 2 son la descripción de la moneda del país en singular o plural.
Function LuxorLetras(Valor As Currency, Optional MonSin As String = "SOL", Optional MonPlu As String = "SOLES") As String
Dim Cantidad As Currency
Dim Centimos As Currency
Dim Digito As Byte
Dim PrimerDigito As Byte
Dim SegundoDigito As Byte
Dim TercerDigito As Byte
Dim Bloque As String
Dim NroBloque As Byte
Dim Unidades As Variant
Dim Decenas As Variant
Dim Centenas As Variant
Dim X As Variant
Dim ValorEntero As Long
Dim ValorOriginal As Double
BloqueCero = 0
Valor = Round(Valor, 2)
Cantidad = Int(Valor)
ValorEntero = Cantidad
Centimos = (Valor - Cantidad) * 100
Unidades = 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")
Decenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
Centenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
NroBloque = 1
Do
PrimerDigito = 0
SegundoDigito = 0
TercerDigito = 0
Bloque = ""
BloqueCero = 0
For X = 1 To 3
Digito = Cantidad Mod 10
If Digito <> 0 Then
Select Case X
Case 1
Bloque = " " & Unidades(Digito - 1)
PrimerDigito = Digito
Case 2
If Digito <= 2 Then
Bloque = " " & Unidades((Digito * 10) + PrimerDigito - 1)
Else
Bloque = " " & Decenas(Digito - 1) & IIf(PrimerDigito <> 0, " Y", Null) & Bloque
End If
SegundoDigito = Digito
Case 3
Bloque = " " & IIf(Digito = 1 And PrimerDigito = 0 And SegundoDigito = 0, "CIEN", Centenas(Digito - 1)) & Bloque
TercerDigito = Digito
End Select
Else
BloqueCero = BloqueCero + 1
End If
Cantidad = Int(Cantidad / 10)
If Cantidad = 0 Then
Exit For
End If
Next X
Select Case NroBloque
Case 1
LuxorLetras = Bloque
Case 2
LuxorLetras = Bloque & IIf(BloqueCero = 3, Null, " MIL") & LuxorLetras
Case 3
LuxorLetras = Bloque & IIf(PrimerDigito = 1 And SegundoDigito = 0 And TercerDigito = 0, " MILLON", " MILLONES") & LuxorLetras
End Select
NroBloque = NroBloque + 1
Loop Until Cantidad = 0
If Valor >= 1000000000 Then
Dim millardos As Currency
Dim millarodsInt As Integer
Dim letras_Millardos As String
millarodsInt = Int(Valor / 1000000000)
millardos = millarodsInt
letras_Millardos = Replace(Trim(LuxorLetras(millardos)), "00/100", IIf(millarodsInt = 1, "MIL MILLONES", "MIL MILLONES"))
LuxorLetras = letras_Millardos & LuxorLetras
End If
LuxorLetras = Trim(LuxorLetras) & " " & Format(Str(Centimos), "00") & "/100 " & IIf(ValorEntero = 1, MonSin, MonPlu)
End Function
Empleando función en la hoja de Excel
Una vez de realizar en el módulo que se creo y lo guardamos, nos dirigimos a la hoja de Excel y simplemente cómo una formula mas introducimos la función de la siguiente manera, en la celda donde desea visualizar el texto ingresamos =LuxorLetras(Tu número) le das enter y te mostrará tu número convertido en letras.
Descargar ejemplo
En el siguiente enlace puede descargar el ejemplo que se efectuó. Proverbio 1 Luxor
En caso de argumentar o consultar emplear los comentarios para una mejor experiencia y seguir aprendiendo entre todos, recuerda que en VR Solutions Tec manejamos diversos tipos de servicios que está a tu disposición, esperemos que este contenido sea de apoyo.
2 respuestas
Great article.
Muchas gracias por el interés a nuestro contenido, saludos.