Plantilla en Excel para convertir números a letras

En el desarrollo de aplicaciones y herramientas en Excel se hace necesario convertir en letras los valores en números que arroja Excel, lo que se puede hacer con cierta facilidad.

Convertir números a letras en Excel.

El señor Brehiner Moreno Zúñiga ha desarrollado una plantilla en Excel que convierte números enteros a letras, herramienta útil para el trabajo o como elemento de estudio de las diferentes sintaxis de Excel.

Descargar plantilla.

Por su parte, el señor Jairo Alfonso Mosquera Pereira nos envía una nueva plantilla en Excel que convierte números a letras.

Descargar herramienta.

Convertir números en letras mediante función personalizada.

Los códigos anteriores no requiere macros y funcionan en cualquier archivo de Excel, pero son soluciones complejas y personalizadas. Si requiere una solución más automatizada puede hacer uso de la siguiente función:


Function NumeroALetras(ByVal Numero As Double, Optional Moneda As String = "pesos", Optional Centimos As String = "centavos") As String
    ' Función para Excel que convierte números a letras
    ' Uso: =NumeroALetras(A1) o =NumeroALetras(B2, "dólares", "centimos")
    
    Dim Entero As Long, Decimales As Integer
    Dim ParteEntera As String, ParteDecimal As String
    
    ' Separar parte entera y decimal
    Entero = Int(Abs(Numero))
    Decimales = Round((Abs(Numero) - Entero) * 100, 0)
    
    ' Convertir parte entera
    If Entero = 0 Then
        ParteEntera = "cero " & Moneda
    Else
        ParteEntera = ConvertirEntero(Entero) & " " & IIf(Entero = 1, Moneda, Moneda & "s")
    End If
    
    ' Manejar negativo
    If Numero < 0 Then ParteEntera = "menos " & ParteEntera End If ' Convertir decimales si existen If Decimales > 0 Then
        ParteDecimal = " con " & ConvertirEntero(Decimales) & " " & IIf(Decimales = 1, Centimos, Centimos & "s")
    End If
    
    NumeroALetras = UCase(Left(ParteEntera, 1)) & Mid(ParteEntera, 2) & ParteDecimal
End Function

'--- Función auxiliar corregida ---
Private Function ConvertirEntero(ByVal Num As Long) As String
    Dim Unidades() As String, Decenas() As String, Centenas() As String
    Dim Miles As String, Millones As String
    
    ' Inicializar arrays
    Unidades = Split("|un|dos|tres|cuatro|cinco|seis|siete|ocho|nueve", "|")
    Decenas = Split("|diez|once|doce|trece|catorce|quince|dieciséis|diecisiete|dieciocho|diecinueve|veinte|treinta|cuarenta|cincuenta|sesenta|setenta|ochenta|noventa", "|")
    Centenas = Split("|cien|ciento|doscientos|trescientos|cuatrocientos|quinientos|seiscientos|setecientos|ochocientos|novecientos", "|")
    
    Select Case Num
        Case 0 To 9: ConvertirEntero = Unidades(Num)
        Case 10 To 19: ConvertirEntero = Decenas(Num - 9)
        Case 20: ConvertirEntero = "veinte"
        Case 21 To 29: ConvertirEntero = "veinti" & Unidades(Num - 20)
        Case 30 To 99:
            If Num Mod 10 = 0 Then
                ConvertirEntero = Decenas(10 + (Num \ 10) - 2)
            Else
                ConvertirEntero = Decenas(10 + (Num \ 10) - 2) & " y " & Unidades(Num Mod 10)
            End If
        Case 100: ConvertirEntero = "cien"
        Case 101 To 999:
            ConvertirEntero = Centenas(Num \ 100)
            If Num Mod 100 > 0 Then
                ConvertirEntero = ConvertirEntero & " " & ConvertirEntero(Num Mod 100)
            End If
        Case 1000 To 999999:
            Miles = ConvertirEntero(Num \ 1000)
            If Num \ 1000 = 1 Then
                Miles = "mil"
            Else
                Miles = Miles & " mil"
            End If
            If Num Mod 1000 > 0 Then
                ConvertirEntero = Miles & " " & ConvertirEntero(Num Mod 1000)
            Else
                ConvertirEntero = Miles
            End If
        Case 1000000 To 999999999:
            Millones = ConvertirEntero(Num \ 1000000)
            If Num \ 1000000 = 1 Then
                Millones = "un millón"
            Else
                Millones = Millones & " millones"
            End If
            If Num Mod 1000000 > 0 Then
                ConvertirEntero = Millones & " " & ConvertirEntero(Num Mod 1000000)
            Else
                ConvertirEntero = Millones
            End If
        Case Else: ConvertirEntero = "Número demasiado grande"
    End Select
    
    ' Eliminar espacios dobles
    ConvertirEntero = Application.WorksheetFunction.Trim(ConvertirEntero)
End Function

Para ello ir a la opción de programador, insertar módulo y pegar dicho código, luego debe guardar el archivo como Libro en Excel habilitado para macros (xlsm).

Para utilizar la función sólo ingresa la siguiente fórmula:

=NumeroALetras(A1)

Cambie A1 por la celda donde tiene el número que desea convertir en letras.

Forma de citar este artículo (APA):

Gerencie.com. (2020, octubre 8). Plantilla en Excel para convertir números a letras [Entrada de blog]. Recuperado de https://www.gerencie.com/plantilla-en-excel-para-convertir-numeros-a-letras.html

Recomendados.

Registro gratis en Gerencie.com

Regístrese y obtenga los siguientes beneficios:

  • Navegue por nuestro contenido con una menor cantidad de anuncios.
  • Cuando realice una pregunta será notificado en su correo al recibir respuesta.
  • Podrá hacernos preguntas en la sección de preguntas y respuestas.
  • Podrá agregar (Archivar) artículos y herramientas en línea a su sección de favoritos.
  • Podrá comunicarse con otros usuarios mediante mensajes privados.
  • Podrá publicar su perfil profesional en nuestro directorio de profesionales.
  • Podrá acceder a nuestra calculadora de pensiones gratuita.
  • Podrá acceder a la sección de recompensas por participar y aportar a la comunidad.

El registro es gratuito, lo mismo que todos los servicios y beneficios señalados en la lista anterior.

Regístrate aquí
Deje su opinión o su pregunta. Trataremos de darle respuesta.
Su comentario o pregunta será editada automáticaente por el sistema.

Regístrese para informarle cuando se responda su pregunta.

6 comentarios
  1. CAMI mayo 30 de 2025

    ¿Me podrían indicar la manera correcta de instalarlo y utilizar la fórmula? Porque yo lo instalo, pero al momento de buscar la fórmula no aparece y ya la busqué de todas las maneras posibles.

    Responder a CAMI
    • Avatar
      Gerencie.com en respuesta a @CAMI mayo 30 de 2025

      No se requiere instalar nada. Simplemente es un conjunto de fórmulas concatenadas que puede visualizar en la barra de fórmulas de cada celda.

      Nota: Hemos agregado una función para automatizar el proceso.

      Responder a Gerencie.com
  2. Guillermo diciembre 21 de 2023

    Perfecto, el código es excelente y aún más, ya que no utiliza macros. ¡Gracias!

    Responder a Guillermo
    • Gbot
      Gbot en respuesta a @Guillermo febrero 3 de 2025

      Agradezco su comentario, sin embargo, no tengo información sobre el código al que se refiere. Si tiene alguna pregunta específica relacionada con la ley colombiana o algún tema en particular, estaré encantado de ayudarle.

      Responder a Gbot
  3. JORGE ENRIQUE septiembre 12 de 2022

    ¿Podrías apoyarme con una fórmula en Excel o la manera de obtener el conteo de caracteres numéricos de una celda? Es decir, que si sumo 3 + 15 + 600, la fórmula me devuelva que son tres caracteres numéricos los que se sumaron. Espero contar con tu gran apoyo.

    Saludos,
    Enrique

    Responder a JORGE ENRIQUE
    • Gbot
      Gbot en respuesta a @JORGE ENRIQUE febrero 3 de 2025

      Para contar los caracteres numéricos en una celda de Excel, puede utilizar la siguiente fórmula:

      “`excel
      =SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(A1,”0″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”1″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”2″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”3″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”4″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”5″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”6″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”7″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”8″,””)) + LEN(A1)-LEN(SUBSTITUTE(A1,”9″,””)))
      “`

      En esta fórmula, se asume que los datos que desea analizar están en la celda A1. La fórmula cuenta cada uno de los dígitos del 0 al 9 y suma su cantidad para obtener el total de caracteres numéricos.

      Si tiene más preguntas o necesita más ayuda, no dude en consultarme.

      Responder a Gbot