Aprende ha convertir números a letras, texto o palabras en excel y el texto es en ingles, a través de una MACRO.
La macro se utiliza a través de una función creada el cual nos permitirá con una mayor facilidad su operación y esta herramienta nos va permitir utilizarla en las celdas que se necesita colocar el valor en texto por ejemplo en una factura se debe colocar el valor en número y en texto
¿Como convertir números a letras en excel?
Con esta macro nos va permitir realizar lo siguiente:
- Convertir un número de cualquier dígito y tamaño en excel
- Se utilizará la macro mediante una función creada
- La función se puede arrastra para cambiar a texto varias celdas a la ves.
Revisa el video para que aprendas a utilizar la macro y en la parte final del articulo se encuentra el enlace para que la puedas descargar
La función creada se llama CONVERTIRNUMINGLES y funciona como todas las funciones seleccionamos la celda que queremos convertir a texto, como se muestra en la imagen. Y presionamos enter.
Si arrastramos la celda obtenemos la conversión de todas la celdas en texto.
En la macro vamos a encontrar lo siguiente.
Nombramos las variables todas como texto
Function CONVERTIRNUMINGLES(Numero As Double, Optional CentimosEnLetra As Boolean) As String
Dim Moneda As String
Dim Monedas As String
Dim Centimo As String
Dim Centimos As String
Dim Preposicion As String
Dim NumCentimos As Double
Dim Letra As String
Const Maximo = 1999999999999.99
Luego asignamos los parámetros
Moneda = "Peso" 'Nombre de Moneda (Singular)
Monedas = "Pesos" 'Nombre de Moneda (Plural)
Centimo = "Centavo" 'Nombre de Céntimos (Singular)
Centimos = "Centavos" 'Nombre de Céntimos (Plural)
Preposicion = "Con" 'Preposición entre Moneda y Céntimos
Validamos que el Numero está dentro de los límites y colocamos la función si es = 1 entonces coloquemos la leyenda moneda de lo contrario colocar monedas
'Validar que el Numero está dentro de los límites
If (Numero >= 0) And (Numero <= Maximo) Then
Letra = NUMERORECURSIVO((Fix(Numero))) 'Convertir el Numero en letras
'Si Numero = 1 agregar leyenda Moneda (Singular)
If (Numero = 1) Then
Letra = Letra & " " '& Moneda
'De lo contrario agregar leyenda Monedas (Plural)
Else
Letra = Letra & " " '& Monedas
End If
'NumCentimos = Round((Numero - Fix(Numero)) * 100) 'Obtener los centimos del Numero
NumCentimos = Round((Numero - Fix(Numero)) * 10) 'Obtener los centimos del Numero
'Si NumCentimos es mayor a cero inicar la conversión
If NumCentimos >= 0 Then
'Si el parámetro CentimosEnLetra es VERDADERO obtener letras para los céntimos
If CentimosEnLetra Then
Letra = Letra & " " & Preposicion & " " & NUMERORECURSIVO(Fix(NumCentimos)) 'Convertir los céntimos en letra
'Si NumCentimos = 1 agregar leyenda Centimos (Singular)
If (NumCentimos = 1) Then
Letra = Letra & " " '& Centimo
'De lo contrario agregar leyenda Centimos (Plural)
Else
Letra = Letra & " " '& Centimos
End If
'De lo contrario mostrar los céntimos como número
Else
If NumCentimos < 10 Then
'Letra = Letra & " 0" & NumCentimos & "/100"
Else
'Letra = Letra & " " & NumCentimos & "/100"
End If
End If
End If
If Right(Letra, 9) = "Millones " Then
Letra = Letra & "de "
End If
'Regresar el resultado final de la conversión
CONVERTIRNUMINGLES = Letra & " pesos"
Else
'Si el Numero no está dentro de los límites, entivar un mensaje de error
CONVERTIRNUMINGLES = "ERROR: El número excede los límites."
End If
End Function
Function NUMERORECURSIVO(Numero As Long) As String
Dim Unidades, Decenas, Centenas
Dim Resultado As String
'**************************************************
' Nombre de los números
'**************************************************
Unidades = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", "Twenty", "Twenty One", "Twenty Two", "Twenty Three", "Twenty Four", "Twenty Five", "Twenty Six", "Twenty Seven", "Twenty Eight", "Twenty Nine")
Decenas = Array("", "Teen", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety", "One Hundred")
Centenas = Array("", "One Hundred", "Two Hundred", "Three Hundred", "Four Hundred", "Five Hundred", "Six Hundred", "Seven Hundred", "Eight Hundred", "Nine Hundred")
'**************************************************
Select Case Numero
Case 0
Resultado = "Cero"
Case 1 To 29
Resultado = Unidades(Numero)
Case 30 To 100
Resultado = Decenas(Numero \ 10) + IIf(Numero Mod 10 <> 0, " and " + NUMERORECURSIVO(Numero Mod 10), "")
Case 101 To 999
Resultado = Centenas(Numero \ 100) + IIf(Numero Mod 100 <> 0, " " + NUMERORECURSIVO(Numero Mod 100), "")
Case 1000 To 1999
Resultado = "One Thousand" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
Case 2000 To 999999
Resultado = NUMERORECURSIVO(Numero \ 1000) + " Thousand" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
Case 1000000 To 1999999
Resultado = "One Million" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
Case 2000000 To 1999999999
Resultado = NUMERORECURSIVO(Numero \ 1000000) + " Millions" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
End Select
NUMERORECURSIVO = Resultado
End Function
En el siguiente ENLACE puedes DESCARGAR la macro para convertir números a letras en excel.
Seguramente quieres sabes más acerca de Excel, no te olvides darte una vuelta por las siguientes secciones disponibles para ti de manera gratuita: