Microsoft Excel es un gran programa para calcular esto y aquello. Fue desarrollado inicialmente para procesar grandes matrices de datos. Sin embargo, también permite crear registros contables como facturas, evaluaciones o balances de forma rápida y eficaz.
En los documentos de pago más o menos sólidos es necesario duplicar los valores numéricos con su forma verbal. Es mucho más difícil falsificar los números mecanografiados que los escritos a mano. Algún estafador puede intentar hacer 8000 de 3000, mientras que es casi imposible sustituir secretamente "tres" por "ocho".
Así que lo que se necesita no es sólo convertir los números en palabras en Excel (por ejemplo, 123,45 a "ciento veintitrés, cuarenta y cinco"), sino deletrear los dólares y centavos (por ejemplo, 29,95 dólares como "veintinueve dólares y noventa y nueve centavos" ), libras y peniques para GBP, euros y eurocents para EUR, etc.
Incluso las últimas versiones de Excel no tienen una herramienta integrada para deletrear números, por no hablar de las versiones anteriores. Pero eso es cuando Excel es realmente bueno. Siempre puedes mejorar su funcionalidad utilizando fórmulas en todas sus combinaciones, macros VBA o complementos de terceros.
Nota. Si lo que buscas es la conversión de números a texto, lo que significa que quieres que Excel vea tu número como texto, es una cosa un poco diferente. Para ello, puede utilizar la función TEXTO o algunas otras formas descritas en Cómo cambiar números a texto en Excel.
Convertir números en palabras utilizando la macro VBA SpellNumber
Como ya he mencionado, Microsoft no quería añadir una herramienta para esta tarea. Sin embargo, al ver que muchos usuarios la necesitaban, crearon y publicaron la macro VBA especial en su sitio web. La macro hace lo que su nombre SpellNumber sugiere. Todas las demás macros que he encontrado están basadas en el código de Microsoft.
Puedes encontrar la macro mencionada como "spellnumber formula". Sin embargo, no es una fórmula, sino una función de macro, o para ser más precisos Excel función definida por el usuario (UDF).
La opción spellnumber es capaz de escribir dólares y centavos. Si necesita una moneda diferente, puede cambiar "dólar" y "centavo" con el nombre de su moneda.
Si no eres un experto en VBA, a continuación encontrarás una copia del código. Si todavía no quiere o no tiene tiempo para resolver esto, utilice esta solución.
- Abra el libro de trabajo donde necesita deletrear los números.
- Pulse Alt+F11 para abrir la ventana del editor de Visual Basic.
- Si tiene varios libros abiertos, compruebe que el libro de trabajo necesario está activo utilizando la lista de proyectos en la esquina superior izquierda del editor (uno de los elementos del libro de trabajo está resaltado en azul).
- En el menú del editor vaya a Insertar-> Módulo.
- Deberías ver una ventana llamada TuLibro – Módulo1. Seleccione todo el código en el marco de abajo y pegarlo a esta ventana.
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 " MyNumber = Trim(Str(MyNumber)) DecimalPlace = InStr(MyNumber, "." ) 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 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 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 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 |
- Pulse Ctrl+S para guardar el libro de trabajo actualizado. Cuando intente guardar el libro de trabajo con una macro, recibirá el mensaje "Las siguientes funciones no pueden guardarse en un libro de trabajo sin macros".
- Haga clic en No. Cuando vea un nuevo diálogo, elija la opción Guardar como. En el campo "Guardar como tipo" elija la opción "Libro de Excel habilitado para macros".
Utilice la macro SpellNumber en sus hojas de trabajo
Ahora puede utilizar la función NúmeroDeEscritura en sus documentos de Excel. Introduzca =SpellNumber(A2) en la celda donde necesita obtener el número escrito en palabras. Aquí A2 es la dirección de la celda con el número o la cantidad.
Aquí puedes ver el resultado:
Ya está.
Copie rápidamente la función SpellNumber a otras celdas.
Si necesitas convertir toda la tabla, no sólo una celda, coloca el cursor del ratón en la esquina inferior derecha de la celda con la fórmula hasta que se convierta en una pequeña cruz negra:
Haz clic con el botón izquierdo y arrástralo por la columna para rellenar la fórmula. Suelta el botón para ver los resultados:
Nota. Tenga en cuenta que si utiliza SpellNumber con un enlace a otra celda, la suma escrita se actualizará cada vez que se modifique el número de la celda de origen. También puede introducir el número directamente en la función, por ejemplo, =SpellNumber(29.95) (29.95 – sin comillas y sin el signo del dólar).
Desventajas de usar la macro para deletrear números en Excel
En primer lugar, debe conocer VBA para modificar el código según sus necesidades. Es necesario pegar el código para cada libro de trabajo, donde usted planea cambiarlo. De lo contrario, tendrá que crear un archivo de plantilla con macros y configurar Excel para cargar este archivo en cada inicio.
La principal desventaja de utilizar una macro es que si envías el libro a otra persona, ésta no verá el texto a menos que la macro esté incorporada en el libro. E incluso si está incorporada, recibirán una alerta de que hay macros en el libro.