Excel: Fórmula para escribir números en letras

Excel: Fórmula para escribir números en letras

Muchas veces utilizamos libros en Excel, o formularios, que requieren escribir en letras las cantidades en alguna de las casillas lo que resulta algo tedioso. Sin embargo, existe una forma, a través de una macro, de realizar este proceso de manera automática, el cual veremos a continuación:

1- Abriremos el archivo deseado y posteriormente, nos dirigimos al programador de VBA (Alt + F11)

2- Nos dirigimos a la opción de menú “Insertar”, y seleccionamos “Módulo”. Se inserta el módulo y se abre la pantalla de escritura de código.

3- En la pantalla de escritura del código, copiamos lo siguiente:

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 & » » & Range(«E1″) & » CON » & Format(Str(lyCentavos), «00») & «/100 » & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function

4- Una vez hecho esto, se procede a guardar y cerrar la pantalla de escritura. La fórmula creada tiene el nombre de “NumLetras”, por lo cual, en Excel, la podremos utilizar como una fórmula cualquiera en la celda que deseemos por ejemplo así:

Como se puede observar, en la celda B3, escribimos la nueva fórmula disponible en nuestro Excel para el monto en letras, como cualquier otra fórmula: =NumLetras(B1). En nuestro caso, B1 es la celda a evaluar, con el monto en números para que la fórmula evalúe.

Importante acotar que, al final de la macro, se observa lo siguiente: “NumLetras = NumLetras & » » & Range(«E1») …”  En este caso, el Range(“E1”) debe ser la celda con la moneda, para que el monto en letras también incluya la moneda, en nuestro caso, dicho dato se encuentra en la E1, por lo cual, si usted tiene esta información en otra celda, debe modificar este dato en la macro.

Recuerde que para que esta macro funcione, el Excel debe guardarse en formato de “Libro de Excel habilitado para macros”.

Esperamos les sea útil esta nueva fórmula de nuestro Excel.

¡A divertirse!

Lic. Jorge Castillo Calderón
Contaduría Pública
CPI

Share this...
Ir arriba