Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MS Excel: Cómo convertir números a palabras
Este tutorial de Excel explica cómo convertir números en palabras (con capturas de pantalla e instrucciones paso a paso).
Pregunta: En Microsoft Excel, ¿cómo convierto valores numéricos en palabras? Por ejemplo, para un valor de 1, ¿puede la celda mostrar la palabra “uno”?
R: No hay una función de Excel integrada para convertir números en palabras. En su lugar, debe crear una función personalizada para convertir números en palabras usted mismo. Vamos a explorar.
Para ver la función completa y cómo se usa en los ejemplos a continuación, descargue la hoja de cálculo de ejemplo.
propina: Cuando crea una función personalizada en Excel, crea código de macro. Al abrir el archivo después de crear la función personalizada, advierte que hay macros en la hoja de cálculo. Debe habilitar las macros para que esta función funcione.
Empecemos. Primero, debe abrir la hoja de cálculo de Excel y presionar Alt+F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones. En el menú Insertar, seleccione Módulo.
Esto insertará un nuevo módulo llamado Módulo1 en su hoja de cálculo. Pegue las siguientes dos funciones en el nuevo módulo.
' Example created by prograrmaplus.com Function EnglishNumber(ByVal N As Currency) As String Const Thousand = 1000@ Const Million = Thousand * Thousand Const Billion = Thousand * Million Const Trillion = Thousand * Billion If (N = 0@) Then EnglishNumber = "zero": Exit Function Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = "" Dim Frac As Currency: Frac = Abs(N - Fix(N)) If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N)) Dim AtLeastOne As Integer: AtLeastOne = N >= 1 If (N >= Trillion) Then Buf = Buf & EnglishNumberDigitGroup(Int(N / Trillion)) & " trillion" N = N - Int(N / Trillion) * Trillion If (N >= 1@) Then Buf = Buf & " " End If If (N >= Billion) Then Buf = Buf & EnglishNumberDigitGroup(Int(N / Billion)) & " billion" N = N - Int(N / Billion) * Billion If (N >= 1@) Then Buf = Buf & " " End If If (N >= Million) Then Buf = Buf & EnglishNumberDigitGroup(N Million) & " million" N = N Mod Million If (N >= 1@) Then Buf = Buf & " " End If If (N >= Thousand) Then Buf = Buf & EnglishNumberDigitGroup(N Thousand) & " thousand" N = N Mod Thousand If (N >= 1@) Then Buf = Buf & " " End If If (N >= 1@) Then Buf = Buf & EnglishNumberDigitGroup(N) End If EnglishNumber = Buf End Function Private Function EnglishNumberDigitGroup(ByVal N As Integer) As String Const Hundred = " hundred" Const One = "one" Const Two = "two" Const Three = "three" Const Four = "four" Const Five = "five" Const Six = "six" Const Seven = "seven" Const Eight = "eight" Const Nine = "nine" Dim Buf As String: Buf = "" Dim Flag As Integer: Flag = False Select Case (N 100) Case 0: Buf = "": Flag = False Case 1: Buf = One & Hundred: Flag = True Case 2: Buf = Two & Hundred: Flag = True Case 3: Buf = Three & Hundred: Flag = True Case 4: Buf = Four & Hundred: Flag = True Case 5: Buf = Five & Hundred: Flag = True Case 6: Buf = Six & Hundred: Flag = True Case 7: Buf = Seven & Hundred: Flag = True Case 8: Buf = Eight & Hundred: Flag = True Case 9: Buf = Nine & Hundred: Flag = True End Select If (Flag <> False) Then N = N Mod 100 If (N > 0) Then If (Flag <> False) Then Buf = Buf & " " Else EnglishNumberDigitGroup = Buf Exit Function End If Select Case (N 10) Case 0, 1: Flag = False Case 2: Buf = Buf & "twenty": Flag = True Case 3: Buf = Buf & "thirty": Flag = True Case 4: Buf = Buf & "forty": Flag = True Case 5: Buf = Buf & "fifty": Flag = True Case 6: Buf = Buf & "sixty": Flag = True Case 7: Buf = Buf & "seventy": Flag = True Case 8: Buf = Buf & "eighty": Flag = True Case 9: Buf = Buf & "ninety": Flag = True End Select If (Flag <> False) Then N = N Mod 10 If (N > 0) Then If (Flag <> False) Then Buf = Buf & "-" Else EnglishNumberDigitGroup = Buf Exit Function End If Select Case (N) Case 0: Case 1: Buf = Buf & One Case 2: Buf = Buf & Two Case 3: Buf = Buf & Three Case 4: Buf = Buf & Four Case 5: Buf = Buf & Five Case 6: Buf = Buf & Six Case 7: Buf = Buf & Seven Case 8: Buf = Buf & Eight Case 9: Buf = Buf & Nine Case 10: Buf = Buf & "ten" Case 11: Buf = Buf & "eleven" Case 12: Buf = Buf & "twelve" Case 13: Buf = Buf & "thirteen" Case 14: Buf = Buf & "fourteen" Case 15: Buf = Buf & "fifteen" Case 16: Buf = Buf & "sixteen" Case 17: Buf = Buf & "seventeen" Case 18: Buf = Buf & "eighteen" Case 19: Buf = Buf & "nineteen" End Select EnglishNumberDigitGroup = Buf End Function
Su ventana de Excel debería verse así:
Haga clic en el botón Guardar (icono de disco) y regrese a la ventana de la hoja de cálculo.
Ahora puede usar la función EnglishNumber para convertir números en palabras. Funcionará como cualquier otra función de hoja de trabajo. Simplemente haga referencia a la función EnglishNumber en una hoja de cálculo de Excel como esta:
De acuerdo con la hoja de cálculo anterior, la función EnglishNumber devolverá lo siguiente:
=EnglishNumber(1) Result: "one" =EnglishNumber(125) Result: "one hundred twenty-five" =EnglishNumber(3278) Result: "three thousand two hundred seventy-eight"