Convertir números en palabras

Nota: Nos gustaría proporcionarle el contenido de ayuda actual lo más rápido posible en su idioma. Esta página se ha traducido mediante un sistema automático y es posible que contenga imprecisiones o errores gramaticales. Nuestro objetivo es que este contenido sea útil para usted. ¿Puede informarnos sobre si la información le ha sido útil al final de la página? Aquí tiene el artículo en inglés para que pueda consultarlo fácilmente.

Excel no dispone de una función de forma predeterminada que muestra los números como palabras en inglés en una hoja de cálculo, pero puede agregar esta capacidad pegando el siguiente código de la función SpellNumber en un módulo de VBA (Visual Basic para aplicaciones). Esta función le permite convertir importes de moneda y ciento para palabras con una fórmula para que 22,50 sería dos veinte dólares y cincuenta centavos. Esto puede ser muy útil si usa Excel como una plantilla para imprimir cheques.

Si desea convertir valores numéricos en formato de texto sin mostrarlos como palabras, use la función texto en su lugar.

Nota: Microsoft proporciona ejemplos de programación fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, pero no se limita a las garantías de comerciabilidad o idoneidad para un propósito particular. En este artículo se supone que está familiarizado con el lenguaje de programación VBA y con las herramientas que se usan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un determinado procedimiento. Sin embargo, no modificarán estos ejemplos para ofrecer mayor funcionalidad o crear procedimientos para satisfacer necesidades específicas.

Crear la función SpellNumber para convertir números en palabras

  1. Use el método abreviado de teclado Alt + F11 para abrir el Editor de Visual Basic (VBE).

    Nota: También puede obtener acceso al Editor de Visual Basic si muestra la pestaña Programador en la cinta.

  2. Haga clic en la pestaña Insertar y después en Módulo.

    En el menú Insertar, haga clic en Módulo.
  3. Copie las siguientes líneas de código.

    Nota: Se conoce como una Función definida por el usuario (UDF), este código automatiza la tarea de convertir los números al texto en toda la hoja de cálculo.

    Option Explicit
    
    'Main Function
    
    Function SpellNumber(ByVal MyNumber)
    
    Dim Dollars, Cents, Temp
    
    Dim DecimalPlace, Count
    
    ReDim Place(9) As String
    
    Place(2) = " Thousand "
    
    Place(3) = " Million "
    
    Place(4) = " Billion "
    
    Place(5) = " Trillion "
    
    ' String representation of amount.
    
    MyNumber = Trim(Str(MyNumber))
    
    ' Position of decimal place 0 if none.
    
    DecimalPlace = InStr(MyNumber, ".")
    
    ' Convert cents and set MyNumber to dollar amount.
    
    If DecimalPlace > 0 Then
    
    Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2))
    
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    
    End If
    
    Count = 1
    
    Do While MyNumber <> ""
    
    Temp = GetHundreds(Right(MyNumber, 3))
    
    If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
    
    If Len(MyNumber) > 3 Then
    
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    
    Else
    
    MyNumber = ""
    
    End If
    
    Count = Count + 1
    
    Loop
    
    Select Case Dollars
    
    Case ""
    
    Dollars = "No Dollars"
    
    Case "One"
    
    Dollars = "One Dollar"
    
    Case Else
    
    Dollars = Dollars & " Dollars"
    
    End Select
    
    Select Case Cents
    
    Case ""
    
    Cents = " and No Cents"
    
    Case "One"
    
    Cents = " and One Cent"
    
    Case Else
    
    Cents = " and " & Cents & " Cents"
    
    End Select
    
    SpellNumber = Dollars & Cents
    
    End Function
    
    
    ' Converts a number from 100-999 into text
    
    Function GetHundreds(ByVal MyNumber)
    
    Dim Result As String
    
    If Val(MyNumber) = 0 Then Exit Function
    
    MyNumber = Right("000" & MyNumber, 3)
    
    ' Convert the hundreds place.
    
    If Mid(MyNumber, 1, 1) <> "0" Then
    
    Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    
    End If
    
    ' Convert the tens and ones place.
    
    If Mid(MyNumber, 2, 1) <> "0" Then
    
    Result = Result & GetTens(Mid(MyNumber, 2))
    
    Else
    
    Result = Result & GetDigit(Mid(MyNumber, 3))
    
    End If
    
    GetHundreds = Result
    
    End Function
    
    
    ' Converts a number from 10 to 99 into text.
    
    
    Function GetTens(TensText)
    
    Dim Result As String
    
    Result = "" ' Null out the temporary function value.
    
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    
    Select Case Val(TensText)
    
    Case 10: Result = "Ten"
    
    Case 11: Result = "Eleven"
    
    Case 12: Result = "Twelve"
    
    Case 13: Result = "Thirteen"
    
    Case 14: Result = "Fourteen"
    
    Case 15: Result = "Fifteen"
    
    Case 16: Result = "Sixteen"
    
    Case 17: Result = "Seventeen"
    
    Case 18: Result = "Eighteen"
    
    Case 19: Result = "Nineteen"
    
    Case Else
    
    End Select
    
    Else ' If value between 20-99...
    
    Select Case Val(Left(TensText, 1))
    
    Case 2: Result = "Twenty "
    
    Case 3: Result = "Thirty "
    
    Case 4: Result = "Forty "
    
    Case 5: Result = "Fifty "
    
    Case 6: Result = "Sixty "
    
    Case 7: Result = "Seventy "
    
    Case 8: Result = "Eighty "
    
    Case 9: Result = "Ninety "
    
    Case Else
    
    End Select
    
    Result = Result & GetDigit _
    
    (Right(TensText, 1)) ' Retrieve ones place.
    
    End If
    
    GetTens = Result
    
    End Function
    
    
    ' Converts a number from 1 to 9 into text.
    
    Function GetDigit(Digit)
    
    Select Case Val(Digit)
    
    Case 1: GetDigit = "One"
    
    Case 2: GetDigit = "Two"
    
    Case 3: GetDigit = "Three"
    
    Case 4: GetDigit = "Four"
    
    Case 5: GetDigit = "Five"
    
    Case 6: GetDigit = "Six"
    
    Case 7: GetDigit = "Seven"
    
    Case 8: GetDigit = "Eight"
    
    Case 9: GetDigit = "Nine"
    
    Case Else: GetDigit = ""
    
    End Select
    
    End Function
  4. Pegue las líneas de código en el cuadro Módulo1 (código).

    Código pegado en el cuadro Módulo1 (código).
  5. Presione Alt + Q para volver a Excel. La función SpellNumber ahora está lista para usar.

    Nota: Esta función sólo funciona para el libro actual. Para usar esta función en otro libro, debe repetir los pasos para copiar y pegar el código en ese libro.

Principio de página

Usar la función SpellNumber en celdas individuales

  1. Escriba la fórmula = SpellNumber (A1) en la celda donde desee que aparezca un número, donde A1 es la celda que contiene el número que desea convertir. Puede escribir manualmente el valor como = SpellNumber(22.50).

  2. Presione ENTRAR para confirmar la fórmula.

Principio de página

Guardar el libro de la función SpellNumber

Excel no puede guardar un libro con funciones de macros en el formato de libro sin macros estándar (.xlsx). Si hace clic en archivo > Guardar. Se abrirá un cuadro de diálogo de proyecto de VB. Haga clic en No.

En el cuadro de diálogo Proyecto de VB, haga clic en No.

Puede guardar el archivo como un Libro de Excel habilitado para macros (.xlsm) para mantener el archivo en su formato actual.

  1. Haga clic en Archivo > Guardar como.

  2. Haga clic en el menú desplegable Guardar como tipo y seleccione el Libro de Excel habilitado para macros.

  3. Haga clic en Guardar.

Principio de página

Vea también

Función TEXTO

Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×