Convertir números a letras: Obtenido desde: http://gchable.wordpress.com/2007/10/14/4/ Una de las funciones de Microsoft Excel más buscadas en la red y en los foros, es como convertir un numero a texto o numero a letras, esta función no viene integrada en las formulas propias de Microsoft Excel, esto lo podemos hacer insertando un código llamado “Macro”, que no son mas que instrucciones que nos ayudan a automatizar tareas en Excel (también se usa en Word, Access etc.). En la red se puede encontrar muchos de estos “codigos”, algunos permiten manejar varias monedas, dólares, Euros etc. Uno de los más usados y mas que excelente es el de Mauricio Baeza, ¡100% hecho en México!, 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 códigos, he visto como mucha gente se atribuye la autoría de dichos códigos, que vergüenza pero en fin. Dentro de las diferencias que he encontrado en la conversión a texto es algo así como esto: 23 = Veintitrés 23 = Veinte y tres Yo me inclinaría mas por el primero, No es que la segunda conversión este mal, cualquiera de las dos formas son correctas, pongamos un ejemplo, cuando voy a la tienda de la esquina y pregunto ¿Cuándo cuesta este palitroche*? El anciano muy amablemente me dice “son veintitrés pesos joven. Vamos a empezar, primero necesitamos el código, vamos a usar este que al parecer el autor es Saúl López con una pequeña modificación de ByPaco² para que aparezca Pesos y M.N., yo le hice una pequeña modificación al código para que aparezca “SON:” como se usa aquí en México. 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 "SIETE", = Array("UN", "OCHO", "NUEVE", "DOS", "TRES", "CUATRO", "DIEZ", "ONCE", "DOCE", "CINCO", "TRECE", "SEIS", "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 = "CUATROCIENTOS", Array("CIENTO", "QUINIENTOS", "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 "DOSCIENTOS", "TRESCIENTOS", "SEISCIENTOS", "SETECIENTOS", 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 = 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 0 And 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 código 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 podría 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. *Se acuerdan de aquellos años de primaria cuando una niña inventó esta nueva palabra, creo que la niña se llamaba Pita. ************************************************************** Edición 25 de Marzo de 2011. Pongo a su disposición un libro de Excel ya con la macro listo para usar: http://www.megaupload.com/?d=3XGSSVT2 http://rapidshare.com/files/454363213/Numeros_a_letras.xls Si usan Excel 2007 no olviden habilitar las macros. **************************************************************