Você está na página 1de 5

Convertir numeros a letras en Excel

Publicado octubre 14, 2007 Tutos Manuales953 Comentarios Etiquetas: excel, numeros a letras, numeros palabras

Una de las funciones de Microsoft Excel ms buscadas en la red y en los foros, es como convertir un numero a texto o numero a letras, esta funcin no viene integrada en las formulas propias de Microsoft Excel, esto lo podemos hacer insertando un cdigo llamado Macro, que no son mas que instrucciones que nos ayudan a automatizar tareas en Excel (tambin se usa en Word, Access etc.). En la red se puede encontrar muchos de estos codigos, algunos permiten manejar varias monedas, dlares, Euros etc. Uno de los ms usados y mas que excelente es el de Mauricio Baeza, 100% hecho en Mxico!, seguramente ya lo haz usado, desde entonces han surgido muchas variantes y modificaciones; pero muy pocos sitios o casi nunguno muestran como usarlos. Desde que uso Microsoft Excel he probado varios de esos cdigos, he visto como mucha gente se atribuye la autora de dichos cdigos, que vergenza pero en fin. Dentro de las diferencias que he encontrado en la conversin a texto es algo as como esto: 23 = Veintitrs 23 = Veinte y tres Yo me inclinara mas por el primero, No es que la segunda conversin este mal, cualquiera de las dos formas son correctas, pongamos un ejemplo, cuando voy a la tienda de la esquina y pregunto Cundo cuesta este palitroche*? El anciano muy amablemente me dice son veintitrs pesos joven. Vamos a empezar, primero necesitamos el cdigo, vamos a usar este que al parecer el autor es Sal Lpez con una pequea modificacin de ByPaco para que aparezca Pesos y M.N., yo le hice una pequea modificacin al cdigo para que aparezca SON: como se usa aqu en Mxico.
Function PesosMN(tyCantidad As Currency) As String Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit tyCantidad = Round(tyCantidad, 2) lyCantidad = Int(tyCantidad) lyCentavos = (tyCantidad - lyCantidad) * 100 laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")

laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS") lnNumeroBloques = 1 Do lnPrimerDigito = 0 lnSegundoDigito = 0 lnTercerDigito = 0 lcBloque = "" lnBloqueCero = 0 For I = 1 To 3 lnDigito = lyCantidad Mod 10 If lnDigito <> 0 Then Select Case I Case 1 lcBloque = " " & laUnidades(lnDigito - 1) lnPrimerDigito = lnDigito Case 2 If lnDigito <= 2 Then lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1) Else lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque End If lnSegundoDigito = lnDigito Case 3 lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque lnTercerDigito = lnDigito End Select Else lnBloqueCero = lnBloqueCero + 1 End If lyCantidad = Int(lyCantidad / 10) If lyCantidad = 0 Then Exit For End If Next I Select Case lnNumeroBloques Case 1 PesosMN = lcBloque Case 2 PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN Case 3 PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & PesosMN End Select lnNumeroBloques = lnNumeroBloques + 1 Loop Until lyCantidad = 0 PesosMN = "SON: (" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N.)" End Function

Bien, ahora que ya tenemos el cdigo vamos a insertarlo en nuestra hoja de trabajo de Microsoft Excel. Recomendable trabajar en un libro nuevo. Hacemos clic en Herramientas->Macros->Editor de Visual Basic, o simplemente presionando Alt+F11

Es importante que cierres todos los libros que tengas abierto y dejes abierto solo el libro en el que estas trabajando ya que podra dificultarte encontrar tu libro en el explorador de proyectos (lado izquierdo de tu pantalla, si no lo ves presiona Ctrl+R) Una vez abierto el editor de Visual Basic nos vamos a Insertar->Modulo

En la ventana que se abre pegamos el codigo de la macro

Listo, ya tenemos nuestro macro listo para trabajar, cerramos el editor de Visual Basic, lo puedes hacer con Alt+Q y regresamos a Microsoft Excel Vamos a probarlo, en la celda A1 ponemos un importe, yo pondr 1500.21, abajo, en la celda A2 ponemos =PesosMN(A1)

Bien, si pudiste hacer el ejercio hasta aqu, ya puedes ponerlo en todos tus libros de trabajo, buena suerte.

Você também pode gostar