Excel no tiene una función predeterminada que muestre números como palabras en inglés en una hoja de cálculo, pero puede Agregar esta función pegando el código de la función SpellNumber siguiente en un módulo VBA (Visual Basic para aplicaciones). Esta función le permite convertir las cantidades de dólar y céntimos en palabras con una fórmula, de modo que 22,50 se leerá como Twenty-Two dólares y 50 céntimos. Esto puede ser muy útil si está usando Excel como una plantilla para imprimir cheques.
Si desea convertir valores numéricos a formato de texto sin mostrarlos como palabras, use la función texto en su lugar.
Nota: Microsoft proporciona ejemplos de programación para la ilustración únicamente, sin ninguna garantía ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad o idoneidad para un fin determinado. En este artículo se da por supuesto 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 procedimiento en particular. Sin embargo, no modificarán estos ejemplos para proporcionar una funcionalidad agregada ni crearán procedimientos que cumplan con sus necesidades específicas.
Crear la función SpellNumber para convertir números en palabras
-
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.
-
Haga clic en la pestaña Insertar y después en Módulo.
-
Copie las siguientes líneas de código.
Nota: Este código, que se conoce como función definida por el usuario (UDF), automatiza la tarea de convertir números en 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
-
Pegue las líneas de código en el cuadro Módulo1 (código).
-
Presione Alt + Q para volver a Excel. La función SpellNumber ya está lista para usar.
Nota: Esta función solo 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.
Usar la función SpellNumber en celdas individuales
-
Escriba la fórmula = SpellNumber(a1) en la celda en la que desea mostrar un número escrito, donde a1 es la celda que contiene el número que desea convertir. También puede escribir el valor como = SpellNumber (22.50) de forma manual.
-
Presione entrar para confirmar la fórmula.
Guardar el libro de la función SpellNumber
Excel no puede guardar un libro con funciones de macro en el formato de libro sin macros estándar (. xlsx). Si hace clic en Archivo > Guardar. Se abre el cuadro de diálogo Proyecto de VB. Haga clic en No.

Puede guardar el archivo como un libro Macro-Enabled de Excel (. xlsm) para mantener el archivo en el formato actual.
-
Haga clic en Archivo > Guardar como.
-
Haga clic en el menú desplegable Guardar como tipo y seleccione Excel Macro-Enabled libro.
-
Haga clic en Guardar.