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 = 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 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 09 de Octubre de 2013.
https://www.dropbox.com/s/c1tad1rde15rbgs/Numeros_a_letras.xls
Pongo a su disposición un libro de Excel ya con la macro listo para usar:
No olviden habilitar las macros.
**************************************************************
Oye Gracias busque y busque y solo el tuyo se explica muy bien
saludos
Marlon Espana
Hola, quisiera poner esta aplicacion para agilisar el trabajo pero me aparece #¿nombre?, que significa. Alguien ke pudiera ayudarme.. Gracias.
Hola Vero.
Te hace falta guardar la macro como un complemento de Excel (Extensión .XLA para versión 2003 y anteriores o .XLAM para versión de office 2007), para después habilitarla desde Opciones de Excel Complementos.
Una vez guardada y habilitado el complemento, bastara con accesar a insertar funciones desde cualquier hoja de Excel e ingresar a “Definidas por el usuario”, en donde encontraras dicha función (PesosMN); selecciona esa función y vincularla a una celda donde exista una cantidad y liisto, la podrás utilizar en cualquier archivo.
Espero te sea resuelva el problema, saludos.
Hola Tavo , Vero me podrian explicar a detalle como guardar la macro para despues utilizarla en varios libros y hojas, no he podido hacer esto, por favor se los agradecere muchisimo, les dejo mi mail: bonduz07@yahoo.com.mx
Hola: es que si usas office 2007 debes habilitar contenido.
si usas 2003 debes bajar la seguridad a medio y luego darle habilitar macros.
¿Respondi a tu pregunta?
Willy
que pagina tan gay necesito que la letra del numero que uno escriba se ponga en numero pero no salen unas maricadas mas hp
lo haria encantado si aun te sirviera porelcanto@hotmail.com
NO DEBES DEJAR ESPACIOS EN LA FORMULA, POR QUE ES DESCONOCIDA PARA EXCEL.
excelente!!!!! funciona perfectamente bien!!!! Gracias por tu aportación. Saludos
LOS QUE FALTO SON LOS SIGUIETES PASOS
1) GUARDAR EL ARCHIVO EN «Tipo» COMO «complemento de excel» busquen hay toda una lista cuando van a guardar
2) CERRAR TODOS LOS ARCHIVOS DE EXCEL
3) AL ABRIR UNO NUEVO TE VAS A «Inicio/Opciones/Complementos/Complementos de excel/ir/ activas la de pesosMN y LISTO (ya esta siempre en cualquier archivo de excel)
4) Esto lo tienes que hacer en cada computadora que uses
No cabe duda de que existen personas de las que se puede aprender mucho.
Me gusto tu ayuda por que esta excelente.
MIL GRACIAS
Hola:
antes que nada quiero agredecer por tu valiosa aportacion, la verdad no se como habilitar el contenido. hice todo loo que se indica pero cerre mi archivo de excel, guarde todos los cambios pero al momento de abrirlo de nuevo me aparece el mismo error.
Ayudame por favor… Saludos!!!
Hola Tavo! mira trato de crear la macro y sigo tus pasos y al entrar a excel me da la conversiòn, pero me salgo de esa hoja y ya no funciona al darle la funsiòn de =PesosMN ya no aparece
MUCHAS GRACIAS, LA VERDAD YO NO ENTENDIA MUY BIEN LO DE LAS MACROS PERO CON TU EXPLICACION ME FUE SUPER FACIL GRACIAS.
LLEVABA TODO EL DIA BUSCAN INOFRMACION Y NO ENTENDIA AHORA ME HAZ HECHO LA VIDA MAS FACIL GRACIAS.
SI MUCHAS GRACIAS A TODOS POR SUS COMENTARIOS ESTA MUY BUENO LA VERDAD ME SIRVIO DE MUCHO MIL GRACIAS Y UN SALUDO DESDE VERACRUZ MEXICO,,,A TODOS..
AMIGO COMO HARIA EN CASO DE CAMBAR LA MONEDA DIGAMOS DOLARES O SOLES DE PERU?
GRACIAS
PARA NUEVOS SOLES (PERU) COPIA TEXTO BAJO LA LINEA:
________________________________________________
Function numerosentexto(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
numerosentexto = lcBloque
Case 2
numerosentexto = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & numerosentexto
Case 3
numerosentexto = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & numerosentexto
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
numerosentexto = «SON: (» & numerosentexto & IIf(tyCantidad > 1, » NUEVOS SOLES «, » NUEVO SOL «) & «CON » & Format(Str(lyCentavos), «00») & «/100 CÉNTIMOS)»
End Function
MUCHAS GRACIAS AMIGO, FUE MUY FACIL PODER INSERTAR EL CODIGO DE LA MACRO…. GRACIAS INFINITAS!!!
hola puse el codigo y me sale «error de sintaxis» quiero saber porque no funciona
ES EL CODIGO PARA NUEVO SOLES PERU
Muchas gracias, Excelente macro, mil mil gracias
Guadalajara, Jal.
Tu macro esta muy bien solo un detalle las cantidades de ,000,000., 1,000,001. hasta 1,999,999. nunca cambian siempre aparece ( UN MILLON PESOS 00/100 M.N.) hasta que se cambia a 2,000,000. entonces si aparece bien solo es el rango de entre un millon y 1,999,999. espero me entiendas. saludos.
Gracias , muy util !!!
Por que no se guarda el modulo??? cadaves que cierro la hoja de excel el modulo se borra?? por que?’
ponle guardar como y guardalo como tipo «libro de excel habilitado para macros
ayudenme con esta cantidad 4,201,100,258
La macro que se propone arriba no está mal, pero el problema es mucho más complejo de lo que parece y actualment la Real Academia Española admite muchas posibilidades que desconocemos. Puedes ver todas las opciones en esta aplicación:
http://tip.dis.ulpgc.es/numeros-texto
hola muy bueno tu aportación, pero en cantidades grandes no me sale los resultados, por ejemplo te doy un numero $2,794,410,069.25 , como resultado me sale lo siguiente:
#¡VALOR!
sabras por que?
saludos.
Esta funcion no abarca para billones o mas arriba. Tendrias que modificar la funcion para que tenga ese alcance.
Esta funcion no abarca para miles de millones o mas arriba (limite es 999 millones)
. Tendrias que modificar la funcion para que tenga ese alcance.
Como ya dije más arriba el problema es muy complejo de resolver. Puedes ver una aplicación que lo resuelve bien hasta números realmente grandes:
http://tip.dis.ulpgc.es/numeros-texto
HOLA QUIERO PONER ESTA APLICACION PERO ME APAREC #NOMBRE K DEBO HACER PARA K FUNCIONE? X K ME ES DE MUCHA UTILIDAD OJALA ME PUEDAS AYUDAR TE LO AGRADECERIA MUCH T DEJO MI CORREO otilio13r@hotmail.com
mi estimado amigo quiero aplicar este formato pero me aparec #MONBRE, k debo hacer para k me funcione correctamente? en verdad la necesito
x tu atencion gracias.
como hacerle para que me de únicamente centavos por ejemplo:
0.12 (Cero Pesos 12/100 M.N.)
Actualmente me pongo 0.12 y me aparece ( Peso 12/100 M.N.) podrían corregirlo o decirme como le hago?
Buenos días, para esto haz lo siguiente:
Cambia la ultima línea así
If lyCantidad > 0 Then
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & IIf(lyCentavos > 0, Format(Str(lyCentavos), «00») & «/100», «») & » M.N.)»
Else
PesosMN = «SON: CERO PESOS CON » & IIf(lyCentavos > 0, Format(Str(lyCentavos), «00») & «/100», «») & » M.N.)»
End If
Tambien he corregido para que no muestre el texto 00/100 cuando la cifra es exacta
COMO QUEDARIA EL CODIGO PORQUE ME MARCA ERROR
si excelente. muchas gracias.. muy util
Mucho gusto Marlon, a tus órdenes
Gracias
esta exelente
¡Excelente!, le hice algunas modificaciones de presentación. Trabaja muy bien ¡Gracias!
Asi es Eduardo, el codigo es uno de los mas facilitos de adaptar, y es corto, hay otros con demasiado codigo. saludos
Muchas gracias Gonzalo_conta, tenia rato buscando, y solo encontraba expliacciones muy extensas, la tuya es la mejor, saludos.
EN ATN: CP GONZALO
DICHOSO USTED POR ESTUDIAR Y SABER TRANSMITIR SUS CONOCIMIENTOS ACABO DE ACCESAR A SU PAGINA Y ES INCREIBLE TODO LO QUE TIENE LO FELICITO MUCHO
ATTE
GUSTAVO HERNANDEZ MALDONADO
TE AMO!!!
TARDE SIGLOS Y POR FIN ENCONTRE COMO HACERLO
ERES UN GENIO Y GRACIAS POR COMPARTIR TUS CONOCIMIENTOS
SALUDSO
Contador:
Felicitaciones por su pagina, es la mejor esplicacion y la más facil de usar, y perdone usted mi ignorancia, pero, como le hago para que no me salga la palabra «SON»?,
Le agradeceré eternmente Contador, gracias de nuevo.
COMO LE HAGO PARA QUE NO APARESCA MN AL FINAL Y CAMBIAR PESOS POR QUETZALES, ACTUALEMENTE TRABAJO EN GUATEMALA.
FELICITACION POR COMPARTIR TUS CONOCIMIENTOS CON LAS DEMAS PERSONAS.
Hola Valentina, en la penultima linea del codigo antes de End Function, solo borra la palabra SON:, tambien puedes quitar los parentesis, debe quedar asi:
Antes: PesosMN = «SON: (» & PesosMN……..
Despues: PesosMN = «(» & PesosMN……..
mUCHISIMAS GRACIAS ES EL UNICO QUE ME A FUNCIONADO Y SE EXPLICA CORRECTAMENTE ME SALBASTE MI TRABAJO QUE BUEN APORTE
Muchas gracias realmente eres una buena persona por compartir tus conocimientos yo no se nada de esto y me fue muy facil poder hacerlo
Primero gracias, he probado el modulo y funciona
muy bien, solo una pregunta, al cerrar y abrir
nuevamente no me permite ejecutar la macro, que
debo hacer para poder utilizarla en sesion diferente?
Te sale esto? #¿NOMBRE?
Si es así es simple, el nivel de seguridad de Excel esta configurado como alto.
En Herramientas->Opciones->Pestaña Seguridad->Seguridad de Macros->Selecciona Medio.
Debería de funcionar.
Ya le hice las modificasciones al nivel de seguridad de macros y me sigue diciendo lo mismo #¿NOMBRE?, tengo que reescribir el codigo para que funcione, le agradeceria su ayuda
Si funciona el cambiar el nivel de seguridad de las macros, pero se debe guardar y cerrar el archivo y justo al abrirlo nuevamente ya aparece correctamente la cantidad.
porque me aparece #valor
EXCELENTE TE FELICITO SOLO TU TIENES DON PARA EXPLICAR
Excelente!!!!!! Mil Gracias por compartir tus conocimientos con la comunidad
Perfecto man
Gracias por el dato…
Aqui estare revisando tu pagina, esta muy buena
Hay cientos de páginas relacionadas con este tema pero ninguna vale la pena…. la tuya por supuesto si¡¡¡ gracias
MUCHISIMAS GRACIAS ¡HE INVERTIO MUCHO TIEMPO PARA ENCONTRAR ESTA APLICACION Y HASTA HOY LO LOGRE !
ES MUY BUENO EXPLICANDO
ME GUSTARIA PODER CONOCER SU CORREO Y PODER SABER SI ME PUEDE AYUDAR EN OTRAS CUESTIONES DE EXCEL
GRACIAS!
UN SALUDO DESDE OAXACA, MEXICO!
que onda we, chido tu blog, «sugerencia» pon links de foros se que tienes varios interesantes… saludos desde CACUN…
que onda we, chido tu blog, «sugerencia» pon links de foros se que tienes varios interesantes… saludos desde CANCUN…
Que paso mi estimago amigo, que digo amigo hermano!! como haz estado? que pequeño es el internet, te mando un abrazo, un dia de estos años voy a visitarte.
Solo quiero agradecer su tiempo y felicitarlos por la manera de explicar las cosas, a mi me fue de mucha utilidad.
MUCHAS GRACIAS
Gracias estoy recien ingresando al uso de Excel, me vienen de buena gracias
una pregunta no lo he podido hace rdfucnionaren 2007, alguna cosa que falte para esta funcion en 2007??, muchas gracias
En office 2007, debes hablitar la pestaña de programador. (para esto Opciones de exel >> mas frecunetes >> habilitar pestaña de programador)
Una vez resuelto esto, en la pestaña de programador en la ficha de Codigo click en «visual basic» y de ahi sigue las instrucciones q gonzalo_conta dió, es exactamente lo mismo. Conmigo funciona muy bien.
A mi si me funcionó el problema es q cuando guardo el archivo y lo vuelvo a abrir el programita ya no corre y me aparece #¿nombre?
Saludos kamysado, no uso Office 2007 por cuestion de gustos, por lo que me veo imposibilitado para contestar tu pregunta.
Esperemos que alguno de los internautas pueda ayudar.
Hola, yo lo stoy probando en office 2007 y esta trabajando correctamente
Amigo,
Llevo dos días tratando que esto funcione en 2007. Copio el texto de la macro, lo grabo y cuando la llamo no aparece la función. ¿Qué hay que hacer?
Saludos desde Bogotá
HOLA POR FAVOR ME COLABORAS COMO PUEDE APLICARLO EN OFFICE 2007 …. POR FA GRACIAS
Gracias por compartir tus conocimientos, eres un genio solo por compartir. 🙂
Excelente es tu macro, funciona muy.
Sólo te quería preguntar que paréntesis tengo que sacarle para que no aparezcan y además le quisiera agregar CON /100
para los centavos.
Buenas muy buen aporte solo que tengo una duda vi sus archivos y hay uno que me interesa ya lo descarge pero a la ora de descomprimirlo me pide una contraseña me la podria proporcionar craagle.zip
Buscador de cracks y seriales, como usar craagle visita https://gchable.wordpress.com/
By gonzalo_conta 53 days ago Size: 455.7kb
Espero su amable respuesta SALUDOS !!!
Ines,
cambia la penultima linea del codigo por este otro:
puedes probar cambiando el codigo e ir viendo el resultado
——————————————————-
alpine1mx,
ahi mismo donde lo bajaste hay una anotacion que dice como usar craagle visita https://gchable.wordpress.com/, que es este sitio, si lees el tema que habla de craagle veras que ahi esta la contraseña que es @felizañonuevo.
Muchas gracias Gonzalo por compartir todo lo que sabés con nosotros, no muchos lo hacen.
Hola, le agradezco mucho la información que me ha proporcionado, ya que es realmente sencilla,facil y util.
hola fijate k tengo una pekeña duda o curiosidad,kiero saber si es posible que por medio de una macro se pueda poner la fecha del sistema en una celda,sin necesidad de que tu la escribas y le des formato
La funciòn ya esta definida por excel, basta con escribir:
=HOY(), y automàticamente te escribe la fecha del sistema.
Ojala te sirva, adiosito.
HOla Oswaldo, pues no se especificas que es lo que quieres hacer, pero la instrucion para la fecha es:
ActiveCell.Value = Date
para la hora Time
Pita descubre una palabra nueva
Una mañana, Tomás y Anita entraron en la cocina de Pita y le dieron los buenos días, pero Pita no contestó. Sonreía apenas, con expresión soñadora.
—Perdonen que no conteste a su saludo; estoy pensando en lo que acabo de descubrir —dijo Pita.
—¿Qué has descubierto?
—¡Una palabra nueva!, ¡una estupenda palabra!
—¿Qué clase de palabra? —indagó Tomás con cierta desconfianza.
—Una maravillosa palabra, una de las mejores que he oído en mi vida.
—Anda, dínosla, Pita —dijeron los niños.
—¡PALITROCHE! —dijo Pita triunfante.
—¿PALITROCHE? ¿Y qué quiere decir?
—¡Ojalá lo supiera!
—Si no sabes lo que significa, no sirve para nada —dijo Anita.
—Eso es lo que me preocupa —contestó Pita mordisqueándose el pulgar de la mano derecha.
—¿Quién dice lo que significan las palabras? —preguntó Tomás.
—Yo creó que se reunieron algunos viejitos —dijo Pita—. Inventaron algunas palabras y luego dijeron: «esta palabra quiere decir esto…» Pero a nadie se le ocurrió una palabra tan bonita como palitroche. ¡Qué suerte que haya dado yo con ella! ¡Y les apuesto lo que quieran a que descubriré lo que significa! Quizá se le pueda llamar así al ruido que hacemos cuando andamos en el lodo. A ver, cómo suena «cuando Anita anda en el lodo puede oírse un maravilloso palitroche…» No, no suena bien. Eso no es. Quizá es algo que puede comprarse en las tiendas. ¡Vamos a averiguarlo!
—¡A ver si podemos! —añadió Tomás.
Pita fue a buscar su monedero y lo lleno de monedas.
—Palitroche suena como una cosa bastante cara. Seguramete me alcanzará con esto.
Ya puestos de acuerdo, los tres salieron muy preocupados de la casa. Llegaron a una pastelería.
—Quisiera comprar algunos palitroches —dijo muy seria Pita.
—¿Palitroches? —preguntó la señorita que despachaba—, creo que no tenemos.
Entraron a una ferretería.
—Quiero comprar un palitroche —dijo Pita.
—¿Palitroche?, vamos a ver si encuentro alguno —dijo el dependiente y sacó de un cajón un cepillo que entregó a Pita.
—¡Esto es un cepillo! —exclamó Pita muy enojada—. Yo quiero un palitroche. ¡No intente engañar a una inocente niña!
—Pues no tenemos lo que necesitas, niña, lo siento mucho.
—Lo siento… lo siento… —salió murmurando Pita, verdaderamente contrariada.
—¡Ya sé! Lo más probable es que se trate de una enfermedad. Vamos con el médico.
—Quiero ver al doctor. Es un caso grave —dijo Pita.
Como se trataba de un caso grave, la enfermera los hizo pasar inmediatamente.
—¿Qué te pasa? —le preguntó el médico.
—Estoy muy asustada, doctor. Creo que estoy enferma de un grave palitroche. ¿Es contagioso?
—Tú tienes más salud que todos nosotros juntos —le dijo el médico—. No te preocupes.
—Pero existe una enfermedad con ese nombre, ¿verdad? —preguntó ansiosamente Pita.
—No, pero aunque existiera, tú no lo atraparías jamás.
Pita, Tomás y Anita salieron de ahí bastante desconsolados. Iban con la cabeza baja, pensando que nunca encontrarían un palitroche. De pronto Pita gritó:
—¡Ten cuidado, Tomás, no pises ese animalito!
Los tres miraron hacia el suelo. El animalito era pequeño, con un par de alas verdes que billaban como si fueran de metal.
—No es chapulín, ni grillo —dijo Tomás.
La cara de Pita se iluminó:
—¡Ya sé! ¡Es un palitroche! —gritó triunfante.
—¿Estás segura? —preguntó Tomás.
—¿Crees que no voy a conocer a un palitroche cuando lo veo? Como tú no has visto ninguno en tu vida, no sabes reconocerlos. ¡Mi querido palitroche! Ya sabía yo que al fin iba a encontrarte. Hemos recorrido toda la ciudad buscándote, y estabas casi debajo del zapato de Tomás. Ven, te llevaré a casa y viviremos felices.
FIN
jajajajaj años que no leía ese texto!!!! Saludos
No estaba tan errado 🙂
Gracias por el código esta excelente!! solo una consulta, como sería para que la parte de centavos tambien salga en letras, como ejemplo: «SON VEINTE PESOS CON CERO CENTAVOS», es decir, absolutamente todo en letras. Muchas Gracias
Quisiera saber lo mismo, como poner todo en letras. Gracias
Gonzalo
muy buena tu informacion y me a sido de gran ayuda
mi consulta es como puedo borar esto de la formula
00/100 M.N. gracias
se despide Eduardo de Chile
WOW… Fue bien papa….
Te lo agradezco por los siglos de los siglos……
excelente Blog…
fergzzag
ME PARECE MUY INTERESANTE, ME HA SERVIDO MUCHISIMO, AGRADEZCO Y FELICITO A LAS PERSONAS QUE COMPARTEN SUS CONOCIMIENTOS EN FORMA DESINTERESADA.
UNA CONSULTA, ACA NO UTILIZAMOS LOS CENTAVOS, CÓMO PUEDO REDONDEAR EL NÚMERO ??
CORDIALES SALUDOS,
Hola buenos dias una pregunta porque al querer ejecutar la macro me manda el siguiente mensaje se a detectado un nombre ambiguo: PesosMN y no me deja ejecutarla mi pregunta es que estoy haciendo mal para correr la macro por su atencion gracias
BUENA UTILIDAD SOBR TODO, PARA FINES ESPERADOS. (^ ^,) THANSK YOU.
gracias por tu aportacion lo estoy usando en office 07 y funciona muy bien, saludos y nuevamente gracias
gracias muchas gracias tanto ke buske y no encontraba nada tan detallado y muy bien explicado y muchas gracias saludos y felicidades por tu aportacion
ese codigo esta mal, aprenda a programar bien, hay maneras más faciles, para que se complica. o es que es un aficionado. estudie bien y publique cosas que valgan la pena.
Se puede màs cuando se quiere, que cuando se sabe.
¡Excelente respuesta! ¡bueno sería conocer tanta capacidad con un mejor código! salu2.
Carlos, si se puede lo mismo o más con menos, ¿por qué no iluminas a la comunidad y publicas un «buen» código, en vez de sólo estar criticando pero sin aportar nada útil?
Es mejor construir que destruir. Se agradece a quien hace esfuerzos para dar gratis. Si tienes mejores ideas, compártelas. No sólo critiques.
si esta mal dejate de pendejadas y haz el tuyo comenta a los usuario de exel como hacerlo como tu dices, no estes criticando a lo pendejo, el compañero hace su mayor esfuerzo y nos sirve de mil maneras
Mil gracias por compartir tus conocimientos, muy explicativo, aunque tuve dificultad porque despues de cerrar el modulo y regresar a la hoja de calculo me funcionaba bien, pero al cerrar el archivo y abrir uno nuevo ya no funcionaba la formula de =pesosmn(), asi que guarde el modulo como un complemento de excell y listo.
posteriormente abri una nueva hoja de calculo y me fui al administrador de complementos y le di añadir nuevo complemento, busque el archivo y listo.
problema resuelto..
gracias por comparttir
Luis Enrique, y
<>
uso office 2007.
Yo tengo el mismo problema y lo resolví deshabilitando la seguridad de macros al mínimo, pero no quisisera dejarlo así por protección de mi equipo.
luis enrique, aprenda por usted mismo, no copie y pege de internet. piense por usted mismo.
Mi estimado Carlos, te voy a dirigir muy pocas palabras por que no vale la pena siquiera contestarte, por educación lo haré para aclararte lo siguiente:
Me pides que aprenda programar y me llamas aficionado, ¿por que mejor tu no aprendes a leer bien antes de abrir la bocota? en ningún momento dije que programé el código o si? lee bien, por otra parte, si todo esto no te es útil no regreses, no contamines con tus comentarios negativos, gente como tu que no aporta nada útil, que no publican cosas que valgan la pena.
Por otro lado te pido respeto hacia los otros ínter nautas, desde luego, si tu educación te lo permite.
Saludos.
Hola Hola, MUY EXCELENTE TU APORTE, YA HICE TODO EL PROCEDIMIENTO Y FUNCIONA RE-BIEN
pero necesito que me ayudes con dos cosas:
la primera quiero que no aparezca la palabra SON:
la segunda quiero que sean quetzales y que desaparezca MN,
EJEMPLO:
SI ESCRIBO 2530.34
YO SOLO QUIERO QUE APAREZCA DOS MIL QUINIENTOS TREINTA QUETZALES 34/100.
TE LO AGRADECERÍA MUCHO BROTHER….DIOS TE BENDIGA Y TE SIGA DANDO SABIDURIA
SR. GONZALO GRACIAS POR SU AYUDA, EN EFECTO COINCIDO CON LOS DEMAS CYBERNAUTAS, LO UNICO QUE NO PUEDO HACER ES QUE APAREZCA EN LOS OTROS LIBROS QUE ABRO, LUIS ENRIQUE DIJO QUE SE GUARADARA COMO COMPLEMENTO PERO NO SE COMO GUARDARLO….
SI ME PUDIERA AYUDAR SE LO AGRADECERIA MUCHO
PD.
LO FELICITO POR CAMPARTIR SUS CONOCIMINETOS
GRACIAS
hola mira yo tuve el mismo problema pero espero y me explique bien: abres un libro de trabajo en blanco, le pegas el nuevo modulo y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel de las en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
muchas gracias gonzalo y enrique. de verdad que es la manera mas facil de hacerlo gracias por pasar sus conocimientos
EXCELENTE EXPLICACION ENRIQUE, GRACIAS POR TU MANERA DE EXPRESAR, YO ME ENCONTRE CON UN CODIGO PERO NO ME FIJE COMO LO GRABE Y VOLVI A BUSCARLO Y JAMAS, PORQUE COMO DECIN OTROS SOLO FUNCIONA EN EL LIBRO DONDE ESTA EL CODIGO, PERO CON TU EXPICACION PERMANENTE, GRACIAS Y QUE SIGAS ADELANDE. ATENTAMENTE MS
Oye enrique tu explicación fue magnifica, ayudo a cerrar lo que empezo Gonzalo, al menos para mi, insisti mucho, probando las soluciones que daban hasta aqui y no resultaba. Con tú explicación ya pude y en todos los archivo pude usar la función. Es vital lo de complementos. La prueba de fuego sera apagar el equipo, al encenderlo. MUCHISIMAS GRACIAS, GENTES COMO USTEDES, ES LA MUESTRA DE NUESTRA CAPACIDAD DE HACER EL BIEN.
Gonzalo gracias por publicar esto. Queria preguntarte como hago para que salga «con diez centavos» por ejemplo, es decir todo en letras. Muchas Gracias
muchisisimas gracias tengo un buen tiempo investigando esto y eres el unico que me respondio con pasiencia por que fue el unico bien buen trabajo exelente
at`n conta gonzalo
tengo ratos tratando de hacer todo esto por mi trabajo que tengo que acer persupuestos y estos me facilita mas mi trabajos, tengo casi todo vinculado solo esto me faltava para solo tener que merte datos en unas hojas y me arroje las hojas terminadas
EXELENTE!!!!
PERSONAS COMO UD ES LAS QUE NECESITA EL MUNDO QUE COMPARTEN SUS CONOCIMIENTOS QUE BIEN LO FELICITO.
MUCHAS GRACIAS YA QUE ESTA FORMULA LA ESTABA BUSCANDO DESDE HACE YA TIEMPO Y NO SABIA QUE DEBIA HACER NUEVAMENTE MIL Y MIL GRACIAS. SUERTE EN TODODS LOS PROYECTOS QUE EMPRENDA Y SI SACA ALGO NUEVO ME GUSTARIA ME LO HICIERA SABER A TRAVEZ DE MI CORREO.
mil gracias una buena funcion y que agradable que compartas con los demas la informacion habla bien de ti gracias
Hola!
podrias ayudarme con un codigo.. para pasar de numeros a letras pero en ingles.
es decir ya tengo un codigo configurado para español pero ahora requiero uno en ingles
45.50 Forty Five dollars and fifthy cents 00/100 USD
Felicidades,, quien aporta busca un mundo mejor…
HOLA gchable, EL CODIGO ES MUY BUENO Y FUNCA, SOLO QUE AQUIE NO HAZ CONSIDERADO LOS DECIMALES, SERIA BUENO TERMINAR ESO.
DE TODOS MODOS ESTA EXCELENTE
Muy bien, excelente.
Saludos
hola muchas gracias le pregunte a tecnicos, licenciados en sistemas, ingenieros en sistemas y nadie supo contestarme, asta que te encontre, muchas gracias. millllll gracias
Excelente, realmente tienes el don para enseñar y explicar, te agradezco un mundo.
Exitos, te lo mereces!!!
Mestro de maestros no hay nada de q hacer eres lo maximo, un favor como podriamos hacer para que en vez de pesos aparezca Dolares Americanos y no salga el MN.
Muchas gracias
Buenos dias, la formula me sirve pero a medias, en España para hacer cheques y efectos, se emiten en Euros que como sabes llevan decimales y esta formula no trascribe a texto los decimales de un numero. Te agadeceria me facilitases una formula para poder rellenar los efectos correctamente.
Muchas gracias y felicidades por tu trabajo.
estoy muy agradecido habia pasado mucho buscando y esta es la mejor que encontre y lo mejor que es facil de modificar gracias saludos
MUY BIEN EXPLICADO ¡¡¡¡FELICIDADES!!!!!!
Excelente, mas que bien, para office 2007 los pasos son un poco diferentes, pero funciona a la perfección.
Gracias!!
Saludos!!
ayudame me urge tu ayuda.estoy en una actividad de excel,en la cuestion de macros,todo bien,pero en no me sale macroletras en la explicacion de la pagina del sena,no se explica bien apareceen unbloc de notas macroletras,pero no explican de donde se saca.
necesito ese dato antes del viernes pa q me califiquen
ayudame te dejomi correo,edwfra028@hotmail.com
Si mas que execelente es verdad, de los que encuentren en la red, este es el mas util, (aplica para mexico) por que los demas al ser numeros enteros o por la forma de escribirse al español dan algunos errores.
pregunta?, se puede ejecutar en access este codigo?
como reporte es un poco complicado ya que no se ponen las celdas (exel) sino por la tabla, alguien sabra como formularlo?
Para ejecutar el codigo en access primero pega el codigo en un modulo, nombralo y luego utilizalo por medio de una consulta (funciones definidas por el usuario) y despues jalar la consulta en el reporte.
LA NETA NO TIENE MAUSS ESTE CODIGO TA CON MADRESS CARNAL BIENTOS
LA NETA NO TIENE MAUSS ESTE CODIGO TA CON MADRESS CARNAL BIENTOS
Se me ocurrio comprar el Office 2008 para Mac y el Excel 2008 lo que he entendido en varios foros es que esta nueva version no trae el Visual Basic para las macros, me podrias informar si hay otra forma de hacer esto? o si se puede hacer con la nueva herramienta que trae esta version?
Hola Gerardo, yo tambien uso Office 2011 en mi Mac y la formula de CONVIERTENUMLETRAS no me funciona; no se si has pobrado con esa versión y puedas ayudarme. Gracias!!
Gerardo,
intenta esto:
1.- abrir un libro vacio de excel
2.- dar click al icono de Office que se encuentra en la parte superior del lado izquierdo, el circulo de colores.
3.- En la opción más frecuentes, bajo Opciones principales para trabajar con Excel, se debe de activar la casilla de verificación MOSTRAR LA FICHA PROGRAMADOR EN LA VENTANA DE OPCIONES y dar click en Aceptar y ya veran la pestaña de PROGRAMADOR.
4.- dar click en PROGRAMADOR, buscar las opciones de SEGURIDAD O MACROS (o lo mas que se le parezca) y un click en CONFIGURACIÓN DE MACROS (o lo que mas se le parezca) Y activar la casilla de HABILITAR TODAS LAS MACROS (o lo que mas se le parezca).
Respuesta de mikecoz81 en anafinet.org foro de Excel
OYE QUE PILERA GRACIAS. ES EL UNICO QUE ME HA FUNCIONADO.
SE LE PUEDE QUITAR EL PARENTESIS ?
QUE MACHERA TE CONSULTARE CON OTRAS
GRACIS
oye intente hacerlo en otra hoja y no me dejo que paso ?
OK VOLVI A PROBAR Y RESULTO PERO ME TOCO ELIMINAR EL MODULO Y HACRLO DE NUEVO.
COMO SE APROXIMA ?
GRACIAS
Muchas gracias por lo de la macro para excel, respecto a la cantidad en letra, es padre saber todo esto. saludos.
oye una duda aplique el macro y si me resulto
ya que la utilizo para la elaboracion de facturas
pero cuando lo quise hacer por segunda vez no funciono
aparece lo siguiente….#¿NOMBRE?…
QUE HAGO?
HOLA MUCHAS GRACIAS ERES DE LO MAS GENIAL
NO SABES LA GRAN AYUDA QUE ME HAS DADO
ENCONTRE DESDE HACE TIEMPO LA FORMULA PERO
NUNCA SUPE COMO LLEVARLA ACABO SOLO HASTA QUE
ABRI ESTA PAGUINA WEB….
MUCHAS GRACIAS AMIGO
PRONTO TENDRE UNA NUEVA DUDA
Y CREO QUE TE BUSCARE NUEVAMENTE
HACI QUE TE BUSCARE A TI POR KE
DAS LA EXPLICACION BIEN ENTENDIBLE
TU SI SABES
GRACIAS.
Gracias Gonzalo, me sirvio mucho el modulo.
🙂
Saludos desde Chile.
Gracias por este gran aporte, sobre todo para los que no somos expertos en esto, me has salvado la vida..seguire conociendo mas el excel..
¡¡ Muchísimas gracias !! He revisado innumerables códigos y éste está muy sencillo de insertarlo. Ya tenía uno pero no me funcionaba como yo necesito porque la interpretación en letra me la daba en minúsculas y tenía que «puentearla» con otra función para cambiarla a mayúsculas, aparte no funcionaba con cantidades mayores a 99,999.99 me daba los decimales equivacados. Felicidades la voy a recomendar mucho.
gracias carnal es al unico sitio donde encontre la explicacion completa y esta funciona muy bien
En verdad muchísimas gracias, eres mi héroe … jajaja
lo use en un programita para facturar y esta funcionando super bien
La verdad me funciono perfecto en 2007 gracias tengo que hacer facturas y donde mas me equivoco es en poner numero con letra nuevamente mil gracias
Excelente aporte lo acabo de probar y funciona perfectamente muchas gracias
gracias, por compratir esto con todos. El trabajo se me hace mas rápidoo.
GONZALO:
Muchisimas gracias por esta informacion y por toda la que proporcionas en tu blog… me fue de muchisima utilidad porque esta super completo y explicado de una forma maravillosa!!!
Gracias nuevamente.
Gabitos
MARAVILLOSO, MAGISTRAL E IMPREISONANTE LÑA MANERA DE EXPLICARLO, Y TRANSMITIRLO
FELICIDADES Y MUCHAS GRACIAS POR COMPARTIRLO CON NOSOTROS
Definitivamente nos haz hecho 1 grandisimo fabor al publicar este macro, en lo personal es casi casi 1 vendicion jajajaja porque todos los dias tengo ke escribir cantidades en numeros y fechas luego de imprimirlos y a veces con tantas vueltas en la oficina me enredo jajajajaj 😛
Eres profesor o algo?¿?¿?¿?¿ muy muy muuuuy bien explicado y no bataye nada. Gracias y felicidades
GRACIAS POR SU INFORMACION!!!!!!
MUY SENCILLO Y FACIL DE UTILIZAR!!!!!!
FUNCIONA MUY BIEN!!!
ESTA GENIAL FELICIDADES.. NECESITO SABER COMO HACERLO PERO EN DOLARES
Hola soy de Monterrey, Mexico y uso el Microsoft Office Excel 2007, como lo puedo usar esa macro ya que las ventanas son diferentes en esta version a la que magistralmente nos ensenas….pudieras explicarnos a los que tenemos la ultima version de excel ??
Muchas Gracias
El Regio
Una disculpa a todos los de este ciber…..por leer todo de prisa no observe que ya esta contestada mi pregunta sobre excel 07….y les puedo decir que funciona de maravilla…saludos y gracias por el talento mexicano….!!
Les comparto la siguiente modificacion que realize a la formula de Mr. gchable, ya que no me servian los dos puntos y comas, en el momento de usarlo para facturas y descubri lo siguiente que me fue muy util al quitar algunos parentesis en la micro :
Loop Until lyCantidad = 0
PesosMN = "SON" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N."
End Function
me di cuenta que me queda de esta forma:
87547.56
SON OCHENTA Y SIETE MIL QUINIENTOS CUARENTA Y SIETE PESOS 56/100 M.N.
Espero les sea de su utilidad….espero quitarme lo ignorante…saludos desde Regiolandia ( Monterrey, Mexico )
Gracias Regio por tu aportación, seguramente servirá a mas de uno.
TENGO UNA PREGUNTA.
LA CELDA CON IMPORTE ME MARCA $1,156.33 Y AL MOMENTO DE LA CONVERCION SALE SON:( UN MIL CINETO CINCUENTA Y SEIS PESOS 32/100 M.N.) NO ES EN TODOS LOS CASOS. SOLO ALGUNOS.PERO SIEMPRE MARCA UNA DECIMAL MENOS.
QUE SE PUEDE HACER.
GRACIAS.
Hola Gerardo, pues tu problema esta en el importe que quieres convertir, no en el codigo, el codigo lo probe haciendo cientos de conbinaciones por segundo junto con otro codigo y solo falló en los importes menores a la unidad.
Usa la funcion redondear, o truncar segun sea el caso para obtener un importe sin centesimos diez milesimos etc.
Dale formato general a la celda para ver si no tiene mas decimales ocultos que no se ven con el formato de millares.
GCHABLE.
LO MODIFIQUE DE DIFERENTES MANERAS, LE PUSE, LE QUITE, PERO SIGUE IGUAL, A QUE CORREO TE MANDO UN ARCHIVO PARA QUE LO VEAS.
GRACIAS.
NO PUES SOLO PARA FELICITARTE ME SIRVIO DE MUCHO YA ME LOSABIA PERO COMO TENGO OFFICCE 2007 EN INGLES SOLO KERIA ACORDARM..
OYE SOLO PARA QUE ALGUINE ME AYUDE
AHORA KIERO LO MISMO PERO EN DOLARES
CANTIDAD EN LETRA EN DOLARES..
URGEEEEEEEE
YA GRACIAS YA LO CREEE YO MISMAAAAA EEE
ES FACILL INTENTENLOOO
SI KIEREN EL TIP DIGANME
ES FACIL ME GUSTA ENCONTRAR LO DIFICIL
Muchas gracia a sido de gran utilidad, estoy en colombia y aca no utilizamos 00/100, me colaboraria informandome como puedo para que los centavos me aparezcan en letras gracias
Excelente macro, me ayudo mucho en un desarrollo que estoy haciendo
Hola gchable, no podia quedarme atrás para agradecerte lo que me haz ayudado, la macro es super sencilla de utilizar a mi me ha funcionado excelente. Gracias y felicidades.
Desde Guadalajara.
Gonzalo:
Dejame darte la gracias, esto me servio para realiza un recibos de asimiliados, soy uno de los que mas le intelige a la pc, mi trabajo no quedaria sin esta macro.
Lo que te puedo decir es que sigo trabajando por ti.
Lo que unico que me queda es ayudar alguien mas, y que siga generandose esta cadena de ayuda y que en algun momento cuando lo necesites se te regrese.
Execelente formula muchas gracias!!! tarde mucho en encontrarla
EXELENTE, TANTO TIEMPO BUSCANDO Y AL FIN LO ENCONTRE…UNA PREGUNTA FUNCIONARA EN ACCES?
SALUDOS Y FELCITACIONES
Excelente.. gracias
Excelente gonzalo_conta, muchas gracias por el aporte, y un granito de arena, para guardar un complemento, simplemente es guardar tu archivo de excel pero como complemento de excel, Archivo / Guardar como / complemento de Microsoft Office Excel, de esa forma lo puedes utilizar en otro archivo excel, ingresando en Herramientas / Complemento / Examinar.
Saludos
Muy buen aporte Carlos
Gracias….excelente Gonzalo, es un tremendo gran aporte…visite varios sitios…pero solo el tuyo da en el punto..EXCELENTE!!!
Muy agradecido por tu gran aporte!!!
Me servira mucho. 😀
muy bien aplicado pero esta limitado a millones me podrias decir como se realiza este ejemplo para calcular miles de millones y billones,,,,,,,,
gracias!!!! y muy bien gracias por el apporte
Me rindo, agradezco tu amabilidad, dejame decirte que sigo tus instrcucciones, pego el codigo me salgo con alt+Q coloco la funcion =PesosMN() me funciona de maravilla estoy contento, pero de alli que hago? no se como guardarlo! lo he hecho de mil maneras me salgo pero cuando quiero entrar nuevamente al archivo me sale un mensaje de Microsoft debe cerrarse y enviar informe… es decir yo quiero llevar la formula a un archivo lo hago pero me sale ¿NOMBRE? YA hice todo lo de habilitar todas las macros en seguridad de la macro, lo de alerta de seguridad tengo office 2007.Debe haber algo facilito en que debo estar fallando ayudame! El codigo trabaja cuando lo pego en la macro pero como lo uso en otro archivo, como vuelvo a entrar a ese archivo y corregir por ejemplo lo de «SON» Microsoft con su mensaje no me deja entrar al archivo….
Mira la hora en la que me estoy desvelando… antes que nada tambien ya guarde el archivo como complemento de Excel y aun asi no puedo utilizar tu maravillosa conversion de numeros a letras, me conformo con pegar el codigo ver que funciona de maravilla y solo es alegria de pobre porque cuando me salgo de excell solo queda el recuerdo de que funciona pero lo que quiero es aplicarla a unos recibos que necesito hacer en EXCEL
Muy bueno el codigo fuente te felicito la verdad lo necesitaba muchisimo.
Gracias por el aporte que haces con nosotros principiantes.
hola amigo, soy de Guatemala, y he visto como has ayudado a toda esta gente,quisiera saber si me ayudas con un codigo o una funcion q convierta valor numerico a texto en quetzales verdad,estare muy agradecido ya que en mi trabajo me pidieron eso,pero por no saber mucho solicitu tu ayuda para salvar mi trabajo, te lo agradeceria mucho.
Gracias, no suelo necesitar de cambiar de números a letras pero de ves en cuando me traen facturas a llenar y este macro me facilitó las cosas,
Garacias mil de nuevo
Muchas gracias, lo digo de broma pero en verdad dedique mucho tiempo para poder utilizar esta opcion y nadie podia ayudarme, hasta que por suerte cai en este sitio.
lo felicito por sus conocimientos pero sobre todo porque tiene usted el don de COMPARTIRLOS
Hola Gonzalo, esta opción me está ahorrando mucho tiempo en el trabajo, así que gracias por compartila.
Una pregunta, podría cambiar el orden de PESOS 00/100 MN a 00/100 PESOS, simplemente?
Nuevamente gracias
Saludos
gracias por compartir tus conocimientos, eso habla muy bien de ti..
mil gracias.
hola, soy de colombiana, y he visto como has ayudado mucha gente,quisiera saber si me ayudas con un codigo o una funcion que convierta un valor numerico en letras pero en pesos colombianos ,estare muy agradecido ya que en mi trabajo lo necesito para egresos y fecturar ayudame porfis es urgente.
UN ABRZOTE Y BENDICIONES
Excelente aportación muchimas gracias por compartir tus conocimientos
Un abrazo
respuesta para carlos del 11 de septiembre yo lo guarde como complemento y si pude usarlo despues en otros archivos que tenia almacenados en usb espero que te sirva como lo hice las instrucciones estas son cuando estas en donde pegaste la programacion.
ahora bien, para que lo tengas siempre disponible debes guardar este libro asi como esta con las siguientes opciones:
Archivo, guardar como, colocale un nombre y cambien en guardar como tipo Compremento de Microsoft Excel *.xla, una vez que lo haz guardado, con el excel abierto vas a herramientas, complementos examinar, buscas la ruta, lo agregas y lo dejas tildado en la lista de complementos, cada vez que abras el excel se abrira ese lobro dejandote la funcion disponible en cada sesion de esa maquina, si requieres utilizarlo en otra maquina repite el paso de agregar el complemento
tu programa me sirvio muchisimo, te agradezco tu ayuda
mil gracias
Muchas gracias, estuve tratando varias veces de aplicar esta función y no había podido, en cambio de la forma como lo explican aqui es muy facil y funciona a la perfección…gracias nuevamente.
Una pregunta si abro el archivo en otro equipo puedo ver la información igual o solo me sirve para el equipo donde la grabe?
Hasta pronto
Muchas gracias me sacaste de un gran apuro para facturar, saludos…
Excelente aportación, dado que el nuevo excel trae algunas deficiencias que el anterior no traia, felicidades.
Excelente!!!!!!!!!!!!!!
es el mejor que he encontrado y eso que he usado varios.
gracias
no soy muy bueno en este tipo de comentarios, pero al cesar lo que es del cesar y de todo corazon lo felicito Gonzalo; que bueno es contar con personas super pilas q comparten su conocimiento para un buen fin
Dios le bendiga , augurandole muchos exitos mil felicidades Robin
GRACIAS POR TODO, EXELENTE DE TU PARTE POR COMPARTIR TU CONOCIMIENTO, UN ABRAZO DESDE CHIMBOTE – PERU.
FUNCIONA EXCENTE EN EXCEL 2007
Te felicito por el bien que nos haces a todos compartiendo lo que sabes… Me encanta!
oye esta genial pero como le hago para convertir numeros de 15 cifras por que esa es mi tarea y eso que estoy en primero de secundaria AYUDAME POR FAVOR SI!!!!!!!!!!!!!!!!!!!!!!!!!!!
Hola, antes que nada muchas gracias por el código y las instrucciones. Pocas son las personas que conocen excel tan a fondo. Escribo porque se me hizo interesante la posibilidad de que no escriba nada si la cantidad es 0 o si la celda no tiene nada escrito, ya que pone «PESO 00/100MN» ¿Me puedes dar alguna idea de como hacerlo?
Muchas gracias y felicidades
Yenssen usa la siguiente formula =SI(A1<1,»»,PesosMN(A1))
como le hago para que se convierta en dolares
desde hace tiempo andaba en busca de esta informacion y por fin lo encontre contigo, ya quedo mi libro, muchas gracias por compartirnos tus conocimientos.. que dios te bendiga!!!
Ola, muchas gracias por el codigo y la ayuda, solo quisiera saber como le hago para que en vez de pesos salga otro moneda o simplemente no salga la palabra pesos porque la moneda de mi pais es otra. si se pudiera son QUETZALEZ. gracias n serio…
Oye muchisimas gracias llevaba años buscando esta fución en Excel, ahora me has ahorrado hacer esto cada vez, de verdad 1000000000 de Gracias
EP
Mr. gchable:
Gracias por compartir lo que sabe, quisiera me sacar de mi ignorancia, manejo cantidades como 9.5 son premedios trabajo en una Escuela, que modificaciones puedo hacer.
Anticipo mi agradecimiento desde Tepeaca, Puebla,
Hola Me podrías ayudar con algo muy sencillo necesito una función para convertir un número a texto. Estoy haciendo planillas de calificaciones y las notas se escriben en números y letras.
Ej: 4 cuatro
Yo sólo quisiera escribir la nota en números y que excel me escriba en texto la nota automática.
Desde ya muchas gracias.
Por favor me podrías ayudar.
Carolina
Tengo tu respuesta Carolina. Mándame tu correo y allí te la envío. Saludos desde Durango, México.
Hola Omar Alonso, tengo el mismo problema de Carolina, necesito convertir notas de planillas de calificaciones a numero Ej: 4,5 = cuatro cinco
Podrías ayudarme?
Gracias
Maria
Gonzalo:
Tengo una archivo de excel programado con un combobox para que en la celda selecciona se muestre el valor que yo escoja que lo tomo de otra hoja del mismo archivo donde está mi lista de clientes.
El problema que se me presenta es que cuando modifico o inserto un nuevo registro en la lista me sale un mensaje de error de la clase «range». Simplemente doy click en finalizar el depurador y ya me deja trabajar, pero es muy molesto que se presente cada vez que edito algún dato en esa hoja. A continuación menciono el código de progración para ver si me puedes ayudar con ese detalle.
Private Sub ComboBoxNombre_Change()
Range(«B1»).Select
ActiveCell.FormulaR1C1 = ComboBoxNombre.Value
End Sub
Muchas gracias
Gonzalo:
Ayer te pedí ayuda para el código de programación de un combobox, pero no mencioné mi correo:
lupita_ramirez@infinitum.com.mx
Muchas gracias.
hola, esta super bueno el codigo, solo que como le puedo hacer para que aparaesca un millon de pesos, ya que solo aparece un millon pesos
muy bueno, gracias y muy cencillo de entender, ahora necesito uno igual pero para la hora…
GRACIAS ERES GENIAL, PERO TENGO UNA DUDA, CASI NO SE DE MACROS, Y SEGUI LOS PASOS QUE ESTAN AQUI, Y RESULTO BIEN,SIN EMBARGO EN LOS LIBROS QUE YA TENGO, QUISE COPIARLO PERO NO SUPE COMO, ES DECIR, EN ESTE CASO COMO LE HAGO PARA COPIARLO EN OTROS LIBROS, PORQUE ABRO EL LIBRO QUE QUIERO SE LLAMA FACTURAS, ENTONCES LE DOY HERRAMIENTAS LE DOY EDITOR VISUAL BASICS, LE DOY INSERTAR MODULO, Y COPIO TODO IGUAL PERO YA NO ME RESPETA LA FORMULA, ME PODRIAS INDICAR QUE HECHO MAL O COMO PODRIA HACERLE PARA QUE ME RESPETE LA FORMULA EN EL LIBRO, DE CUALQUIER FORMA MUCHAS GRACIAS POR TU ATENCION
Genial, de todo corazón lo felicito y le agradezco en el alma el que comparta sus conocimientos de esta manera tan altruista. CHAPEAU
ME FUNCIONA DE MARAVILLA AHORA PEDIRIA DE TU APOYO PARA QUE EN LUGAR DE PESOS SEAN DOLARES
GRACIAS
Wow! Gracias, ojalá y hubieran mas maestros como vos. Felicidades.
Gracias por el aporte llevaba un año buscando, que bueno que existen personas como usted dandole a conocer a los que no sabemos.
alguien puede ayudarme tengo un problema con las tablas excel 2007. De accidente le quité la opción para que cuando ingrese un registro se añada automaticamente a la tabla….. la he buscado para colocarla y no puedo…. no se como tengo que estar arrastrando con el mouse….. sirvanse ayudarme por favor
Excel
1. On the Developer tab, click Visual Basic.
HideI don’t see the Developer tab
1. Click the Microsoft Office ButtonButton image, and then click Excel Options.
2. Click Popular, and then select the Show Developer tab in the Ribbon check box.
Note The Ribbon is part of the Microsoft Office Fluent user interface
2. On the Help menu, click Microsoft Visual Basic Help.
3. In the Type words to search for box, type the method, property, function, statement, or object for which you want help, or type a query.
para el ke no encontraba visual basic de excel 2007
Hola,
Buenas noches. Quisiera agradecerte Gonzalo, por la información que de muy buena manera pusiste para el conocimiento de todos nosotros quienes visitamos tu blog, sin duda es de valiosa ayuda.
Por otro lado quisiera también agradecer a Pelayo sus comentarios adicionales en donde nos muestra como guardar y hacer válido esa Macro para todas las hojas de cáculo que queramos usar, él lo hizo para Excel 2003, dejo aqui como guardarlo y hacerlo váldio en Excel 2007.
*****
1. Haga clic en el botón de Microsoft Office Imagen del botón y, a continuación, haga clic en Opciones de Excel.
2. Haga clic en Complementos y, en el cuadro Administrar (parte inferior de la ventana), seleccione Complementos de Excel.
3. Haga clic en Ir.
4. En el cuadro Complementos disponibles, active la casilla del complemento que guardaste (aparecerá en ese listado el nombre que guardaste antes) y, a continuación, haga clic en Aceptar.
******
Espero que ésto también le pueda servir a alguna otra persona.
Saludos
Carzuri
gracias te estare eternemente agradecido
hola quiero hacer un pregunta como yo eso lo puedo colocar en todos los programas como power point word
habra una forma de masificarlo en mi computador ante toso gracias
Hola
tengo un problema con el codigo y es el siguiente:
cuando pongo 1000000 me sale un millon pesos 00/100 M.N.
como le hago para poner la palabra de antes de pesos.
tambien pasa lo mismo con 2000000, 3000000, etc
WILLDV, prueba modificando el codigo, busca:
» MILLON», » MILLONES «) reemplaza por » MILLON DE», » MILLONES «) espero que te sirva.
si me funciono como me dijiste pero ocurrio un error como consecuencia:
1,250,350.00 son: un millon DE doscientos cincuenta mil trescientos cincuenta pesos 00/100 m.n.
a lo que me refiero es que sale la palabra DE cuendo no es necesario, ¿ se le puede añadir lineas de codigo para que la palabra DE salga cuando sea necesario?
Excelente trabaja muy bien, gracias…
Hola, ya lo hice pero no me aparece el nombre con letra….solo #¿nombre?….
que puede estar pasando? gracias
Oye!!! mil gracias… estaba buscando eso para excel 2007… ke amable!!!
Te agradezco mucho por compartirnos la solución de este problema.. Saludos desde Bolivia
GRACIAS TE PASATE….
GRACIAS TE PASASTE….ERES UN GENIO
te pasaste muyyyy bueno
pero una consulta para que al final no salga por ejemplo
$51.952
SON: ( CUARENTA Y TRES MIL SEISCIENTOS CINCUENTA Y SIETE PESOS 00/100 M.N.)
eso q sale al final
a y tambien el número el ultimo me lo cambia
por favor yo creo q eres el único que me puede ayudar
graciasssssssss
hola… muchisimas gracias….
me funciono perfectamente
no sabes cuanto me has ayudado
que bueno que no eres egoísta con tu conocimiento.
besos!!!!
Funciona a la perfeccion harmano… muchas gracias, mira a cuantos has ayudado.. saludos
Muchas gracias, de todas las respuestas que encontre, lejos la tuya es la mejor…
solo tengo una duda, si quiero que los decimales tambien sean transformados a letras, cómo puedo hacerlo?
Gracias
Sara
hola amigo, oye fijate que abri la hoja de excel 2007 e hice todo lo que decia, si me funciono todo bien pero una vez que cerre la hoja de excell me aparecio lo siguiente:
«Las siguientes caracteristicas nose pueden grabar en libros son macros….Proyecto VB…..Para guardar un archivo con estas caracteristicas, haga click en NO, y a continuacion elija un tipo de archivo habilitado para macros en la lista tipo de archivo…….Para seguir guardadndo este archivo como libro sin macros, haga clic en SI»
le di clic en si porque no tengo un libro en macros entonces cuando volvi a abrirlo la funcion me salia asi:#¿nombre?…. que hago mi estimado mandame a mi correo plis!! te agradesco!!
Hola muchas gracias por el dato.
Quisiera saber como podria hacerle si quiero que
tambien me salga con formato de U.S.
Gracias me ayudo mucho
HOLA HOLA!, ESPERO QUE ESTES SUPER BIEN, BUENO PUES MUCHO QUE AGRADECERTE, EN VERDAD ERES UN EXPERTO EN ESTO EEH!, VAYA QUE ME HA SERVIDO MUCHISISISIMO TU IMFORMACION, YA EN 2 OCASIONES ME HA SERVIDO PORQUE HAN SIDO PARA EXAMENES FINALES, GRACIAS Y MUCHA SUERTE!
Excelente aportacion! Muy bien explicado! 100% Mexicano!
FELICIDADES!
hola, oye tengo un problema todos los pasos que pones son muy faciles
pero cuando quiero guardar el libro me sale un mensaje que dice: que no pueden guardar libros sin macros.
.proyecto VB.
y dice que para guardar un archivo con estas caracteristicas, elija un tipo de archivo habilitado.
y gracias de antemano
Hola, muchas gracias por toda tu información, pero tengo un problemita, ¿cómo puedo hacer para que las cantidades me salgan en inglés?… gracias por tu apoyo
Hola, tengo una duda, al salir de mi Hoja de calculo, el macro creado se borra, espero puedas ayudarme.
Utilizo Office 2007.
El macro me funciono perfectamente, el unico inconveniente es al momento de salir.
Jorge A López T
Dic-19-08
Tu programa es excelente, pero no cubre calores superiores a 999.999.999 sería posible que lo hiciera ?
gracias y saludos.
Bucaramanga, Colombia
Hola, Gonzalo y feliz navidad.
Es que no se si se puede pero seguro que si se puede tu lo sabras, jeje.
Tengo que hacer un cuadrante del mes. donde solo ponga una letra en cada celda y esta sea un valor el cual al final se sume todas las celdas.
Es decir en las filas iria el nombre y en las filas los dias del mes.
M= mañana = 8 horas
T= tarde = 6 horas
D= Dia = 13 horas
tendria q poner en cada celda M, T, D y al final me daria las suma de las horas.
Espero que me haya explicado bien y que tenga solucion.
GRACIAS
MUCHAS GRACIAS, ME SIRVIO MUCHO Y A LA PRIMERA ME SALIO
por fin algo que realmente sirve ..!!
Excelente, grn aporte y grcias por compartir tus conocimientos.
Gracias te felicito corrio a la primera aunque lo modifique para la moneda de mi pais Venezuela
Hola.
esta increíble el dato,
solo puedo decir …. gracias mil!
saludos!
EXTRAORDINARIO!!!
Si funciona, y funciona muy bien. (como dicen por ahi)
Lo que esta perfecto es la explicación. Desconozco tu profecion, pero doy gracias que personas como tu compartan sus conocimientos.
Nuevamente, MIL GRACIAS.
Gracias amigo me sirvio mucho, una pregunta y para cambiar a la moneda de dòlares que debo hacer.
Saludos Cordiales
Francisco
Sr. Mil gracias por tu apoyo.. como varios de los comentarios… te confirmo es la mejor explicacion y guia de como hacer esta funcion…
Gracias por tu ayuda….
Saludos desde la tierra del Sarapé….
tanto que batalle, si hubiese visto este blog antes, no hubiese batallado tanto.
Tengo un problema, en una computadora copie el libro con otros nombres y me aparecio un error, me aparece: » #¿NOMBRE? «, solo pude trabajar con con un solo libro y no pude hacerlo con ningun otro, me aparecia: » #¿NOMBRE? «.
¿que puedo hacer? ¿talvez hice algo mal?
Atte., Raul
GRACIAS ESTO ESTA EXCELENTE Y LE HICE ALGUNAS MODIFICACIONES EN PASARLO A DOLARES AMERICANOS
gracias amigo, por compartir cuestiones que muchos suelen quedarse con ellas y lo peor q no son de su autoria, muy loable lo que haces por todos los neófitos que buscamos y buscamos por todos lados. Jaja gracias
Me podria decir como le quito los parentesis
delarivaricardo@turbonett.com
gracias
CHULADA
DEBES ESTAR CANSADO DE TANTA FELICITACION. PERO EL TUYO FUE EL UNICO QUE ME DIO RESULTADO DE VARIAS CONSULTAS.
Muchas Gracias!!!
ES una EXCElente Aportacion!!!!!
FELICIDADES, SABES EXPLICAR MUY BIEN ME SALIO A LA PRIMERA Y BUSQUE VARIOS, NINGUNO LO PUDE USAR.
ESTE ES EL MEJOR
GRACIAS
Simplemente !Excelente! si me sirvio muchas gracias….
Esta super tu programa……….me saco de un apuro mil gracias y que sigas teniendo exito
MUCHAS GRACIAS POR ESTE METODO ,SOLAMENTE TENGO DIFICULTAD PORQUE AL GUARDARLO SO SE SOSTIENEN LOS CAMBIOS Y CUANDO SE VUELVE A ABRIME RECIBE LA FORMULA.
EN ESPERA DE SU RESPUESTA GRACIAS.
tienes alguna solución para convertir numeros de horas y minutos en texto?, por ejm. para 5:13 obtener «cinco horas trece minutos»?. muchas gracias, anticipadamente.
siguiendo mi pregunta anterior, pudiera ser también: 5:13 a «cinco horas 13/60»?. Gracias.
muchas gracias por esta explicación ya tenia mucho buscando y no entendia
HOLA AMIGO MUCHISIMAS GRACIAS POR TU APORTE …CONSULTE A MUCHOS ….NO MEDIERO ESTO ES EL UNICO DE UD FUNCIONO GRACIAS A UD…SOLO UNA PREGUNTITA SI YO QUIESIERA EN SOLES Y ADEMAS QUE DE CON TENTIMOS MAS…GRACIAS.
HOLA AMIGO MUCHISIMAS GRACIAS POR TU APORTE …CONSULTE A MUCHOS ….NO MEDIERO ESTO ES EL UNICO DE UD FUNCIONO GRACIAS A UD…SOLO UNA PREGUNTITA SI YO QUIESIERA EN SOLES Y ADEMAS QUE DE CON CENTIMOS MAS…GRACIAS.
amigo René, yo lo adapte a soles, moneda peruana, además me sale con el texto 00/100 nuevos soles, si gustas te puedo pasar la codificación de la macro, mi correo es wilberzr@hotmail.com
esta muy buena
si tengo un problema tengo que cuadrar los centavos ya que aca no trabajamos con estos y si es menor que 0.49 debe vajar y si es mayor a 0.5 debe subir
ejemplo 135,49 debe quedar en 135 y si es 135,51 debe quedar en 136
si se puede Haser algo
gracias
homabre eres el primero que explica con toda facilidad este show, la verdad me quede con los ojos cuadrados, funciona perfectamente.. lo puede en excel 2007 es un poco diferente la entrada pero es lo mismo, gracias.. y que tengas toda la suerte del mundo por ser tan amable de compartir lo que sabes.
Muchisimas gracias por el dato no sabes de cuanta utilidad, gracias por explicarlo de una manera tan sencilla y aprovechando tengo un problema al teclear una cifra en cualquier libro de excel en mi mauina en vez de apracer la cifra $1,000.00 que seria la manera correcta aparece $1.000,00 (me cambia los puntos por las comas) ya cambie el tipo de letra verifique que sea tipo modena lo cambie a contabilidad y nada quisiera saber si podrias ayudarme PORFAVOR!!!!! de verdad es algo muy importante para mi ya que yo elaboro facturas y las cifras deben ir correctamente MUCHAS GARACIAS!!!!
Buenas tardes, creo que el problema que tienes es muy sencillo, tienes que ir al panel de control y cambiar la configuración regional y de idioma. Tienes que ir a personalizar, se abre las opsiones simbolo decimal, número de digitos decimales…etc. hay debes cambiar el simbolo decimal por el punto(.) y el simbolo de separación de miles por la coma(,)
Espero que te funcione…
GRACIAS,GRACIAS,GRACIAS. De verdad que ayudo esto. GRACIAS
Si en algo puedo servir contactame.
Gracias, muy buen codigo y de mucha ayuda.
gonzalo te felicito por compartir con todos nosotros informacion que es muy util, muchas gracia
Excelente !!! Muy ingenioso, gracias por compartir tus conocimientos. yo lo habia logrado generando una base de datos de cierta cantidad de numeros y textos, y utilizando varias funsiones, pero se hacia muy pesado el archivo con tanto texto.
Nuevamente agradesco.
Muchas gracias me ayudo muchisimo su macro, al igual que el articulo encontraba otras pero no se ajustaban a mis necesidades.
Felicidades por su articulo.
excelente
Felicitaciones al creador de esta macro, es de mucha ayuda.
yo habia hecho un pequeño ejercicio utilizando la funcion buscarv,y formulas condicionales. pero solo hasta miles. es bastante complicado programar las formulas mas alla de 9.999,99
esta macro la modifique para adaptarla a los Bolivares, si alguien la quiere solo pidamela a mi correo magelp#hotmail (sustituyan # por @ y agreguen .com) es para evitar copiadores automaticos de correos.
Mi muy estimado Sr. gonzalo_conta
Estoy preparando un documental para intentar explicar la actual crisis económica (escribo esto el 26/feb/2009) y como las cifras que se manejan son totalmente inasibles para la mente, trataré de graficar las mismas fraccionandolas.
Su valioso aporte es de enorme ayuda para este trabajo que lo estoy haciendo también, sin ánimo de lucro, ya que mi trabajo es la fotografía. -Si me contacta por correo electrónico le enviaré el archivo de fotografias de la actividad cultural de mi ciudad-
Ahora bien, logre hacer algunas modificaciones para que quede asi como le muestro, pero el sistema deja de funcionar a partir de mil millones. ¿Cual puede ser la solución?
1 UN
10 DIEZ
100 CIEN
1.000 UN MIL
10.000 DIEZ MIL
100.000 CIEN MIL
1.000.000 UN MILLON
10.000.000 DIEZ MILLONES
100.000.000 CIEN MILLONES
1.000.000.000 MILLONES
10.000.000.000 #¡VALOR!
100.000.000.000 #¡VALOR!
1.000.000.000.000 #¡VALOR!
10.000.000.000.000 #¡VALOR!
100.000.000.000.000 #¡VALOR!
1.000.000.000.000.000 #¡NUM!
10.000.000.000.000.000 #¡NUM!
100.000.000.000.000.000 #¡NUM!
EXELENTE APORTACION Y LA VERDAD FUE EL MAS SENCILLO Y MEJOR EXPLICADO DE LOS QUE HABIA EN LA RED. MUCHAS GRACIAS Y QUE GRAN TALENTO TIENES SALU2 !!! ATTE. KIKE1984
Muchisimas gracias, me ha servido mucho.
Muy clara la explicaciòn.
Tambien gracias a «Pelayo» , pues lo guardè como El explica y me funciona cada vez que abro Excel.
mil gracias esta excelente tenia una semana de andarlo buscando y nada me funcionaba. solo es de leer detenidamente y un poco de concentracion y ya todo esta dado, este man es de miedo, gracias
Muchas gracias, funciona muy bien.
Sin embargo, despues de guardar y salir de Excel (2007), la siguiente vez que entro no funciona.
¿Alguien sabe porque?
mucha gracias muy bueno
debes de habilitar la macro, una pregunta donde quito la palabra un mil, que solo diga mil
elcodigo esta muy bien, tengo una duda, como lo puedo integrar a un formulario a la hora de ponerlo como boton de comando me pide un end sub al aplicarselo al final me sigue marcando error gracias por la informacion y en si el codigo es de muchisima ayuda gracias por compartir
Mil gracias por la explicacion tenia mucho tiempo queriendo hacer eso pero nunca lo habia logrado
Gracias
Muchas pero muchas gracias de verdad, hacía bastante tiempo que estaba buscando esta fórmula pero no la había podido encontrar por ninguna parte así de simplificada y ejemplificada a la vez, nuevamente muchas gracias….Atentamente, Eliana
CONTA GRACIAS POR EL CODIGO ESTA EXCELENTE Y SOBRETODO GRACIAS POR COMPARTIRLO, UNA PREGUNTA, QUEIERO QUE TAMBIEN LOS CENTAVOS LOS DESCRIBA EN LETRAS COMO LE HAGO POR FAVOR
ATENTAMENTE
HUGO
Hola Gonzalo, necesito convertir números en letras del 1 hasta un millón pero no con código «Macro».
Estoy trabajando con matrices y la fórmula para resolverlo tiene que estar en funciones sencillas como(Si, concatenando,buscar, etc.)
La respuesta tiene que darme en una sóla casilla.
Por favor deme ideas de cómo puedo resolverlo. Gracias
MIl gracias un macro muy util y buenisimo
Gacias mil……
ESTIMADO SEÑOR:
QUISIERA AGRADECER POR ESTA INFORMACION QUE HA COMPARTIDO HE BUSCADO DURANTE BASTANTE TIEMPO ESTA INFORMACION Y LA QUE UD HA PUBLICADO HA SIDO MUY METODICA Y CLARA, SIN EMBARGO SE ME PRESENTO EL SIGUIENTE PROBLEMA Y QUISIERA SI UD. ME PUDIESE EXPLICAR COMO PODER SOLUCINARLO.
EL CODIGO ME HACE LA CONVERSION HASTA 999 MILLONES Y NUESTRA BASE DE DATOS IMPLICA VALORES SOBRE LOS MIL MILLONES, HE TRATADO DE MODIFICAR EL CODIGO SIN RESULTADOS. AGRADECERIA QUE UD. ME PUDIESE AYUDAR EN COMO MODIFICAR EL CODIGO PARA QUE CONVIERTA VALORES SOBRE LOS MIL MILLONES.
POR EJEMPLO 1.245.576.879 PESOS
AGRADECIENDO SU COLABORACION.
ALEJANDRO
ALEJANDRO CHILE, Con este pequeño codigo por el momento no es posible, mira aqui por favor http://www.teladearana.es/todo-informatica/84-convertir-nos-a-su-equivalente-en-letras.html
oyes muchas gracias que dios te bendiga estoy segura que puedes entrar a la asociación MENSA
SALUDOS
Gracias si me sirvio despues de 4 hr en busqueda y entenderle por fin enconre la opcion como funciona mil gracias hehehee
No manches, esta con ganas tu solucion, te avientas bato…….excelente, muchisimas gracias……
Me sigue saliendo #¿NOMBRE? y ya hice lo que mencionaste de bajar la seguridad de macros a media q hago ?????
Muchas gracias por el aporte me parece genial y muy bien explicado por cierto.
Hola espectacular tu formula muchas gracias, solo una consulta señor como puedo hacer para que escriba solamente hasta pesos
por ejemplo:
450 = son : cuatrocientos cincuenta pesos
ESTA BIEN POR QUE AL PRINSIPIO SI DIO EL NUMERO LUEGO AL CAMBIAR LA CONTIDAD DE LA CELDA YA NO SIRVE
no ce
La verdad muchisisisisisisimas GRACIAS!!!!!
gracias me sirvio de mucho muchas gracias….me salvaste
Hola
Aunque sea redundante, esta muy profesional tu explicacion.
Pero no puedo grabar lo realizado en visual, me arroja un error y me dice que «no se puede realizar la operacion solicitada»
Porfavor ayudame, estaria muy agradecido.
Saludos
Matias Medina
Muchisisisisisisimas gracias
eres un angel
QUE EXCELENTE INFORMACION QUE NOS HAS DADO. TE LO AGRADEZCO
PODRIAS DECIRME COMO CAMBIAR ALGUNAS INSTRUCCIONES PARA QUE SE LEA ALGO ASI COMO ESTO:
23.52 …… VEINTITRES Y 52/100 NUEVOS SOLES 0
71.33……. SETENTIUNO Y 33/100 NUEVOS SOLES
ES PARA PERU , MUCHAS GRACIAS DENUEVO.
SR. mis respetos
excelente codigo, anteriormente contaba con uno pero no añadía MN 00/100, lo cual era un problema, con este codigo tuve algunos problemas pero leí todas tus sugerencias a las preguntas que te hicieron después y finalmente quedo en excel 2007.
bien hecho.
Hola, funciono muy bien!!, ¿como puedo hacer para utilizar esta funcion en cualquier libro, sin que este abierto en el cual lo grave?
agdezco comentario
QUIERO AGRADECERTE ESTA UTIL INFORMACION QUE COMPARTES. De todas las que he probado, es la mas sencilla y eficiente, y… de nuevo GRACIAS
Es increible que los usuarios lleguemos a este nivel de entendimiento y se logre que el conocimiento se difunda libre y democraticamente.
Muchas felicidades a todas las personas que contribuyeron a esta ayuda que es de utilidad para muchos.
Muy Buen Aporte Gracias
GONZALO Buenos días. Como le puedo hacer para que esta funcion de convertir numeroa a letras en Excel. Me funcione para cualquier libro. Sin necesidad de hacer el procedimiento cada ves que lo quiera aplicar para otros libros, ya que no me esta funcionando para más libros. Te agradesería michisimo tu ayuda…………… Gracias
Carlos, lo que tienes que hacer es insertar el «modulo» en cada uno de tus libros de trabajo.
Cuando creas un libro nuevo y si vas a usar la funcion, tienes que insertar el codigo, ya que si agarras la funcion de otro libro se perderá al cerrar.
saludos.
HOLA, FELICIDADES Y MUCHISIMAS GRACIAS, PERSONAS COMO TU HAY POCAS, Y QUE DIOS TE SIGA BENDICIENDO CON MAS INTELIGENCIA DE LA QUE TIENES, Y ESPERO LA SIGAS COMPARTIENDO POR QUE NO TODOS LA COMPARTEN SON EGOISTAS.
OTRAVEZ MIL GRACIAS.
Oye mil gracias, esta super way
me has salvadola vida, saludos desde cancun
Me ayudo muchisimo. Gracias por compartilo¡¡¡¡¡
Orale erisel, vayamos a la yaxchilan a tomar unas chelas!
OMG……….. MEN, ACABAS DE SOLUCIONAR… UN PROBLEMA QUE TENIA DESDE YA HACE TIEMPO…. Y PROBE CON 2 O TRES MAS DE OTRAS PERSONAS… PERO NO FUNCIONABAN…. LA TUYA… FUNCIONA A LA PERFECCION… GRRRAAAAACIAAAS!!!!
Quiero agradecerte la facilidad y el apoyo para utilizar parte de tu trabajo, ya que me ha sido de gran apoyo y utilidad.
Muchas gracias
muchisisimas gracias es exelente
estaba como loquita buscando la forma y apenas lo encontre con usted,
LO LOGREEEEEEEEEEEEEEEEEEEE
TENIA SEMANAS INTENTANDO
Y AL FIN LO LOGREEEEE
GRACIAS CONTA_CONZALO MILLLLLLLLLLLL GRACIAS 00/100
Muchas gracias, por tu colaboraciòn, Dios te bendice siempre a ti y a tu Familia.
Saludos desde Oaxaca, que cuando quieras pasar unas vacaciones con gusto te atendere.
MASTER . . . MUCHAS GRACIAS
ME ES MUY ÚTIL TU MACRO.
SALUDOS DESDE VERACRUZ
Hola:
Gracias por compartir tu trabajo con las demas personas. Esta macro es muy importante para realizar gran cantidad de trabajo.
Sin embrago yo segui los procedimientos para copiar la macro, la primera funcionó pero al volver a copiarla al siguiente dia no funcionó, sale el siguiente mensaje:
#¿NOMBRE?
Todas las macros estan habilitadas, esto lo he repetido como 10 veces y no he logrado.
¿Hay otra forma de guardarlo?
Gracias por tus aportes.
Fidel Cruz
Hola Fidel
A mi también me paso lo mismo. lo que tienes que hacer es guardar la macro en personal.xls y de esta manera va estar disponible para cualquier libro. lo que tiene que hacer es anteponer a la función PesosMN( ) personal.xls! osea quedaría de la siguiente manera: =personal.xls!PesosMN(A1).
Es importante que solamente la graves una sola ves, en personal.xls, ya que de lo contrario no va a funcionar.
Espero sea de utilidad………….Saludos
Hola Mr. Gonzalo
Como puedo borrar las macros que tengo guardadas, o sea dejar en cero todo.
Tengo una urgencia con esa macro. me ahorraría gran cantidad de trabajo.
Gracias por su ayuda
Wooo!!! Genial …. mi respeto … super tu respuesta..funciona excelente…
Saludos Esme
Super!!! ya lo utilice y funcionó a la perfección… MIL GRACIAS
Saludos desde Queretaro, México
LIZ.
Excelente!!! realmente genial… estoy facinado con tu grandeza amigo por compartirlo y con los que lo crearon… esta super facil con tu excelsa explicación…. nuevamente gracias.
Saludos y gracias por aportar ese conocimiento acabo de realizarlo en mi maquina. lei que bajando el nivel de seguridad de la macro al abrir uno nuevo, podria utilizarlo pero no funciona te garadecere si me ayudas en ello, y gracias nuevamente
MAS QUE EXCELENTE LA EXPLICACION PARA CREAR LA FORMULA Y EN HORA BUENA AL CREADOR… ES TODO UN GENIO ¡¡¡
EXELENTE GRACIAS ESTUVE BUSCANDO ALGO ASI ASE MUCHO TIEMPO Y ESTE ESEL MEJOR ESTA MUY BIEN EXPLICADO LE HICE ALGUNAS MODIFICACIONES PARA LO QUE NECESITO Y ME FUNCIONO CMO YO LO QUERIA y FUNCIONA PERFECTO EN EXEL 2007 GRACAS QUE BUEN APORTE
Muchas gracias en verdad despues de buscar mucho fue la unica realmente util. Me gustar[ia quitar los numeros que salen al final 98/100 o al menos saber su significado.
Gracias
buenas este apartado con esta explicacion esta exelente es el unico sitio donde pude lograr esto. muhas gracias porla ayuda
Su pagian es genial podemos seguir aprendiendo cada dia mas gracias a personas que dejan abietos sus conocimientos hacia los demas de verdad felicitaciones
Estimado Gonzalo,
Gracias por tu aporte, lo he adoptado a mi moneda y es de gran ayuda; pero tengo un problema, cuando necesito escribir en letras el numero 1,001 o cualquier numero que por unidad sea 1, la formula me da como resultado «UN» y deberia ser «UNO», por ejm.
Numero: 1,001.00
Fórmula: UN MIL UN CON 00/100 NUEVOS SOLES
dederia ser: UN MIL UNO CON 00/100 NUEVOS SOLES
Numero: 201.00
Fórmula: DOSCIENTOS UN CON 00/100 NUEVOS SOLES
dederia ser: DOSCIENTOS UNO CON 00/100 NUEVOS SOLES
Tu crees que esto tiene solución?, de todas maneras Gracias por tu ayuda!
GRACIAS, GRACIAS, MUCHAS GRACIAS. ES JUSTO LO QUE NECESITO. FUNCIONÓ PERFECTAMENTE.
En excell 97 existia en la barra de herramientas Visual Basic; pero en excell 2007 en la barra no aparece este menu (HERRAMIENTAS), entonces que lo reemplazo? Como hago para trabajar con Visual Basic? desd excell 2007
Hoye esta muy bueno los pasos que nos das me agrado mucho la verdad le hice una mejoria para quitarle el (Son) y hacer que me escribiera (Veinte y un mil ) etc pero tube un problema la verdad en mi factura que realize esta fue la cantidad 961mts por $ 3.50 son sub total $ 3,363.50 mas el 15% que es 504.53 hal hacer la suma completa nos da $ 3,868.03 estamos claro pero al hacer =pesosmn(xcelda) meda en letras (Tres mil ochocientos sesenta y ocho pesos 02/100 mn a lo que me refiero por que me da en centavos 2 si debe de ir el numero 03/100mn espero me puedas hechar la mano muchas gracias
Daniel Lama, tienes que redondear tus numeros a dos decimales o truncar, ya que si aumentas el numero de decimales visibles te dras que tienes 3,868.025.
SALUDOS, TARDE MAS DE 2 AÑOS Y SOLO TU EXPLICACION FUE LA MAS SENCILLA, GRACIAS
QUE TAL GONZALO, HICE LO QUE DICES Y RESULTA QUE NO ME QUIERE FUNCIONAR, TAL VEZ SEA PORQUE ESTOY TRABAJANDO CON EXCEL 2007, CUANDO PRUEBO LA MACRO ME SALE ESTA LEYENDA: «ERROR DE COMPILACION, LOS COMENTARIO SOLAMENTE PUEDEN APARECER DESPUES DE End Sub, End Function, o End Property» Y ME SEÑALA ESTE RENGLON DE LA FORMULA QUE APARECE AL FINAL, ActiveCell.FormulaR1C1 = «1500.21» SELECCIONADA LA CANTIDAD QUE APARECE ENTRE COMILLADA, ME PODRIAS DECIR QUE DEBO HACER PARA QUE FUNCIONE?, DE ANTEMANO TE AGRADEZCO, SALUDOS!!
DE POCA MAESTRO, ERES LA LEY, TE VAS A IR AL CIELO DIRECTITO, INSISTO DE POCA, MIS ALABANZAS Y MEJORES DESEOS
ATTE
EL TANQUE RODRIGUEZ
Simplemente te pasaste muchas muchas gracias por compartir amigo; estoy tratando de ponerlo a soles que es lo que se usa en mi pais 🙂 espero me salga
Genial, gracias por compartir amigo,genial eres lo maximo.
MIL GRACIAS ERA LO QUE ESTAB BUSCANDO
Hola
Muchas gracias por compartir tus conocimientos, hace unos días copie la programación del BV, y adapte a mis necesidades y funciona muy bien. Muy buen trabajo has realizado. He tratado de hacer una modoficación y no he podido realizarla, agradezco tu ayuda, la modicicación que quiero hacer consiste en los valores terminados en 1 (uno)mayores a 30 (treinta) por ejemplo 31 (treinta y uno); la macro lo escribe «treinta y un», y si modifico en el sétimo renglon para que diga «uno»; luego cuando valores mayores a 999, por ejemplo; 1000, la macro me escribe «uno mil». Gracias una vez más. Saludos. Mauro
Excelentisimo !!! Gracias…
Mui Buena informacion
mui bien explikada
Graxias x este aporte
esta mui bueno
me salio todo bien
no tube ningun problema para
entenderle.. mui bueno
GraXias Hasta LUego
alvaro por favor me puedes enviar la formula a mi correo por favor Dios le bendiga
Se te gardece wue te tomes el tiempo de explicar estos temas.
Gracias, buenos aportes
HOMBRE SI ALGUNA VES NESCITAS ALGO Y YO PUEDO AYUDARTE CUENTA CON ELLO EN CUALQUIER TIEMPO MI Email renegadohn@hotmail.com
no es broma
y GRACIAS
renegado_hn@hotmail.com ERROR DE DEDO EL ANTERIOR ES MI MAIL DISCULPA
Hola estimado,
Me sumo a todas las felicitaciones que haz tenido por el aporte que entregas.
Solo queria pedirte un grandisimo favor. Lamentablemente no se mucho de excel, pero pude aplicar la funcion en una planilla, pero lamentablemente aca en CHILE, nuestra moneda trabaja con valores enteros y sin decimales, ni centavos, por lo que te agradeceria si nos puedes realizar la modificacion para que al colocar un numero, solo escriba hasta la palabra «Pesos».
Trate de redondear los valores, pero aun asi, aparece las siglas «00/100 M.N»
la idea es que fuera de la siguiente manera, ejemplo:
8.772.141 = «OCHO MILLONES SETECIENTOS SETENTA Y DOS MIL CIENTO CUARENTA Y UN PESOS»
Si algunos de los cibernautas sabe como poder solucionar este inconveniente, por favor envienme mail a:
contab1@veterquimica.cl
Muchisimas gracias por tu aporte GCHABLE desde Chile «el ultimo rincon del mundo»
Saludos
OYE ES MUY SENCILLA TU EXPLICACION GRACIAS…
Muchas gracias por el codigo me ahorro mucho tiempo para terminar el mio.
REspecto a la pregunta de marco de chile, solo debes modificar penultima linea del código:
original:
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
para que salga como tu quieres:
PesosMN = «» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 .»
espero te sirva.
gracias a quien programo el codigo.
Tu macro funciona de maravilla pero, cuando lo grabo con la opción libro excel habilitado para macros ya que tengo Office 2007, y lo vulevo a abrir me sale un error.
Que puedo hacer?
si se necesita porner otra monea como es caso mio usamos «soles» solo cambias en el codigo donde dice «PESOSMN» POR «SOLESMN» Y EN VES DE SOLES DE FORMA PLURAL POER SOL EN FORMA SINGULAR GRACIAS POR TODO ESTE PUEDE SER MUY BUENO PARA REALIZAR FACTURAS O ALGO ASI
SALUDOS
Muchisimas gracias estupendo quisiera saber si con otras hojas se hace el mismo procedimiento o se graba para todas
Bogotà
Excelente!!!!! en verdad, tarde mucho tiempo buscando algo así y sobre todo con el 00/100 m.n., más que bien, por otro lado tuve algunos problemas para grabar el archivo ya que cuando lo volvia abrir ya no estaba la formula :), pero revisando todo el blog, me encontre la solución de guardarlo como un complemento, así que pensaron en todo. Felicidades y sobre todo por compartirlo en la red.
Hola solo quiero decirte que eres increible, me sirbio de mucho tu ayuda, te agresco por compartir esto con todos nosotros, seguire visitando tu pagina, gracias.
DESPUES DE BUSCAR Y BUSCAR, ENCONTRE LO MAS PRACTICO Y FACIL PERO SOBRE TODO UTIL, GRACIAS.
no le entendi a nada
Hola,
Me encontre esta macro de la verdad ya no se donde y solo hice algunos pequeños cambios para mexico, si a alguien le puede servir, para el tipo de moneda solo hay que cambiar en la funcion la palabra peso por la moneda deseada y lo que consideren pertinente, este es el codigo:
‘Una vez que has ingresado tu macro a excel, cierra el Visual Basic y enseguida escribes la
‘formula donde quieras que aparesca el texto del número a convertir ejeplo: suponiendo que
‘la cantidad a convertir está en la celda A1 y quiero me texto en la celda B7, entonces
‘selecciona la celda B7 y escribo la formula siguiente:
‘
‘ =Numeros_Letras(suma(A1),»peso»,falso,»centavo»,»son: ( «,»/100 M.N. )»)
‘
‘ Así, cualquier cantidad que escribas en A1, está formula te la dará en texto.
‘
Public Function Numeros_Letras(ByVal Numero As Double, _
ByVal Moneda As String, _
Optional Fraccion_Letras As Boolean = False, _
Optional Fraccion As String = «», _
Optional Texto_Inicial As String = «», _
Optional Texto_Final As String = «», _
Optional Estilo As Integer = 1) As String
Dim strLetras As String
Dim NumTmp As String
Dim intFraccion As Integer
strLetras = Texto_Inicial
‘Convertimos a positivo si es negativo
Numero = Abs(Numero)
NumTmp = Format(Numero, «000000000000000.00»)
If Numero < 1 Then
strLetras = strLetras & "cero " & Plural(Moneda) & " "
Else
strLetras = strLetras & NumLet(Val(Left(NumTmp, 15)))
If Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
strLetras = strLetras & Moneda & " "
ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
strLetras = strLetras & "de " & Plural(Moneda) & " "
Else
strLetras = strLetras & Plural(Moneda) & " "
End If
End If
If Fraccion_Letras Then
intFraccion = Val(Right(NumTmp, 2))
Select Case intFraccion
Case 0
strLetras = strLetras & "con cero " & Plural(Fraccion)
Case 1
strLetras = strLetras & "con un " & Fraccion
Case Else
strLetras = strLetras & "con " & NumLet(Val(Right(NumTmp, 2))) & Plural(Fraccion)
End Select
Else
strLetras = strLetras & Right(NumTmp, 2)
End If
strLetras = strLetras & Texto_Final
Select Case Estilo
Case 1
strLetras = StrConv(strLetras, vbUpperCase)
Case 2
strLetras = StrConv(strLetras, vbLowerCase)
Case 3
strLetras = StrConv(strLetras, vbProperCase)
End Select
Numeros_Letras = strLetras
End Function
Public Function NumLet(ByVal Numero As Double) As String
Dim NumTmp As String
Dim co1 As Integer
Dim co2 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim TFNumero As String
NumTmp = Format(Numero, "000000000000000") 'Le da un formato fijo
co1 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While co1 <= 5
co2 = 1
Do While co2 1 Then
Leyenda = «billones »
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Leyenda = «mil millones »
ElseIf cen + dec + uni >= 1 Then
Leyenda = «mil »
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = «millon »
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = «millones »
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = «mil »
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = «»
End If
End Select
co1 = co1 + 1
TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda
Leyenda = «»
letra1 = «»
letra2 = «»
letra3 = «»
Loop
NumLet = TFNumero
End Function
Private Function Centena(ByVal uni As Integer, ByVal dec As Integer, _
ByVal cen As Integer) As String
Dim cTexto As String
Select Case cen
Case 1
If dec + uni = 0 Then
cTexto = «cien »
Else
cTexto = «ciento »
End If
Case 2: cTexto = «doscientos »
Case 3: cTexto = «trescientos »
Case 4: cTexto = «cuatrocientos »
Case 5: cTexto = «quinientos »
Case 6: cTexto = «seiscientos »
Case 7: cTexto = «setecientos »
Case 8: cTexto = «ochocientos »
Case 9: cTexto = «novecientos »
Case Else: cTexto = «»
End Select
Centena = cTexto
End Function
Private Function Decena(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String
Select Case dec
Case 1:
Select Case uni
Case 0: cTexto = «diez »
Case 1: cTexto = «once »
Case 2: cTexto = «doce »
Case 3: cTexto = «trece »
Case 4: cTexto = «catorce »
Case 5: cTexto = «quince »
Case 6 To 9: cTexto = «dieci»
End Select
Case 2:
If uni = 0 Then
cTexto = «veinte »
ElseIf uni > 0 Then
cTexto = «veinti»
End If
Case 3: cTexto = «treinta »
Case 4: cTexto = «cuarenta »
Case 5: cTexto = «cincuenta »
Case 6: cTexto = «sesenta »
Case 7: cTexto = «setenta »
Case 8: cTexto = «ochenta »
Case 9: cTexto = «noventa »
Case Else: cTexto = «»
End Select
If uni > 0 And dec > 2 Then cTexto = cTexto + «y »
Decena = cTexto
End Function
Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String
If dec 1 Then
Select Case uni
Case 1: cTexto = «un »
Case 2: cTexto = «dos »
Case 3: cTexto = «tres »
Case 4: cTexto = «cuatro »
Case 5: cTexto = «cinco »
End Select
End If
Select Case uni
Case 6: cTexto = «seis »
Case 7: cTexto = «siete »
Case 8: cTexto = «ocho »
Case 9: cTexto = «nueve »
End Select
Unidad = cTexto
End Function
‘Funcion que convierte al plural el argumento pasado
Private Function Plural(ByVal Palabra As String) As String
Dim pos As Integer
Dim strPal As String
If Len(Trim(Palabra)) > 0 Then
pos = InStr(1, «aeiou», Right(Palabra, 1), vbTextCompare)
If pos > 0 Then
strPal = Palabra & «s»
Else
strPal = Palabra & «es»
End If
End If
Plural = strPal
End Function
Hola, amigo, esta bien claro la explicacion que das pero quisiera adaptarla para mi pais Peru, aqui por ejemplo en la facturacion se utiliza como sigue:
imaginemos que el total de la factura es: S/. 1220.20
eso en letras sería como sigue:
SON: MIL DOSCIENTOS VEINTE CON 20/100 NUEVOS SOLES
(asi es como quisiera que tu codigo arroje las letras)
Trate de modificar tu codigo pero como no soy experto en esto no me sale, podrían ayudarme. Gracias.
Excelente explicacion, super clara, muchas gracias por tu aportacion.
hola un aporte más, en una macro en codigo menos larga que la anterior pero que te funciona igal con los decimales y los millones y billones, para quienes quieren la conversión de números a texto en el Perú la modifiqué en la línea siguiente:
TFNumero = «( *** son » & TFNumero & Leyenda1 & » con » & Mid(NumTmp, 17) & «/100 M.N. ) *** »
por lo tanto la misma línea quedará como sigue:
TFNumero = «( son: » & TFNumero & Leyenda1 & » con » & Mid(NumTmp, 17) & «/100 NUEVOS SOLES »
Claro está que no soy un experto ni mucho menos pero pobremente espero poder aportar algo de lo mucho que me han aportado los maestros.
esta es la macro completa, sólo copiala y la pegas en el VB despues de pegar la macro cierras el BV y listo, la formula que has de itroducir donde deseas que aparesca el texto es: ejemplo =NumLetras(A1,1) «,1 para mayúsculas y ,2 para Minúsculas» y listo a trabajar con tus facturas,espero que les sirva de mucho. muchos Saludos, mi correo es resgros@hotmailcom
Option Explicit
Dim cTexto As String ‘Variable para las funciones
Public Function NumLetras(ByVal Numero As Double, ByVal Mayusculas As Integer) As String
Dim NumTmp As String
Dim c01 As Integer
Dim c02 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim Leyenda1 As String
Dim TFNumero As String
If Numero < 0 Then Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00") 'Le da un formato fijo
c01 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While c01 <= 5
c02 = 1
Do While c02 1 Then
Leyenda = «Billones »
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Leyenda = «Mil Millones »
ElseIf cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = «Millón »
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = «Millones »
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = «»
End If
End Select
c01 = c01 + 1
TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda
Leyenda = «»
letra1 = «»
letra2 = «»
letra3 = «»
Loop
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
Leyenda1 = "Cero Pesos "
ElseIf Val(NumTmp) = 1 Or Val(NumTmp) 0 Then
cTexto = «veinti»
End If
Case 3: cTexto = «treinta »
Case 4: cTexto = «cuarenta »
Case 5: cTexto = «cincuenta »
Case 6: cTexto = «sesenta »
Case 7: cTexto = «setenta »
Case 8: cTexto = «ochenta »
Case 9: cTexto = «noventa »
Case Else: cTexto = «»
End Select
If uni > 0 And dec > 2 Then cTexto = cTexto + «y »
Decena = cTexto
cTexto = «»
End Function
Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
If dec 1 Then
Select Case uni
Case 1: cTexto = «un »
Case 2: cTexto = «dos »
Case 3: cTexto = «tres »
Case 4: cTexto = «cuatro »
Case 5: cTexto = «cinco »
End Select
End If
Select Case uni
Case 6: cTexto = «seis »
Case 7: cTexto = «siete »
Case 8: cTexto = «ocho »
Case 9: cTexto = «nueve »
End Select
Unidad = cTexto
cTexto = «»
End Function
Sub nl()
‘
‘ nl Macro
‘
End Sub
Hola Apreciable JEAN
Mil disculpas en el codigo anterior, no hice las correcciones pertinentes ya que no puse cuidado en lo que solitas, pero esta macro está lista pura lo que necesitas.
Copiala desde la línea que esta enseguida y hasta el final.
‘ las indicasiones para la formula están al final de la macro…
Option Explicit
Dim cTexto As String ‘Variable para las funciones
Public Function NumLetras(ByVal Numero As Double, ByVal Mayusculas As Integer) As String
Dim NumTmp As String
Dim c01 As Integer
Dim c02 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim Leyenda1 As String
Dim TFNumero As String
If Numero < 0 Then Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00") 'Le da un formato fijo
c01 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While c01 <= 5
c02 = 1
Do While c02 1 Then
Leyenda = «Billones »
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Leyenda = «Mil Millones »
ElseIf cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = «Millón »
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = «Millones »
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = «»
End If
End Select
c01 = c01 + 1
TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda
Leyenda = «»
letra1 = «»
letra2 = «»
letra3 = «»
Loop
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
Leyenda1 = "Cero Pesos "
ElseIf Val(NumTmp) = 1 Or Val(NumTmp) 0 Then
cTexto = «veinti»
End If
Case 3: cTexto = «treinta »
Case 4: cTexto = «cuarenta »
Case 5: cTexto = «cincuenta »
Case 6: cTexto = «sesenta »
Case 7: cTexto = «setenta »
Case 8: cTexto = «ochenta »
Case 9: cTexto = «noventa »
Case Else: cTexto = «»
End Select
If uni > 0 And dec > 2 Then cTexto = cTexto + «y »
Decena = cTexto
cTexto = «»
End Function
Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
If dec 1 Then
Select Case uni
Case 1: cTexto = «un »
Case 2: cTexto = «dos »
Case 3: cTexto = «tres »
Case 4: cTexto = «cuatro »
Case 5: cTexto = «cinco »
End Select
End If
Select Case uni
Case 6: cTexto = «seis »
Case 7: cTexto = «siete »
Case 8: cTexto = «ocho »
Case 9: cTexto = «nueve »
End Select
Unidad = cTexto
cTexto = «»
End Function
Sub nl()
‘
‘ Después de haber copiado todo el código completo en el VB, cierra el VB y te vas a la hoja de Excel.
‘ Suponiendo que tienes el total de tu factura de $ 158,325.68 en la cela (F15)entonces la formula
‘ que habrás de escribir en la celda F15 será la siguiente:
‘ =NumLetras(F15,1) el resultado es el que se muestra en la siguiente línea.
‘ SON CIENTO CINCUENTA Y OCHO MIL TRESCIENTOS VEINTICINCO CON 68/100 NUEVOS SOLES
‘
‘ Habrá que recordar que ,1 es para mayúsculas y ,2 es para minúsculas.
‘
‘
End Sub
Muchisimas gracias en serio que muy buen trabajo de tu parte!!
gracias por la macro, me funciono perfectamente, pero tengo una poregunta… como hago para que la macro la pueda habilitar en excel sin necesidad de tener que copiar el codigo fuente en cada libro .. gracias…
Hola CAMALEON_W,
Espero que esto te sirva y ya no vatalles con tu excel,
no se como subir el texto con imagenes pero el documento completo lo tengo en Word ahí esta mi correo resgros@ hotmail.com para que me mandes el tuyo y por ese medio enviartelo como documento adjunto, saludos.
En excel, disponemos de un libro oculto llamado personal.xls (en Excel 2007, tiene extensión xlsb, por lo que se llamará personal.xlsb), como seguramente ya conocerás. También sabrás seguramente, que este libro es de una gran utilidad si utilizas habitualmente los mismos macros en diferentes libros. En el libro personal.xls (o personal.xlsb, si usas Excel 2007) podemos tener almacenadas nuestras macros más habituales, para poder utilizarlas en cualquier otro libro de excel, sin necesidad de tener que implementar el código VBA en estos nuevos libros que vamos abriendo o creando.
Para grabar una macro en el libro oculto personal.xls (o personal.xlsb, si usas Excel 2007), tan solo deberemos indicar en el momento de su creación, que queremos que se almacene en el mencionado libro. Para ello, utilizaremos la grabadora de macros, tal y como se muestra en las siguientes imágenes:
Una vez elegido el sitio donde vamos a grabar el macro, esto es, en el libro de macros personal, bien podemos detener la grabación, o bien podemos realizar las tareas que queremos que grabe el macro. En cualquiera de los casos, una vez finalizada la grabación del macro, si accedemos al modo VBA pulsando Alt+F11, nos encontraremos con que aparece un nuevo proyecto llamado PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007) , tal y como se muestra en la imagen:
Dentro de la categoría de Módulos, podremos editar el código del macro, borrarlo, o crear nuevos macros, y todos ellos los tendremos disponibles siempre, aunque estemos trabajando con uno, cinco, o veinte ficheros de excel diferentes.
Cuando vayamos a ejecutar un macro, llamándolo desde Herramientas, Macro, Macros…, nos aparecerán las macros propias del libro con el cual estemos trabajando, junto con las macros grabadas en el fichero personal.xls (o personal.xlsb, si usas Excel 2007), tal y como se muestra en la siguiente imagen:
Dos últimas cuestiones que mencionar respecto al libro PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007):
1.- Podemos ver que realmente se trata de un fichero oculto, desde Ventana, y seleccionando Mostrar…. Allí nos aparecerá esto que muestra la imagen (mejor dejar el fichero como oculto):
2.- Para grabar las macros en PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007), cuando cerremos excel, nos saldrá un mensaje como este de la imagen, y al que tendremos que contestar con un rotundo sí, si lo que deseamos es grabar esas macros en el libro oculto, para que estén disponibles siempre que las necesitemos:
Si lo que deseamos es llamar a una función personalizada que tengamos en el libro personal, lo haremos de esta forma (suponiendo que la función que hayas creado se llame mifuncion):
=PERSONAL.XLS!mifuncion()
Hola Serapio Reséndiz:
LEI TU COMENTARIO SOBRE LA FORMA EN LA QUE SE PUEDE GRAVAR UNA MACRO DE FORMA PERMANENTE EN EXCEL (2007) EN MI CASO.
PODRIAS ENVIARME LA EXPLICACION COMPLETA (INCLUYENDO IMAGENES)?
MI CORREO ES xt20@yahoo.com
GRACIAS.
Excelente amigo!!!
¿Sabes? había buscado esta opción en varias ocasiones, sin éxito alguno. Eres un tipo a todo dar por compartir tus conocimientos con todos nosotros. ¿Podrías ayudarme por favor indicándome cómo le hago para quitar la palabra: «SON»? Gracias anticipadas y que DIOS TE BENDIGA HERMANO!!!
Salu2
Gonzalo:
Sobre la pregunta anterior, ya la solucioné. Ahora dime, cómo quitar la palabra «UN» hablando de las cantidades de $1,000.00 a $1,999.99. Osea, que la cantidad en texto me quede en: (MIL PESOS) Y NO EN (UN MIL PESOS)Gracias de nuevo.
MikeMR Busca la palabra SON en el codigo y eliminalo
MikeMR Busca la palabra UN en el codigo linea 7, y borralo, deja solo las comillas, no deverias quitarlo, de lo contrario en los millones dira MILLON en lugar de UN MILLON
muy buen trabajo, mil gracias… queria saber si existe algún modo para que quede guardado en mi excel, pues cada vez que abro un libro nuevo tengo que volver a entrar a macros… no se queda guardada.. existe alguna solución? saludos desde merida.. muy buen trabajo y gracias por compartirlo
Gracias otra vez hermano! Buen día!
estoy ke bailo de gusto tenia tres horas buscando
sali a las 9 de la noche de la oficina tratando de hacer esto
llego ami casa y zaz
ke encuentro esta pag lo hice es 10 seg
gracias,,, gracias,,, gracias
te iras al cielo con zapatos
Estimado Geronides,
Cunado abres el VB para crear una macro, la ventana donde le das nombre a la macro, tambien hay una lista desplegable donde dice «guardar macro en» para que escojas en que libro o libros deseas guardar tu macro y aparece tambien una opción que dice (libro personal) selecciona esta opción para que al pegar la macro de conversión te quede lista para que en cualquier libro que pongas la formula te responda ejemplos para office 2003 y anteriores:
=personal.xls!numletras(ceda donde esta la cantidad ,1)
para office 2007:
=personal.xlsb!numletras(celda donde esta la cantidad ,1)
espero te sirva
saludos
hola esta super el aporte.. pero tengo un problema y ya me perdi con tantos datos estoy haciendo unas facturas en donde la cantidad q tengo en numero la necesito en letra hice los pasos q colocas por cierto super bien explicado y logre hacer todos los pasos pero al colocarlo en las facturas son otras celdas y me sale #¿NOMBRE?… YA ENTRE AL DE MACRO SEGURIDAD LE PUSE EN MEDIO y me sigue saliendo lo mismo la verdad me urge tengo q hacer 1500 facturas y con la formula me ayudaria muchisimo …
espero esto tenga solucion jejeje.. mientras continuare haciendolo manual … =( … GRACIAS buen dia¡¡¡
Hola Alexa,
Creo que problema esta en seguridad de las macros, deves indicar habiltar todas las macros de lo contrari si lo dejas en » medi » te esguira generando problemas. checa eso y si sigues con problemas me encataría que me indicaras en que celda esta la catidad en número y en que celda quires que apareca el texto para ver si se te puede ayudar de una mejor manera.
saludos,
mil mil gracias encontre mi herror =)(no guardar el archivo en excel) … y esta super bien .. me di por vencida pense q no lo lograia jejeje, pero ya qdo me liberaste mucho la carga jejeje… gracias… q bien q exista gnt super, como TU… te debo el cafe jejeje
saludos =) …
un super mega abrazo =) «estoy feliz» jejeje …
hola gracias por tu ayuda me sirvio mucho pero tengo un problema que ya te habian comentado al cerar el libro de exel y luego al vover a abrirlo sale #¿NOMBRE? se que ya diste la explicacion pero no se no he podido llevarla a cabo si tu me haces el favor de enseñañrme paso a paso como hacerlo con imagenes de ejemplo te lo agradeceria mucho tengo oficce 2007
Hola EL 5° Be@tle
Espero que este link te sirva, y no olvides guardar tu libro para que no se pierda la macro.
http://hojas-de-calculo-en-excel.blogspot.com/2008/07/el-libro-personalxls.html
saludos
Felicidades, lo explicas bastante claro (sobre todo para algunos que no sabemos mucho de esto) y sobre todo gracias por compartir tus conocimientos.
De nuevo muchas gracias!!
gracias esto facilita mucho mi trabajo es muy bueno lo que sabes hacer pero es mucho mejor que lo compartas gracias gracias
BUEN DIA UN AGRACEDCIMIENTO MAS CREO QUE NO ESTA POR DEMAS, MIL FELICIDADES, GRACIAS QUE TENEMOS PERSONAS COMO TU, TENIA 7 AÑOS TECLEANDO LA CANTIDAD CON LETRA DE MIS FACTURAS, YO FACTURO EN EXCEL, SI PODRIAS DARME UNA AYUDA MAS, COMO PUEDO HACER UN CATALOGO DE CLIENTES Y QUE AUTOMATTICAMENTE ME APAREZCA LOS DATOS COMPLETOS… SALUDOS.
OTRA PREGUNTA COMO PUEDO HACER QUE LOS DECIMALES ME LOS REDONDEE BIEN AL MOMENTO DE HACER DESCUENTOS O APLICAR IVA CUANDO FACTURO, POR EJEMPLO IMPORTE TENGO $2,679.70 Y APLICANDOLE UN 15% DE DESCUENTO $401.96, NOS DA UN SUBTOTAL DE $2,277.75 CUANDO DEBERIA DE SER $2,277.74 NO ???? PARA QUE ME DE LOS CENTAVOS EXACTAMENTE QUE HAGO ??? IVA NOS DA $341.66 Y TOTAL $2,619.40 OJALA ALGUIEN ME PUEDA AYUDAR SALUDOS
JONATHAN GIL, el resultado de la operacion en Excel me da 2,277.745, Obviamente en letras te dice 74/100.
Para resolver esto debes utilizar la funcion redondear: =REDONDEAR(2,679.70*15%,2) O =TRUNCAR(2,679.70*15%,2).
oye de verdad eres un GENIOOOO!! me la he pasado buscando en la red una explicacion tan buena y facil como esta, de verdad me sirvio de mucho… gracias!!!
mil gracias me sacaste de un apuro en verdad funciona muy bien el codigo y por logica la formula….
Excelente amigo muchas gracias, muy buena aportacion
Muy bueno soy de peru y lo unico que modifique para aplicarlo aca en Peru es cambiar la palabrita Pesos a Soles y Sol :D, GRACIAS 😀
quisiera saber como puedo hacer esto pero la verdad es que de macros no se nada yo ya tengo el formato hecho y lo unico que quiero es colocar notas y que automaticamente me salgan en letras. ayudenme porfavor gracias
hola buen dia. el codigo de convertir numeros a letras esta super bien esta trabajando con ese codigo en excel 2003, pero ahora estoy trabajando con excel 2007 y me sale un error #¿nombre? y ya estuve buscando bajarle el nivel de seguridad a los macros pero sigo con ese error te aradeceria mucho si me pudieras auxiliar gracias.. y espero una favorable ayuda
Hoy es un día que me hace sentir feliz, en el sentido de encontrar personas que comparten sus conocimientos sin ningún tipo de intéres. De verdad muchas gracias por eso, si todos fueramos así este mundo sería otra. cosa.
Ese código de convertir números a texto está fabuloso. Enhorabuena.
Muy bueno. Gracias!!! Lo modifique para usar en Argentina sacandole MN
hola, necesito que al cambiar numeros a letras en excel me aparesca así: 84 Ochenta y cuatro, pero la tengo asi:
84 Ochenta Y Cuatro……..qué hago
Hola Gonzalo estas por allí, puedes ayudarme verdad…….
Hey, andando por la red me tope con este foro en el cual describen el código y funcionamiento de esta macro, me parece muy bueno.
Soy programador en Visual Basic para Aplicaciones y desarrolle un complemento de nombre ConLetra.xla que hace lo mismo que el que se comenta aquí agregando varias opciones muy prácticas, entre ellas las siguientes:
1. Crea un menú y submenú en la barra de menús de Excel desde el cual se puede: a) Invocar al asistente de funciones inicializado en esta. b) Modificar los parámetros de moneda, Centavos y delimitadores de texto (parentesis, comillas, etc.)
2. Tiene la opción de manejar mayúsculas, minúsculas o bien una combinación.
3. Guarda en el registro de windows los parámetros definidos por el usuario para ser recuperados cada que se utilice.
Se creo en Excel 2003 y funciona también en 2007
Es completamente gratuito y libre de distribución, -no es de código abierto, por que como se comenta aquí hay muchos que se atribuyen el trabajo de otros-
No contiene virus o macros perjudiciales
Si a alguien le interesa puede enviarme un mail y con gusto se le haré llegar para que lo pruebe.
Adriano Torres
Saludos desde San Luis Potosí, México
15 de octubre de 2009
hola me interesa tu macro me la podrias enviar te lo agradeceria mucho soy profesor y mis calificaciones dben ir con letra tambien y no lo he podido lograr podrias ayudarme muchas gracias !!!!!
mi mail es adolfogtzo@hotmail.com
OK ME INTERESA MI CORREO ES CONTADORMAGANA@HOTMAIL.COM
SALUDOS
buenas tardes realmente me interesa conocer mas de las macros la verdad es que me gusta aprender nuevas cosas y me gustaria probarlo. ojaa me lo pudieras proporcionar mil gracias
Hola, podrías compartirlo? mi correo es macuser_wld arroba yahoo punto com. ¡Gracias!
Amigo me interesa tu complemento serías tan amable en mandármelo. Te lo agradeceré infinitamente, ya que requiero modificar parámetros para facturas a diferentes monedas. saludos
Por favor mándame tu macro me es indispensable mi correo J_AGUIRRES@hotmail.com
hola me puedes enviar el macro ?? mi correo es angelica.garza66@yahoo.com.m
Olvide poner mi correo: tosj820128@yahoo.com.mx
Nada me gustaría más que compartir mi trabajo y conocimientos en este tema y aprender de aquellos que sepan más que yo.
Muchas gracias… la verdad esta muy facil y muy sencilloo
excelente
muchas graciass
Monterrey, NL.
Funciona muy bien ¡gracias!
Buen día
Excelente me sirvio de mucho! gracias
Gracias HErmano
Esta de peluche
Saludos desde Monclova, Coahuila
Excelente Explicacion y el codigo muy bueno…Gracias
HOLA BUENAS TARDES FIJATE PICANDO POR AQUI Y POR AYA Y ME ENCUENTRO CON ESTO TAN ESPECTACULAR Q ME AYUDA EN MI TRABAJO.
ESTABA BUSCANDO OTRA COSA PERO ME SIRVE ESTOO
SALUDOS
GRACIAS POR TU ESPACIO…
BUEN DETALLE, GRACIAS.
MUCHOS SALUDOS!!!
Gracias por el macro, estuvo excelente.
Probablemente no sere el primer comentario positivo, pero seria desleal no felicitar por haber explicado un macro tan util.
macros for dummies!
MUCHAS GRACIAS FUNCIONA MUY BIEN
Muchas gracias por la explicación, me sirvio de maravilla.
Excelente por el aporte de sus conocimientos.
Para los que quieren cambiar a otro tipo de moneda, solo cambien PESOS por las monedas que Ustedes quieren, ejemplo: Por estp:
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
Poner:
PesosMN = «» & PesosMN & IIf(tyCantidad > 1, » CORDOBAS CON «, » CORDOBAS CON «) & Format(Str(lyCentavos), «00») & «/100»
Dandole derechos al autor del código, yo sólo doy un aporte
Hecho en México, asi debe de ser, muchas gracias por tu apoyo si por lo menos uno de cada dos Mexicanos como tu hubiera, estariamos como en la epoca del porfiriato dos dolares por un peso……..
Muchas Felicidades
Muchas gracias, su articulo me ha sido de gran ayuda
Hola Realmente Excelente!!!!
Una sola cosita, quisiera ver si hay la posibilidad que la conversion a letras indique la cantidad correspondiente a los centimos tambien EN LETRAS? , me di cuenta que la pregunta ya la hicieron tambien varias veces pero no encontre la respuesta y eso que me lei este interesantisimo y fabuloso blog como tres veces,
ej. ( QUINIENTOS MIL DOSCIENTOS TREINTA Y UN BOLÍVARES CON 13 CÉNTIMOS)
1, Como le quito los parentesis?
2, Como hacer para que el numero 13 correspondiente a los centimos se lea TRECE? ( en letras y no en numeros)
Soy de Venezuela ya adapte la moneda a BOLIVARES Y EL » /100 » lo lleve a la palabra CÉNTIMOS, Con esta modificacion en la penultima linea tal y como esta de super bien explicado y quedó asi:
Bolívares = » (» & Bolívares & IIf(tyCantidad > 1, » BOLÍVARES CON «, » BOLÍVAR CON») & Format(Str(lyCentavos), «00») & » CÉNTIMOS)»
End Function
Pero faltaria sustituir el «00» No se por cual valor, para que no se lea el ej. del » tal y tal con 13 Céntimos» y pueda leerse «tal y tal con TRECE CÉNTIMOS» y sin los parentesis….
Saludos y de antemano Mil gracias (=
Okis
Para los interesados de Venezuela.. Ya los parentesis se los quité, PEROOO sigue el 13 Centimos alli !!!
y quedó así:
Loop Until lyCantidad = 0
Bolívares = «» & Bolívares & IIf(tyCantidad > 1, » BOLÍVARES CON «, » BOLÍVAR CON») & Format(Str(lyCentavos), «00») & » CÉNTIMOS»
End Function
ahora solo falta que encontremos la manera de sustituir el «(00)» por algo que permita leer los centimos en letras y no en numeros… !!!
YO YA ME FUNDÍ…
Saludos y esperemos a ver como se hace!
No te fundas en ese código, mira eso que quieres lo puedes hacer utilizando la macro y combinando las propias funciones de Excel, trataré de explicarlo.
Hagamos las siguientes aclaraciones primero …
1. Tome la macro original publicada en este blog.
2. Las modificaciones y/o adecuaciones son solo para ayudar a
la(s) persona(s) que hizo esta pregunta o que tengan la
misma duda.
3. En ningún momento me digo o siento autor de esta macro.
Ahora supongamos lo siguiente …
a. En la macro original modificamos solo la última línea
quedando :
PesosMN = PesosMN
aunque parezca muy poco asi queda esta línea
b. Asumimos que en la celda B2 tenemos la cantidad 1,235.56
para manejara de ejemplo.
c. En la celda D2 vamos a escribir la siguiente fórmula (todo
junto):
=»(«&pesosmn(B2)&SI(B2>1,»PESOS»,»PESO»)&
pesosmn(DERECHA(B2,2))&» CENTAVOS )»
resultado:
( UN MIL DOSCIENTOS TREINTA Y CINCO PESOS CINCUENTA Y SEIS
CENTAVOS )
Explicación:
1. Con la modificación de la última línea la transcripción quedará:
UN MIL DOSCIENTOS TREITA Y CINCO
2. Utilizamos el condicional SI() para agregar «PESOS» si la cantidad es mayor a 1 ó de lo contrario «PESO»
3. Luego utilizamos la función DERECHA(Texto,NumDeCaracteres) para extraer la parte decimal de la cantidad, en este caso 56
4. Habiendo extraido los decimales volvemos a utilizar la macro para trancribirlos, PesosMN(Derecha())
5. Agregamos «CENTAVOS» con el parentesis de cierre
Comentarios finales:
a. Espero y sea de utilidad esto que excribí.
b. Creo que la macro no transcribe correctamente cuando la cantidad sea 1 o bien los centavos sean 0.
c. Reitero que no soy ni me siento el programador de esta macro.
Acabo de responder a ISA pero olvidé identificarme así que salió como anónimo
Oye mil gracias, todo funciono a la perfeccion esta genial, con esto ahorras un buen buen de tiempo gracias, de verdad gracias!!!
EXCELENTE AMIGO, MUCHAS GRACIAS, FABULOSO Y MUY EFECTIVO.
FELICIDADES POR TU GENIO !!
ME ENCANTO EL MACRO PERO NO ME DEJA GUARDARLO, ME MARCO QUE EL ARCHOIVO SIN MACROS NO SE PUEDE GUARDAR O ALGO ASI QUE DEBO HACER.ENCONTRE VARIAS RESPUESTAS PERO NO LES ENTIENDO NO ME PODRIAN AYUDAR, GRACIAS MI CORREO ES JAYBY96@HOTMAIL.COM
Muchas Gracias. Me es de mucha utilidad esta herramienta. Me funcionó a la primera.Saludos desde Yucatan Mex.
GRACIAS SI NO PONDRIA ESO MI EXAMEN NO VALDRIA
ES LA MEJOR EXPLICACION DE MUCHOS A LOS QUE HE CONSULTADO.
EXCELENTE.
SALUDOS DE CULIACAN SIN.
He leído todo el post, pero quisiera que alguien me ayude a que si me saliesen números negativos cómo modifico la macro?
Supónte que preparo planillas de gastos o pagos, o sueldos y me lleguen a salir el saldo negativo? La macro está perfecto pero una vez que me sale eso no me funciona. Por fa ayuda!
Que tal, mira tengo un complemento que al igual que esta macro transcribe cualquier cantidad con letra y maneja número negativos también, si quieres te lo mando. Tiene varias opciones más que encontrarás muy interesantes y útiles, mi correo tosj820128@yahoo.com.mx.
PORFAVOR SOLO NECESITO SABER LA FORMULA DE COMO CONVERTIR UN CANTIDAD CON DECIMALES EN LETRAS POR EJEMPLO:
2,555.20 (DOSMIL QUINIENTOS CINCUENTA Y CINCO PESOS 20/100 M.N.)
PORFAVOR SOLO DAMELA SIP
Lo máximo,
Gracias por compartir estos conocimientos.
Creo que nadie lo haría, ya que a veces somo egoistas… pero estoy muy satisfecho con esta información.
Que sigan los éxitos.
Saludos…
esta chido tus explucaciones gracias buen dia
HOLA QUE TAL DISCULPA LA MOLESTIA PERO ME PODRIAS AYUDAR CON MI DUDA, EN LA VERSION 2003 DE EXCEL HAY UN COMANDO QUE COMBIERTE VALORES O RESULTADOS DE FORMULAS ENTRE CELDAS Y QE AL EMPLEARLO LOS COMBIERTE EN VALORES NUMERICOS Y TE PERMITE COPIARLOS Y PEGARLOS EN OTRS CELDAS PARA OFICCE EXCEL 2007, NO ENCUENTRO ESTE COMANDO COMO LE PUEDO HACER.
GRACIAS.
Que tal Nevid, no conozco esa funcion, podria ser =valor(a1)??, o podrias explicar para que te servería.
Saludos
Muchas gracias!!!…..esta excelente
Excelente, eso de no saber nada de programacion de macros es mi coco, y mucha gracias es el tuto mas claro q encontre.
Hola Gonzalo, Antes que nada dejame ferlicitarte por tu aportación, es muy Buena.
Tambien quisiera saber si me puedes ayudar con una macro en exel para eleborar facturas. Ya tengo diseñado el libro exel solo me falta crear una macro para que funcione.
Nota: Estoy dispuesto a Pagar.
Mi Correo furiosito@live.com.mx
¡Saludos!!!
Que tal Omar Antonio, me gustaría ayudarte, pero como ves este blog apenas lo mantengo por falta de tiempo, pero no te desesperes, encontrarás lo que buscas.
Suerte Hermano y felices fiestas
Buenas Gente, por ahi leí que necesitaban para los Negativos, bueno lo que hice es agregarle las Siguientes Lineas
…….
Dim bValue As String
bValue = «0»
If tyCantidad 1, » SOLES «, » SOL «) & » CON » & Format(Str(lyCentavos), «00») & «/100)»
End If
…………
Bueno como ejemplo le pongo los Negativos entre «( )», Paréntesis, claro que tambien se puede poner el texto de Color Rojo, tantas cosas
Espero Sirva de Algo.
Buenas Gente, por ahi leí que necesitaban para los Negativos, bueno lo que hice es agregarle las Siguientes Lineas
Dim bValue As String
bValue = «0»
If tyCantidad 1, » SOLES «, » SOL «) & » CON » & Format(Str(lyCentavos), «00») & «/100)»
End If
Bueno como ejemplo le pongo los Negativos entre «( )», Paréntesis, claro que tambien se puede poner el texto de Color Rojo, tantas cosas
Espero Sirva de Algo.
Gracias mi estimado, me has ayudado enorme….. y respecto de quienes se adjudican los trabajos de alguien mas pues que poca, pero en fin cada quien tiene la satisfacción de hacer lo que sabe hacer. Doble mi reconocimiento para quien inicio este codigo y gracias a ti por pasarnoslo.
Excelente aporte, me has ayudado como no tienes idea, continua asi, gracias por compartir tus conocimientos.
saludos afectuosos y un cordial abrazo.
excelente la aportacion y la explicacion de la conversion de numeros a letras, te agradesco tu aportacion gonzalo
atte
BigArt
Muchas Gracias creo que interesante y bien explicativo y funcional
Grande, facíl de hacer, muchas gracias me fue muy útil
Gracias nuevamente
MUCHISIMAS GRACIAS ME SACO DE UN APURO TREMENDO, NUEVAMENTE GRACIAS
HOLA
BUENOS DIAS
HACE TIEMPO ME AYUDASTW MUCHO EN PONER ESTA FORMULA, COPMO LE HAGO PARA UTILIZARDO EN WINDOS 7. SE PUEDE??
DE ANTEMANO MUCHAS GRACIAS.
Que tal Gerardo, si se puede, Será Office 2007, no uso ese office, lee los comentarios de arriba, si se puede.
Saludos
El 14/01/2010 11:09 a.m. gonzalo,
GRACIAS.
ACABO DE COMPRAR UNA LAP TOP Y VIENE CON WINDOWS 7 HOME BASIC.
CUANDO ABRO UN ARCHIVO DE EXEL, EN HERRAMIENTAS NO VINE LA OPCION DE MACRO, O DONDE LO BUSCO.
GRACIAS
GERARDO
Que tal Gerardo, busca en el icono de Office en la esquina superior izquierda->opciones de Excel->Mostrar la ficha de programador en la cinta de opciones, o lee los comentarios, por ahi esta la respuesta.
Saludos
El 14/01/2010 06:07 p.m. gonzalo,
hola
ya copie y pegue el macro regrese a mi hoja de excel y listo queda todo perfecto pero al volver a a brir mi archivo no aparece el macro por que ya lo grabe tanto en el editor como en mi archivo de excel, te agradeceria me contestes.
bye.
felicidades , me ha servido bastante, sigue asi,aportando tus conocimientos a quienes lo necesitamos
Muchas gracias por tu aportación, me has ayudado como no tienes idea. Saludos
Excelente amigo, muy buen aporte… no tienes idea cuanto me sirvio y q tan impresionaron quedaron mis jefes jeje… sigue adelante..
saludos desde Ecuador.
hola amigos de este grandioso block tengo una preguntita que hacerles y espero que me pueden ayudar, hace unos días descarge este programa “computacion plus”
el problema es en el editor de facturar pre impresas ya que cree mi plantilla de facturas pero a la hora que mando a imprimir una factura en el lado izquierdo donde tendría que salirme el monto en letras me sale el total pero en pesoso y no quiero que me salga en pesos si no en soles ya que aqui en Perú el peso no es nuestra moneda si no el nuevo sol «S/.»
Por ejemplo si me factura fuera en número (S/. 1526.70) tendría que ser en letras “SON: Mil Quinientos Veintisiete Con 70/100 Nuevos Soles”
En el siguiente link subí mi plantilla de facturas creada.
http://rapidshare.com/files/341093956/factura.frf.html
Muchas Gracias por tu aporte, lo estaba necesitando con esas particularidades
hola, gracias por esta solucion, es super practico
Saludos desde reynosa
Mil Gracias, no saben de cuanta ayuda ha sido para mi.
Saludos.
como le hago para usarlo en word, ya copie el codigo en macro para word, ahora solo me falta un ejemplo de como funciona
HOLA,
MIL GRACIAS, SON GRANDES CHICOS… FELICIDADES X SER TAN BUENOS Y QUERER COMPARTIRLO…. GRACIAS MIL….
TERE SOLIS
Hola,
disculpen tambien segui las instrucciones y tengo el mismo problema que Vero.
Tavo, me podras indicar como realizar lo senalado en el primer parrafo o bien si alguien me puede apoyar se los agradeceria muchisimo.
saludos
Tavo
Noviembre 27, 2009 en 4:58 pm
Hola Vero.
Te hace falta guardar la macro como un complemento de Excel (Extensión .XLA para versión 2003 y anteriores o .XLAM para versión de office 2007), para después habilitarla desde Opciones de Excel Complementos.
Una vez guardada y habilitado el complemento, bastara con accesar a insertar funciones desde cualquier hoja de Excel e ingresar a “Definidas por el usuario”, en donde encontraras dicha función (PesosMN); selecciona esa función y vincularla a una celda donde exista una cantidad y liisto, la podrás utilizar en cualquier archivo.
Espero te sea resuelva el problema, saludos.
EL CODIGO QUE VAN A INSERTAR EN EL EDITOR DE VISUAL VASIC QUE SE ABRE DE ESTA FORMA: HERRAMIENTAS/MACRO/EDITOR DE VISUAL VASIC/INSERTAR/MODULO Y AY PEGAN EL CODIGO DE ABAJO,PD: ESTE CODIGO ES DIFERENTE ASI QUE PARA ASERLO FUNCIONAR HAY QUE ESCREVIR =PESOS(A1) EN LA CELDA B1 Y EN LA CELDA A1 ESCRIVIR NUMERO CUALQUIERA(SOLO LLEGA HASTA LOS MILLONES) BUENO SIGUIENDO EL CODIGO ES:
Function Pesos(Number As Double) As String
Const MinNum = 1#
Const MaxNum = 4294967295.99
Dim Numbers, Tenths, Result As String
Numbers = Array(«CERO», «UNO», «DOS», «TRES», «CUATRO», «CINCO», «SEIS», «SIETE», «OCHO», «NUEVE», «DIEZ», «ONCE», «DOCE», «TRECE», «CATORCE», «QUINCE», «DIECISEIS», «DIECISIETE», «DIECIOCHO», «DIECINUEVE»)
Tenths = Array(«CERO», «DIEZ», «VEINTE», «TREINTA», «CUARENTA», «CINCUENTA», «SESENTA», «SETENTA», «OCHENTA», «NOVENTA»)
If (Number >= MinNum) And (Number <= MaxNum) Then
Result = RecurseNumber((Fix(Number)))
If Round((Number – Fix(Number)) * 100) < 10 Then
Result = Result + " 0" + Mid(Str(Round((Number – Fix(Number)) * 100)), 2, 1) + "/100 DOLARES"
Else
Result = Result + " " + Str(Round((Number – Fix(Number)) * 100)) + "/100 dolares"
End If
Else
Result = "NO HAY RESULTADOS"
End If
Pesos = Result
End Function
Function RecurseNumber(N As Long) As String
Dim Numbers, Tenths
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
Dim Result As String
Select Case N
Case 0
Result = ""
Case 1 To 19
Result = Numbers(N)
Case 20 To 99
If N Mod 10 0 Then
Result = Tenths(N \ 10) + » Y » + RecurseNumber(N Mod 10)
Else
Result = Tenths(N \ 10) + » » + RecurseNumber(N Mod 10)
End If
Case 100 To 999
If N \ 100 = 1 Then
If N = 100 Then
Result = «CIEN» + » » + RecurseNumber(N Mod 100)
Else
Result = Hundrens(N \ 100) + » » + RecurseNumber(N Mod 100)
End If
Else
Result = Hundrens(N \ 100) + » » + RecurseNumber(N Mod 100)
End If
Case 1000 To 999999
Result = RecurseNumber(N \ 1000) + » MIL » + RecurseNumber(N Mod 1000)
Case 1000000 To 1999999
Result = RecurseNumber(N \ 1000000) + » MILLON » + RecurseNumber(N Mod 1000000)
Case 2000000 To 999999999
Result = RecurseNumber(N \ 1000000) + » MILLONES » + RecurseNumber(N Mod 1000000)
Case 1000000000 To 4294967295#
Result = RecurseNumber(N \ 1000000000) + » BILLONES » + RecurseNumber(N Mod 1000000000)
End Select
RecurseNumber = Result
End Function
Hola Gabriel, fijate que al pegar tu codigo en el editor de Visual Basic, marca error, puede ser que al momento de pegar la informacion aqui se movio algo? por que no subes la macro en alguna pagina para bajarlo?
HOLA GONZALO,PS FELICITACIONES, HE ESTADO BUSCANDO ESTA FUNCION DESDE HACE MUCHO TIEMPO, DIOS TE BENDIGA
BUENISIMO ESTE TUTORIAL, ME GUSTARIA ALGUIEN ME DE LOS PASOS PARA GUARDARLO,POR FAVOR.
Excelente apoyo y muchas gracias por publicarlo… Yo no se por que 2007 no lo tiene por default… 😐 Saludos 😀
que barbaro amigo eres todo un genio algun dia sere como tu, esta super bien el codigo me salvaste eldia suerte cuate
HOLA PRIMERO QUE NADA GRACIAS POR LA INFORMACION ME AYUDO MUCHO.PERO NO SE COMO GUARDAR LA MACRO ALGIEN ME PODRIA DECIR COMO HACERLO?
GRACIAS.
gracias amigo, por el codigo, y las indicaciones a seguir. esta muy bueno, se los recomiendo.
despues de realizar los procedimientos, no olviden guardar, y listo.
ha, para que funcione, debes cerrar el libro, y vuelves a abrir, de inmediato te aparece un cuadro de dialogo, dar en habilitar macros. e insertas la siguiente formula =pesosMN(celda en donde tengas la cantidad) y listo.
problema resuelto.
soy una persona que no tengo mucho conocimiento en excel nopodrias publicar el codigo para bajarlo con las instrucciones ahi mismo
hola,,,, qusiera saber como hago paraque el resultado aparezca asi:
ejemplo son:TRES MILLONES DOSCIENTOS MIL PESOS M/CTE
te agradezco tu colaboracion
Hola, muchas gracias por el aporte, tenia mucho tiempo buscando la manera de convertir importes numéricos a importes con letra, ya habia encontrado el codigo en otras páginas pero no sabia las instrucciones para instalarlo, la verdad te agradesco que hayas puesto paso a paso como ingresar el codigo para poder utilizarlo.
muchas gracias te felicito el tuyo es el mejor con la explicacion adecuada y el ahorro de mucho trabajo
Gonzalo. Este codigo me ha sido de gran utilidad pues estoy haciendo un formato para llenar mis cheques y asi le ahorro un paso a la contadora y ademas elimino posibilidades de error al teclear la cantidad con letra.
Muchas gracias por compartirnos estos conocimientos de una manera tan clara.
un abrazo.
Omar
q exelente aporte amigo, creeme q me has hecho ganar adeptos con una chik ademas q es necesario tener este tipo de informarcion para cualquier documento, bien dicen que ‘ EL QUE SABE Y PUEDE SE DIVIERTE ‘ GRACIAS !!!!
FELICIDADES Y MUCHAS GRACIAS
A mi no me funciona en 2007 me pone #NAME? ya fui y baje el niveld e seguridad y nada alguien me peude ayudar??? por favor!!!! Lo necsito para hacer facturas
ya hice todo lo que viene en tus instrucciones y si corrio bien pero cerre la ventana del excel y lo abri nuevamente y ya no corrio ademas quise hacerlo correr en un archivo donde lo nesecito y no quiso y no se como guardarlo como complemento ni «guardar como» por que el visual basic no me da esa opcion. de antemano gracias espero tu respuesta.
Muchas gracias es de gran utilidad, bueno le modifique la parte donde dice son: bueno esa parte la omiti , de nuevo mil gracias
Muchas gracias!!!!
excelente la aplicación la estube buscando y afortunadamente me encontre con esta página y ha funcionado bastente bien en 2007m solo tuve que quitarle la palabra son, y quedo justo lo que necesitaba, en hora buena y gracias por compartirlo
SOS UN MONSTRUO !!!
Muy claro para explicar, la formula de el resultado esperado con una muy facil forma de explicar.
Muchisimas gracias desde Chile.
Un abrazo.
gracias de verdad lo explicas super claro!!!
Gracias, de tanto buscar y buscar es fue el que me sirvio…de nuevo gracias
EXCELENTE APORTE, MUCHAS FELICIDADES ME FUNCIONO DE MARAVILLA. MUY BIEN EXPLICADO, Y SE COMPRENDE MUY FACILMENTE, SIGUE ASI, TE MANDO UN CORDIAL SALUDO Y GRACIAS
Saludos
Por favor si me pueden ayudar necesito cambiar de pesos a dolares como puedo hacer
gracias
Saludos
muchas gracias, ya logré cambiar la fórmula y me sirvio. les agradesco un mundo.
Saludos
Les vuelvo a molestar por favor si me pueden ayudar como puedo gravar la formula, por que cada vez que cierro exel se me pierde la formula
gracias
hola!
¿como hago para que al insertar una fecha y al momento de dar enter en otra celda me aparesca el nombre del mes?..me encantaría que me ayudara a resolver este problema
Que tal Mari, checa este link http://es.tinypic.com/r/10qdo28/5
Gracias, es de gran utilidad, solo le hice unos cambios para adecuarlos a mis necesidades muy agradecido
Hola, mira soy nueva en esto, y no sé como guardar el módulo para posteriormente utilizarlo en cualquiera de mis archivos, ya le intenté y no puedo tengo excel 2007, ¿me puedes decir cómo paso a paso? muchas gracias por no ser egoísta!!!! Dios te bendiga!
La verdad gracias, siempre quise saber como hacer esta funcion. se agradece mucho el compartas tus conocimientos.
Saludos
GRACIAS SOLO UNA PREGUN TA NO ABRA MANERA DE QUE NO APARES CALE SON QUE SOLO SEA EL TEXTO BUENO GRACIAS…
me preguno como puede colocar la palabra «con» antes de 00/100 para que se mire mas con elegancia.
Muy bueno OK
wow…. esto esta super bien, de verdad se les agradece
Buenos dias:
Necesito su amable colaboracion, quiero aplicar la funcion PESOS MN, en Excel 2007; pero no me funciona en 2003 ya lo hice y salio a la perfeccion, por favor necesita su colaboracion, agradezco me responda a mi mail informandome como se hace.
Hola Orlando,
tengo una macro que es posible qu te sirva, escribeme a resgros@hotmail.com con gusto te la mando
saludos
Perfecto!
Solo copie y pegue en la hoja que la necesitaba,
mil Gracias por el aporte
Tengo que dejar un comentario, porque me siento muy satisfecho con el resultado de tu guía y tu macro, es simplemente perfecta, es lo que yo buscaba y es fácil de aplicar y utilizar, te sacaste un 10, FELICIDADES, y gracias por no guardar tus conocimientos, y compartirlos.
Muchísimas pero muchísimas gracias! anduve buscando por toda la web y es la mejor explicada! además pude modificar tranquilamente la macro por mi cuenta para poder cambiar ciertas cosas, por ejemplo, para el caso de que haya centavos que los diga, y si el numero es redondo, que no lo haga. Acá les paso el código de esa parte si le interesa a alguien:
La anteúltima línea la reemplazan por:
PesosMN = «SON PESOS: » & PesosMN & IIf(tyCantidad > 1, «», «») & IIf(lyCentavos > 0, (» con » & Format(Str(lyCentavos), «00»)) & » » & «centavos», » «)
saludos y gracias de nuevo!
Mil gracias, muy bien hecho!!
Hola muchas gracias, me sirvio de mucho y lo pude utilizar aun despues de cerrar excel y abrir un libro nuevo, gracias por todas las aportaciones.
tenia que dejar un comentario felicidades explicas muy bine busque y eres le unico que da la respuesta muy bien saludos que estes bien dtb..
Gonzalo: Gracias Men por tu gran aporte de verdad me gusto mucho ya que yo hago muchos chekes en un archivo que tengo donde imprimo las polizas de chekes y los mismos chekes asi ke me sirvio mucho para la leyenda en letra de la cantidad asi ke muchisimas gracias por tu aporte me sirvio un monton
un saludo y siguele hechando muchas ganas
Atte chaparro
Muchas gracias
Recibe un saludo, gracias es de gran ayuda al trabajo diario.
La función esta muy buena, a pesar de que he leido toda la página y hecho varias propuestas de cambio no encontre alguna para que funcionara en una factura como lo usamos en Colombia, por ejemplo:
Subtotal 1.917.660
iva 16% 306.827 (se redondeo al proximo entero)
Total 2.224.486
SON: DOS MILLONES DOSCIENTOS VEINTICUATRO MIL CUATROCIENTOS OCHENTA Y SEIS PESOS M/C.
¿Es posible que alguien me ayude a adptarla?
Gracias a quienes saben y comparten conociemientos.
oscar vidal
Hola Oscar, checa aquí tal vez encuentres lo que buscas http://www.teladearana.es/
haaa. super. gracias. muy bien explicado. me has ahorrado unas horas de trabajo. jaja
Muchas Gracias por el aporte!!!!! me ahorrase muchos erroes en mis facturas
Saludos
Holas gracias por que esto me h ayudado un monto.
No tengo ni la menor idea de como programar algo, pero seguí las indicaciones al pie de la letra y me fucniono solo que debo tener como resultado «SON: Un Mil Trecientos Veintitres y 13/100 Nuevos Soles»
Alguien me puede facilitar el codigo completo?
desde ya mil gracias!!!
Un Excelente aporte, gracias por compartir muchos no sabemos de programar y esas cosas, me funciono a la primera y no medio dificultades.
Muy buena macro
Sencillamente un gran aporte, no solo por lo que representa la macro misma, sino por la sencillez con la que explicas la forma de adicionarlo al Editor de Visual Basic
Gracias a nombre de todos aquellos que han utilizado tu aporte y no han tenido el tiempo de agradecertelo
todo esta bien pero si quiero hacer esto.
36.562 (son: treinta y seis metros quinientos secenta y dos decimetros cubicos ) notese el punto
Excelente, muchas gracias!
hola..
es que yo hice todo lo que lei pero pra guardarlo no e podido, nose como habilitar contenidome sale mchos errores .
ayudenme porfavor lo necesito urgente
gracias compañeros
Hola, estuve leyendo la pagina y me parece muy interesante, hice lo mencionado anteriormente y si funciona, pero lo que estoy buscando es poner los promedios de calificaciones con dos decimales a un lado de la celda con el numero.
Es decir, si el promedio da 6.50 en la celda siguiente diga seis punto cincuenta. ¿Se puede? ¿cómo hacerlo? De verdad agradecería su ayuda.
Excelente me funciono a la perfección =) 1000 gracias
SI ME CUERDO DE LA NIÑA Q INVENTO LA PALABRA «PALITROCHE» Y DEL CUENTO
Hola saludos desde Ecuador….. llevo casi 4 horas buscando una macros para asentar promedios de números a letras (estos van de 0 a 10, con un solo decimal) pero la mayoría son para recibos, facturas etc., es decir incluye pesos, soles, euros, dolares.
Crees que me podrías ayudar con una macro sencilla (para ti obvio) en la que si pongo 8,9 me arroje OCHO, NUEVE o si pongo 10 salga DIEZ, CERO.
Tengo varios cursos que van desde 20 hasta 50 alumnos, entonces imagínate la cantidad de tiempo que pierdo escribiendo promedios.
Desde ya quedo muy agradecido.
Que tal Jose Luis, checa aqui http://www.teladearana.es/
gchable.
Muchas gracias!!
Saludos
Hola, que tal esta basante buena tu función, solo tengo tres observaciones que considero la harian mejor:
1.- cuando no haya cantidad escrita, que te marque solo un guión o que no imprima nada, ya que si lo haces te aparece pesos…
2.- cuando el número escrito sea = a cero, que marque «cero pesos..».
3.- cuando las cantidades son iguales un millón o mayores debe escribir «un millón DE pesos…», ya que solo escribe «un millón pesos…»
Espero y me puedas compartir tu función con las observaciones.
como puedo utilizar la funcion en dos columnas diferentes; el detalle es que una columna la utilizo en pesos y la otra en dolares, como puedo hacer para que obedezca a las dos incidaciones en una misma hoja
???
mil gracias de mucha ayuda.
Hay forma que los centavos queden como.
POR ejemplo
con treita y tres centavos y no 33/100.
De nuevo mil gracias me sirvio mucho.
te gradeceria me puedas responder a mi correo.
Muy bueno me sirvio ya que estuve buscando como cambiar los numeroa en texto para una factura que estoy realzando, gracias. TENGO UN DETALLITO QUE YO SOY DE BOLIVIA Y LA MONEDA AQUI ES EN BOIVIANOS Y QUERIA SABER COMO TENDRIA QUE HACER PARA QUE SALGA POR EJEMPLO: 130,60 Bs.- SON:CIENTO TREINTA BOLIVIANOS 60/100, CRACIAS DE ANTEMANO
Te agradezco me sirve mucho esta funcion .
Gracias
GRACIAS MUY BUENO Y FUNCIONA
Muchas gracias, me sirvio mucho, de haber sabido que no tardaria en encontrarlo lo hubiera buscado antes. Tenia tiempo queriendo buscar el dato.
OYE YA SE QUE TE LO DIJERON MUCHOS, PERO MUCHISIMAS GRACIASS!!
QUE CHIDO POR CONMPARTIR!!!!
SUERTE
Y MIS MAS BUENOS DESEOS!!!!!chao
Muchas Gracias Ya hacia tiempo que queria una formula asi, siempre se les pasa eso a los de microsoft jeje lo unico que no necesitaba eran el SON Y LOS PARENTESIS
GRACIAS
Bien hecho. El uso correcto de casos (CASE). La mayoría de los aficionados lo hacen con IF. ¿Se puede integrar a la macro que crea el libro nuevo en blanco? El objetivo: que todos los libros tengan la función al iniciar. Gracias.
muchas gracias por el aporte…
Buenas noches, gracias por su colaboracion. Hice el ejercicio y funciono. Sinembargo pido su ayuda con el fin de dar la instruccion y el formato me quede para que las cifras se lean asi:
$3.000.000 SON: (TRES MILLONES PESOS 00/100 M.N.) Y NO SON: ( DOCE PESOS 00/100 M.N.Nuevamente mil gracias.
Oscar
CORRIJO LA SOLICITUD
Buenas noches, gracias por su colaboracion. Hice el ejercicio y funciono. Sinembargo pido su ayuda con el fin de dar la instruccion y el formato me quede para que las cifras se lean asi:
$3.000.000 SON: (TRES MILLONES PESOS 00/100 M/CTE.) PUES ESTOY EN COLOMBIA Y NO SON: ( DOCE PESOS 00/100 M.N.) Nuevamente mil gracias.
Oscar
GRACIAS…..
POR ESTA AYUDA…
FUE DE MUCHA UTILIDAD
GONZALO .-
Como dicen en contaduria,infinitamente un mil gracias ; por tu aportacion al igual que los compañeros estuve viendo y viendo ejemplo ; pero el tuyo QUE BARBARO me saco de un gran apuro.
FELICITACIONES por ser como es y que nunca cambie;saludos desde la hermosa republica mexicana.
Que te puedo decir, parece que ya dijeron todo pero mil gracias y sinceramente el Mejor.
Tu maestro…. tu……….BIEN….. MUY BIEN..
MIL GRACIAS MI HERMANO Y SIGUE ASI.
Sr.,
Me sirvio mucho, tks.
gracias por el paro me sirvio de mucho
FELICITACIONES…..ME SIRVIO MUCHO..
PERO AHORA TENGO 2 INQUIETUDES:
– PARA MI EJEMPLO $257.000,65 QUE ME SALDA ASI: DOSCIENTOS CINCUENTA Y SIETE MIL PESOS CON 65/100 M.CTE.
– Y EN UNAS NECESITO SON: ……. Y EN OTRAS NO LO NECESITO..
QUE SE DEBE HACER…
MIL GRACIAS PUES APRENDI ALGO NUEVO…… Y DE ANTICIPO OTRAS MUCHAS MIL GRACIAS POR AYUDARME CON LA SOLICITUD QUE TE PIDO…
maestraso k bien .. muy bien.. me la pusiste muy facil eh felicidades y gracias por brindar tu conocimiento a los que se nos dificultan, encerio gracias un saludos desde chiapas..
Felicitaciones, muy bien ese procedimiento, lo encontré sin pensarlo y lo instalé excelente.
EXCELENTE, TE FELICITO GRACIAS PERO MUCHAS GRACIAS POR TU APORTE ME AYUDASTE MUCHO
hola buenas tardes, muchas gracias por la macro. que tengas un bonito dia
GONZALO BUENAS TARDES CLARO QUE ME SIRVIO MUCHISIMAS GRACIAS.
ESPERO COMPARTIRLO POR AQUI PARA ALGUIEN QUE ESTE INTERESADO.
GRACIAS NUEVAMENTE….
Genial!! funciono!
PANA MIL GRACIAS POR LA INFORMACION, EXCELENTE!!!
Orale me parece excelente aporte y me funciono a la perfeccion, gracias!
POR FAVOR ME EXPLICAS QUE DEBO HACER PARA QUE FUNCIONE EN OFFICE 2007, SOLO ME FUNCIONA EN VERSIONES ANTERIORES
hola quien me puede explicar como puedo guardar esta macro para que sea parte de excel por que no lo se me pueden ayudar porfis
Gracias amigo es o único bien explicado que realmente funciona a la primera, gran aporte saludos desde Chile.
GONZALO_ GRACIAS POR EL APORTE ME PODES GUIAR LO COPIE, EN MACROS Y AL EJECUTARLO EN LA CELDA PARA PROBARLO, ME FIGURA ERRROR COMPILACION Y DE SINTAXIS EN LN 8 DONDE DICE CENTENAS, LA REVISÉ Y NO SE QUE COSA PUEDE SER…APARECE ALGO MAS EN EL CODIGO QUE EN LA PAGINA NO VEO.ME PONE EN ROJO ESTO:
laDecenas = Array(«DIEZ», «VEINTE», «TREINTA», «CUARENTA, «CINCUENTA», «SESENTA», «SETENTA», «OCHENTA», «NOVENTA»)..
DESDE YA MUCHAS GRACIAS..
Gracias ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Eres un master, este es el mejor codigo para hacer que los numeros se vean tambien en letras, que he visto en años, cuando necesites algo por favor no dudes en pedirmelo.
Hola, primero que todo quiero agradecerte muchisimo este aporte. Estoy ayudando a un amigo a modernizar su negocio y estaba haciendo una planilla excel para hacer las facturas, estaba todo listo, pero faltaba esto de escribir numeros con letras automaticamente. He corregido lo que necesitaba cambiar para que quedara como se hace en Chile.
Tengo un pequeo problema, en Chile no se usan decimales pues no hay centavos, por lo tanto se aproxima cuando el decimal es mayor que 5, hasta ahi todo bien, excel me aproxima, pero tu codigo lee el numero sin aproximarlo, por ej. 1492,7 lo escribe como mil cuatroscientos noventaidos y si desactivo el uso de decimales en excel el numero queda asi 1493, pero la funcion sigue leyendolo como noventaidos. Sabes que tengo que hacer para q la funcion lea el numero final proyectado????
Si no puede ayudarme no hay problema, con lo que has hecho ya me has ayudado muchisimo
Un abrazo grande desde Chile
Jorge
Me respondo solo, era necesario utilizar la funcion REDONDEAR, he solucionado todo y ahora puede llenar las facturas del negocio de mi amigo de manera mucho mas simple.
Un abrazo lleno de agradecimiento…
Jorge
HOLA! MUCHISIMAS GRACIAS, TU INFORMACION FUE DE GRAN UTILIDAD. NUEVAMENTE GRACIAS POR COMPARTIR TUS CONOCIMIENTOS CON NOSOTROS.
GRACIAS!!! ESTA SUPER BIEN EXPLICADO, MAS CLARO Y SENCILLO NO PODIA ESTAR. TE LO AGRADEZCO DE CORAZON, ME SACASTE DE UN SUPER GRAN APURO.
ALEJANDRA.
Muchas gracias, definitivamente el mejor post, me canse de buscar informacion de como hacerlo, ha sido todo un exito, muchas gracias
Excelente ahora podre hacer las cosas que quiero
se le agradece por su tutorial.
OOOOO meeennn!!!
que chulada de macro acabo de obtener de aqui
desde cuando que quiero hacer algo por el estilo en la compu de mi trabajo, pero como en ahi las macros no funcionan, me la estaba rifando con formulitas, esto es mucho mejor, grax
Hola,
No tendrías una para convertir porcentajes a letras?
GRACIAS POR TU APORTE}}
MUUY BIEN LA FORMULA, MUY EFECTIVA!!!
YO HABIA ESTADO PREGUNTANDO ENTRE VARIOS PROFESORES DE COMPUTO Y NINGUNO ME SABIA DAR RESPUESTA CONCRETA :p
MUY BUEN APORTE.
MUCHAS GRACIAS!!!!
GENIIAAALLL !!!!!!!!!!!!!!
Muchisimas gracias muy buen aporte, mejor explicado no pudo haber estado…………. !!!!!!!
perdon gonzalo gracias
Excelente aporte Gonzalo, además, muy didáctico.
Saludos,
Luis Alfredo
P.S. Incluso me hiciste ganar una apuesta.
jajaja
El 11/08/2010 05:15 p.m. gonzalo,
Muy bueno, hice ciertas modificaciones en pabras como dolares «CON » Y «CENTAVOS» quedo muy bien para mi pais ECUADOR ES MUY BUENO ESTE MACRO GRACIA!!!
Agradecido de tu consejo y archivo para utilizar en el visual para excel, le cambie unas cosas, que me quede sin centavos y como es para la factura que no me quede con la palabra SON: y los parentecis y sin centavos, obvio que lo hice a lo «bruto» quitando y colocando hasta que funcionó. Muchas gracias
Muchisimas Gracias!!! ☺
Hola gchable
me puedes ayudar que en la hoja de excel me aparesca la hora pero sabes si ahi un metodo para qeu este cambiando cada minuto o segundo sin necesida de ver el reloj de la computadora
a y po rcierto me ayudo mucho ese macro de comvertir numero a letra felicidades
oye se em olvidaba me puedes ayudar si conoces algo de adobe acrobat ya que tquiero quitarle la clabe a un libro pero no se como puedo hacerlo pues el libro lo baje de internet y trae contrasena para poser copiarlo o omidicarlo
Hola, buscate el Passware Kit Enterprise en san google
El 18/08/2010 02:23 p.m. gonzalo,
Excelente solucion de codigo, gracias!
Hola esta muy bien explicada tu formula pero la verdad no se como utilizarla en Excel 2007 no encuentro la funcion de visual basic me podrias explicar un poco mas a fondo te lo voy a agradecer muchisimo
Hola Carlos, mas arribita en los comentarios dice como hacerlo.
Saludos
El 20/08/2010 07:22 p.m. gonzalo,
Esta excelentemente bien explicacion y funcion a la perfeccion, es la primera vez que elaboro una macro y me quedo siguiendo los ejemplos. te felicito de verdad eres un experto.
Excelente aporte!!! muy práctico y fácil, que bueno es compartir el conocimiento 😀
Muchas gracias!
Por años busque esta funcion, gracias por compartirla y ademas explicada de forma sencilla
En verdad que es de admirar a personas como tú que no son egoístas.
Uso Excel 2004 para Mac y me salía un error que solucioné borrando la línea 4, (no sé si después tenga alguna mala consecuencia).
Por mientras todo funciona de maravilla.
Muchas gracias por tu aporte.
Mil gracias por tu aporte, lo habia buscado como loco, se encuentran muchas cosas pero muy complicadas, tengo una pregunta, es que con libros nuevos me funciona muy bien, pero cuando pongo la formula en libros que ya tenia, no me funciona, hay que hacer algo en especial?
Mil gracias
Hola Ivan, no, debe funcionar de la misma forma. Saludos El 27/08/2010 03:05 p.m.,
Definitivamente no lo puedo guardar pero como solo lo ocupo el finde mes pues en un dia hago todo, lo imprimo y ya esta, para el siguiente mes vuelvo a hacer el mismo procedimiento.
Tengo windows 2007
MUCHISIMAS GRACIAS!!!
GRACIAS POR LA FÓRMULA
DE VERDAD ES DE GRAN UTILIDAD
YA ME HACIA FALTA JAJAJA
ASI NO TENGO QUE ESCRIBIR EN MIS
FACTURAS LETRA POR LETRA LAS CANTIDADES
GRACIAS A LA PERSONA QUE PROGRAMO LA FORMULA
SALUDOS A TODOS
DE VERDAD QUE SE APRENDE COSA NUEVA TODOS LOS DIAS.
Hola buenas tardes de verdad agredecido con esta funcion muy util para nosotros los contadores… de verdad excelente explicacion y todo un saludo desde venezuela.. pero tengo una duda como le hago para que me quede siempre guardado o es q no supe hacerlo xq al abrir o cerrar excel debe hacer el mismo procedimiento o como??? de verdad disculpa mi ignoracion en programacion….si me puedes ayudar te lo agradeceria
Hola Vladimir, yo recomendaria que por cada libro de trabajo insertes la macro, para que cuando abras el libro encualquier pc tenga ahi la macro. Saludos El 09/09/2010 03:55 p.m.,
Buenas tardes….Alguien me podría ayudar…por favor? tengo el problema de que me aparece #¿nombre?…Si me pueden ayudar mi correo es l.ledesma@hotmail.com…Gracias
Hola Liliana, cuando aparece #¿NOMBRE? es por que no estan habilitadas las macros El 10/09/2010 02:05 p.m.,
Muchas gracias x la explicacion, habia buscado esta info desde hace mucho, y solo tu explicas como debe ser.
Mil gracias
gchable Gracias por tu contestación y si me puedes ayudar como puedo activar los macros (es windows vista 2007) y como lo guardo porque a veces me aparece la cantidad con letra y cuando lo guardo y lo vuelvo abrir me aparece #####…Gracias…
Liliana, mas arriba esta la respuesta, intentalo. Saludos El 11/09/2010 12:02 p.m.,
EXELENTE GRACIAS
Amigo muchas gracias por la información. Esta muy claro como hacerlo. Me costo un poco de trabajo entender lo que tenia que hacer porque tengo office 2007, pero me quedo claro con la explicación que diste para habilitar todas las macros.
Gracias por tu página.
Saludos.
boy a tratrar de insertar estos macros de convercion a mi hoja de factueracion hojala y me salga vien, y de tener algun problema en la configuracion de esta convercion me comunicare de inmediato con ustedes para que me aukxilien.
GONZALO FELICIDADES Y GRACIAS POR LA INFORMACION DE ESTA CONVERCION NUMERICA A TEXTO – VOY INTENTAR QUE QUEDE GUARDADO EN EL LIBRO Y ESTE DISPONIBLE AL ABRIRLO
gRACIAS Y FELICIDADES
SALUDOS GONZALO TODO FUNCIONA PERFECTO AL INSERTARLO EN LA HOJA DE CALCULO
PERO NO PUEDO GUARDARLO EN EL LIBRO .- CIERRO EL LLIBRO Y AL VOLVERLO ABRIR YA NO HACE LA FUNCION TENGO QUE INSERTAR DE NUEVO EL CODIGO.
ME PUEDES AYUDAR PARA LOGRAR GUARDARLO Y ESTE DISPONIBLE CADA QUE SE HABRA EL LIBRO O LA HOJA DE TRABAJO
EL WINDOWS ES XP Y EL EXCELL ES 2007 POR FAVOR AUXILIAME
MI CORREO ES victor_herrera@hotmail.com
MUCHO TE AGRADECERE ESTA ORIENTACION
GRACIAS
correccion mi cosrreo es
victoriano_herrera@hotmail.com
y no victor_herrera@hotamil.com
muy claro y conciso lo unico que yo agregaria en la parte de las intruccion es como guardarlo y activarlo para que cuando cierres el libro no tengas que repetir todo el proceso de nuevo aunque por alla lo explico una persona,, muy amable con compartir este apunte, saludos desde merida yucatan..
GONZALO.- TODO MUY PERFECTO, EDITAR EL CODIGO Y GRABARLO PARA SU PRESENCIA CONSTANTE SIN TENER QUE CARGAR CADA QUE EL LIBRO SE HABRA. FELICIDADES POR TU TALENTO INGENIOSO LLENO DE CONOCIMIENTOS.
NAMAS TE PIDO UN ULTIMO FAVOR
DIME QUE PONGO AL PARA PONER M.N. FUERA DEL PARENTESIS DEL TEXTO.
O SEA QUE SE REFLEJE HACI SON:(CINCUENTA MIL PESOS 00/100) M.N.
Victor, en la penultima linea del codigo, donde esta «/100 M.N.)» solo saca el M.N. fuera del parentesis para quedar asi «/100) M.N.» El 19/09/2010 11:04 p.m.,
después de tanto buscar, encontrar varias páginas sobre el tema, intentar pasar el código fuente a mi hoja de excell, etc. por fin me funcionó.
tuve un poco de problema porque al cerrar la pagina de excell y al volver a abrirla ya no funcionaba, pero el comentario sobre agregarle XLAM LO CORRIGIÓ.
MUUUUUUUUUUUUUUUUUUUUUUUUUUUUCHAS GRACIAAAAAAASSSSSS!!!!!!!!!
Hola! mil gracias por compartir sus experiencias, tengo una pregunta: yo realizo el machote de mi factura en excel y la imprimo antes para verificar que la impresion salga en el lugar indicado, podria ayudarme a realizar una macro o un programa donde todo esto ya este listo y me ahorre tiempo! saludos y mil gracias!
Hola francisco, yo pienso que en vez de una macro usaras una plantilla ya con margenes ajustados y todo eso. Saludos El 20/09/2010 06:48 a.m.,
tengo el mismo dilema gchable, ya hice la plantilla con el formato y los encabezados para llenar pero al momento de imprimir me sale completo el formato cabe señalar que tengo mis facturas preimpresas y quiero que solo los datos como: cliente fecha direccion detalle de productos etc, se impriman pero que me aparezca el formato de la factura en la pantalla.. por la atencion gracias..
ya veo, creo que ya se a que te refieres, mira, en una ocasión lo que hice fue escanear una factura, lo insertas en excel y luego le pones el efecto transparente, solo se imprimiría los datos capturados, checa este que hice hace algún tiempo http://www.esnips.com/doc/46945856-9bed-4fd6-9af5-479f8be3644c/Afil-02-Formulario hay una hoja oculta en donde esta el formato, dale mostrar para verlo. El 20/09/2010 12:54 p.m.,
GONZALO ME PRODRIAS AYUDAR ORIENTANDOME EN LA HOJA DE CALCULO DE EXEL MUCHO TE LO AGRADECERIA.
NESECITO FORMAR UN DIRECTORIO DE 50 CLIENTES EN EL QUE CADA CLIENTE CONSTA DE:-
1.- NOMBRE Y DOS APEIDOS
2.- DOMICLIO
3.- COLONIA
4.- CIUDAD
5.- TELEFONO
6.- CODIGO POSTAL
7.- REGISTRO FEDERAL DE CAUSANTES.
Y DE ESTE DIRECTORIO CON UN CODIGO DE IDENTIFICACION PARA CADA CLIENTE CITARLOS EN EL FORMATO DE LA FACTURA Y QUE APARESCAN EN ELLA CON SUS 7 DATOS SIN TENER QUE ESCRIVIRLOS CADA QUE SE ELABORE LA FACTURA SUS 7 DATOS.-
Hola Victoriano, el codigo de identificacion podrias usar el RFC, y en cuanto a la funcion puedes usar =BUSCARV() El 26/09/2010 05:52 p.m.,
contador, igual requiero una gestion de clientes, es similar a lo que ocupa victoriano, en mi caso seria, nombre/razon social,direccion1, direccion2 por ultimo el rfc, considerando que en la hoja 1 tengo la plantilla para llenar la factura en la hoja 2 tengo capturado los clientes en 4 lineas por cliente como puedo vincularlo al machote de la hoja 1 para no tener que teclear los datos de cliente, ya hice varias pruebas y no le encuentro una forma practica, gracias por tu ayuda de antemano
Joaquin, no recomiendo excel como base de datos de clientes o algún otro tipo de datos, si tienes muchos clientes usa algun soft para ese proposito. Aunque puedes hacerlo pero ten cuidado con los dedazos. Saludos El 27/09/2010 02:24 p.m.,
gracias por el aporte muy muy bueno felicidades ya que nos has sacado de muchos pauros a mucho saludos amigo
Excelente tu eplicacion
Gracias por el aporte
Hola
este contenido esta bueno felicidades
gracias
Perfecto y funcionando Gracias . . . . .
gracias contador, me sirvio muchisimo… le mando muchas bendiciones
Gracias por tu ayuda.
gRACIAS AMIGO LA VERDAD QUE MUY UTIL Y PRACTICA TODA LA INFORMACION QUE NOS BRINDASTE POR ESTE MEDIO ME SIRVIO MUCHISIMO, TE ESTOY AGRADECIDO POR ESTO.
MUCHAS GRACIAS.
muchas gracias….
Hola, me encanto tu pagina, segui los pasos y todo salio bien… solo quisiera saber… cuando aplicas el codigo en un libro y quieres usarlo en las paginas del libro no hay problema… hay alguna forma de que al abrir un libro nuevo para trabajar no tengas que hacer nuevamente el proceso?????
Agradecida desde ya por tu respuesta o la respuesta de alguien que al usarlo haya resuelto esto… te saluda
Viviana Gaete
Viviana, debes agregar el codigo a tus libros, te explico, si pones el codigo fuera del libro, entonces cuando mandes el libro por correo o lo usas en otra pc no funcionara, ya que como comprenderas el codigo no esta en el libro. El 19/10/2010 09:08 a.m.,
HOLA MI BUEN ESTIMADO COLABORADOR, AGRADEZCO LA AYUDA, GRACIAS POR COMPARTIR TUS CONOCIMIENTOS ESTO ME AYUDO DE UNA PREGUNTA QUE ME HICIERON MIS ALUMNAS DE CONTABILIDAD, ME SIENTO CONTENTO POR QUE NI SUS MAESTROS DE EXCEL LAS AYUDAN, GRACIAS DE NUEVO Y SIGUE ASI, DIOS TE BENDIGA…
alfin he podido terminar al 100% una consulta, que por falta de el importe en letras no habia podido terminar…
muchas grascias un gran aporte
Gonzalo, disculpa por las palabras que te voy a escribir. Hay personas especiales en este mundo, diferentes a las demas, y una de esas pocas eres tu. Gracias por compartir lo que sabes. Otra cosa, yo sin saber nada de macros, con la excelente explicacion que das, no se como pero pude hacer que el resultado salga algo como esto: 21.32 igual a «Son: veintiuno y 32/100 nuevos soles» y asi con cualquier candtidad, Nuevamene, Muchas Gracias.
Gracias!!!
Oye amigo de conta a conta, mis respetos te la volaste con el codigo, he tratado de ensamblarlo como en c++ pero si me es un poco complicado sobretodo por el tiempo, muchisimas gracias.
Mil gracias, me sirvio muchisimo, creo que gracias a ti cualquiera puede hacerlo sin necesidad de saber nada de programación, de nuevo mil gracias n.n
Excelente Formula, la mejor que e visto, yo tenia una para oficce 2003 y esta esta mucho mejor la puse en excel 2007, Saludos
Has salvado mi calificación tocayo
Muchas gracias por tu codigo, me hiciste ganar un millon de dolares por el. 😀
jejeje El 02/11/2010 09:17 p.m.,
Muchas gracias por tu excelente explicación, te felicito.
Gracias y saludos..
Jovenes aprobechando esta gran ayuda del autor, me ha servido de mucho gracias por tu gran aporte.
saludos
BUENA APORTE Y DE MUCHO UTILIDAD, GRACIAS
Hola estimado, en primer lugar me parece sorprendente que personas como usted compartan lo que saben de forma humilde y lo felicito por eso, mis mayores respeto para usted, ahora mi consulta es la siguiente, yo necesito una formula o codigo similar al que acabo de ver de usted, pero lo que necesito es lo siguiente:
Ejem: 6,3 que diga «Seis coma tres», estube modificando el codigo pero no doy con lo que necesito, estaria muy agradecido de su ayuda, gracias
Excelente código, si necesitas algo de código sobre manejo de excel y acces me cuentas.
gracias por tu gran ayuda…
soy de PERU, POR FAVOR ME GUSTARIA QUE ME DES UNA AYUDITA MAS, NOSOTROS FACTURAMOS EN NUESTRA MONEDA NACIONAL QUE ES EL NUEVO SOL Y TAMBIEN EN DOLARES AMERICANOS…COMO PODRIA HACER PARA FACTURAR CON LOS DOS TIPOS DE MONEDA SIN ESTAR MODIFICANDO LA FORMULA
Tengo un complemento para Excel que hace te será muy útil para facturar en la moneda que tu le indiques, escribeme y con gusto te lo mando: tosj820128@yahoo.com.mx
Muy buen aporte gracias por su ayuda me resulto muy valiosa
Gonzalo mil gracias por tu ayuda…eres inmortal por que transmites tus conocimientos!!!
HOLA,,,, MUCHAS GRACIAS, BUSQUE MUCHO Y DE TODAS LAS OPCIONES ESTA FUE LA MUCHO,, PERO MUCHO MEJOR,,, MIL GRACIAS, ME SACASTE DE UN GRAN APURO,,, BYE
Muchas gracias por el dato, lo adapté a una factura que estoy realizando, le quité los centavos y quedó perfecto, muchas gracias.
Buena Compadrito:) se paso. Lo unico de todo esto es que no hace referencia al tipo de moneda usada en un pais determinado, ya que por lo menos en el mio, no coincide que aparezca al final del texto la expreción «M.N.» Y solo coloca decimales no redondea la cifra.
Buenas aporte, pero quisiera saber como agregar la palabra «DE» despues de millon o millones por ejemplo: 1000000, «UN MILLON DE PESOS», y
Buen aporte, pero quisiera saber como agregar la palabra «DE» a millon por ejemplo: 1000000, «UN MILLON DE PESOS», ya que al escribir esta cantidad solo aparece «UN MILLON PESOS», y tambien en los millones «CATORCE MILLONES PESOS» espero me puedan ayudar ya que soy un novato en esto de excel y macros
aplicacion sencilla y funcional, me sirvio mucho ahora estoy buscando la opcion que no devuelva la moneda, solo el valor ejempo 32, treinta y dos y que no incluya la moneda
hola Gonzalo sabes esta legal tu blog, bueno en fin tengo un problema, cuando entro al visual bassic, y luego: insertar/modulo, este esta bloquedo por lo k no puedo intertar el código, en fin no se si tienes alguan solucion para este problema. Gracias de ante mano.
Trato de crear macros en excel 2007 y no me sale coomo puedo hacerlo???
muy buena la pagina me funcionó super rapido a diferencia de las demas….. q no entendia nada.. pero lo que necesito es que me salga en soles por ejemplo.
Ochenta y seis con 40/100 nuevos soles.
Agradeceria me ayude en eso pues lo necesito urgente 😉
Mil gracias es súper fácil así como lo pones.
GRACIAS!!! DE MUCHA AYUDA
gracias me resulto de lo lindo
patricio
Excelente post!! Sin dudas el único que explica bien esta función!! Te felicito y agradezco mucho!!
Andrés.
esta es la mejor respuesta que e encontrado gracias
Muchas gracias funciona muy bien y es de gran ayuda nois facilia el trabajo
GRACIAS ES DE MUCHA AUDA, FUNCIONA SUPER BIEN
gracias por el aporte, me sirve muchisimo
Hola Amigos. buenas noches. yo utilicé esta funcion y me funciono a la perfeccion… y eso que le hice unas modificaciones a quetzales, mi moneda… pero ahora quiero saber como le hago si quiero que cuando sean monedas exactas me salga por ejempo Q.1.00 un quetzal exacto. y cuando tenga centavos un quetzal con 00/100 me podras ayudar amigo..
ERES GRANDE
hola, muchas gracias tu ayuda me sirvio de mucho
felicidades, fue un aporte muy grande, deberían de hacer dos ejemplos unos con la palabra «son» y otro sin la palabra «son». ya que necesitamos de los dos, gracias……………………
Gracias me sirvio mucho tu comentario
muy buena informacion gracias!!! es de las mejores que eh visto por la explicacion detallada y sencilla!!!
Hay estoy tan emocionada que no lo puedo creeer busque por todos lados y ponen cosas que nunca entendi me sentia de lo mas ignorante y aqui gracias a el pude hacerlo tal como lo pone
Muchisimas Gracias Hermano, Dios te BEndiga siempre, y si me acuerdo, PALITROCHE, jajajaja
Hola que tal, esta macro me ha ayudado bastante, ahora sera mas rapido la facturacion ya hice todas las modificaciones a mis libros gracias
para excel 2007 no hay una obcion me gustaria que me ayuden lo e usado para elxel 97-2003 ahora tengo ecxel 2007 por favor se los agradecere
Hola Raul, como se te puede ayudar? arriba en los comentarios hay varios casos como el tuyo, saludos El 03/01/2011 10:56 a.m.,
que buen aporte hiciste me CAE, CHIDO
hola buenos días, aquí les dejo el programa actualizado
FUNCTION CONVIERTENUMLETRA(NUMERO)
DIM TEXTO
DIM MILLONES
DIM MILES
DIM CIENTOS
DIM DECIMALES
DIM CADENA
DIM CADMILLONES
DIM CADMILES
DIM CADCIENTOS
TEXTO = NUMERO
TEXTO = FORMATNUMBER(TEXTO, 2)
TEXTO = RIGHT(SPACE(14) & TEXTO, 14)
MILLONES = MID(TEXTO, 1, 3)
MILES = MID(TEXTO, 5, 3)
CIENTOS = MID(TEXTO, 9, 3)
DECIMALES = MID(TEXTO, 13, 2)
CADMILLONES = CONVIERTECIFRA(MILLONES, 1)
CADMILES = CONVIERTECIFRA(MILES, 1)
CADCIENTOS = CONVIERTECIFRA(CIENTOS, 0)
IF TRIM(CADMILLONES) > «» THEN
IF TRIM(CADMILLONES) = «UN» THEN
CADENA = CADMILLONES & » MILLON»
ELSE
CADENA = CADMILLONES & » MILLONES»
END IF
END IF
IF TRIM(CADMILES) > «» THEN
CADENA = CADENA & » » & CADMILES & » MIL»
END IF
IF TRIM(CADMILES & CADCIENTOS) = «UN» THEN
CADENA = CADENA & » PESOS » & DECIMALES & «/100″ & » M.N. »
ELSE
IF MILES & CIENTOS = «000000» THEN
CADENA = CADENA & » » & TRIM(CADCIENTOS) & » DE PESOS » & DECIMALES & «/100″ & » M.N. »
ELSE
CADENA = CADENA & » » & TRIM(CADCIENTOS) & » PESOS » & DECIMALES & «/100″ & » M.N. »
END IF
END IF
CONVIERTENUMLETRA = TRIM(CADENA)
END FUNCTION
FUNCTION CONVIERTECIFRA(TEXTO, SW)
DIM CENTENA
DIM DECENA
DIM UNIDAD
DIM TXTCENTENA
DIM TXTDECENA
DIM TXTUNIDAD
CENTENA = MID(TEXTO, 1, 1)
DECENA = MID(TEXTO, 2, 1)
UNIDAD = MID(TEXTO, 3, 1)
SELECT CASE CENTENA
CASE «1»
TXTCENTENA = «CIEN»
IF DECENA & UNIDAD «00» THEN
TXTCENTENA = «CIENTO»
END IF
CASE «2»
TXTCENTENA = «DOSCIENTOS»
CASE «3»
TXTCENTENA = «TRESCIENTOS»
CASE «4»
TXTCENTENA = «CUATROCIENTOS»
CASE «5»
TXTCENTENA = «QUINIENTOS»
CASE «6»
TXTCENTENA = «SEISCIENTOS»
CASE «7»
TXTCENTENA = «SETECIENTOS»
CASE «8»
TXTCENTENA = «OCHOCIENTOS»
CASE «9»
TXTCENTENA = «NOVECIENTOS»
END SELECT
SELECT CASE DECENA
CASE «1»
TXTDECENA = «DIEZ»
SELECT CASE UNIDAD
CASE «1»
TXTDECENA = «ONCE»
CASE «2»
TXTDECENA = «DOCE»
CASE «3»
TXTDECENA = «TRECE»
CASE «4»
TXTDECENA = «CATORCE»
CASE «5»
TXTDECENA = «QUINCE»
CASE «6»
TXTDECENA = «DIECISEIS»
CASE «7»
TXTDECENA = «DIECISIETE»
CASE «8»
TXTDECENA = «DIECIOCHO»
CASE «9»
TXTDECENA = «DIECINUEVE»
END SELECT
CASE «2»
TXTDECENA = «VEINTE»
IF UNIDAD «0» THEN
TXTDECENA = «VEINTI»
END IF
CASE «3»
TXTDECENA = «TREINTA»
IF UNIDAD «0» THEN
TXTDECENA = «TREINTA Y »
END IF
CASE «4»
TXTDECENA = «CUARENTA»
IF UNIDAD «0» THEN
TXTDECENA = «CUARENTA Y »
END IF
CASE «5»
TXTDECENA = «CINCUENTA»
IF UNIDAD «0» THEN
TXTDECENA = «CINCUENTA Y »
END IF
CASE «6»
TXTDECENA = «SESENTA»
IF UNIDAD «0» THEN
TXTDECENA = «SESENTA Y »
END IF
CASE «7»
TXTDECENA = «SETENTA»
IF UNIDAD «0» THEN
TXTDECENA = «SETENTA Y »
END IF
CASE «8»
TXTDECENA = «OCHENTA»
IF UNIDAD «0» THEN
TXTDECENA = «OCHENTA Y »
END IF
CASE «9»
TXTDECENA = «NOVENTA»
IF UNIDAD «0» THEN
TXTDECENA = «NOVENTA Y »
END IF
END SELECT
IF DECENA «1» THEN
SELECT CASE UNIDAD
CASE «1»
IF SW THEN
TXTUNIDAD = «UN»
ELSE
TXTUNIDAD = «UN»
END IF
CASE «2»
TXTUNIDAD = «DOS»
CASE «3»
TXTUNIDAD = «TRES»
CASE «4»
TXTUNIDAD = «CUATRO»
CASE «5»
TXTUNIDAD = «CINCO»
CASE «6»
TXTUNIDAD = «SEIS»
CASE «7»
TXTUNIDAD = «SIETE»
CASE «8»
TXTUNIDAD = «OCHO»
CASE «9»
TXTUNIDAD = «NUEVE»
END SELECT
END IF
CONVIERTECIFRA = TXTCENTENA & » » & TXTDECENA & TXTUNIDAD
END FUNCTION
saludos cordiales
GRACIAS EXCELENTE PANA ERES UN GENIO YO CONVERTI LA FORMULA A BOLIVARES PERO GRACIAS A TU PLANTILLA
EXITOS GRACIAS
Hey! pues yo tambien te agradezco el aporte, Saludos desde MExico DF
gracias!!!te amo!!!! tarde siglos en hacer esto, lo busq x varios dias pero ninguno se explicaba bien como el tuyo…..
felicidades!!!!!
bsosss
Excelente, te agradesco el apoyo. Yo tengo una version que hice pero es muy larga. solo le voy a realizar unos pequeños ajustes. De nuevo Mil gracias
Esta excelente, muchas gracias, me podrías decir como guardarlo en office 2007, ya que lo intento hacer pero al abrir otra hoja no me funciona la macro, (de favor paso a paso) y de las cantidades en las que que no pone «DE» por ejemplo «un millón de pesos ya habrás podido conseguir la corrección. Una vez más mil gracias, «si cerebro tenemos pero hay algunos que si saben utilizarlo muy bien». ATTE. RAFAEL
Excelente aplicación, mil gracias, Son unos genios!!!!.
EXELENTE, ACABO DE DESPEJAR UNA INQUIETUD DE MUCHO TIEMPO GRACIAS
EXCELENTE
EXCELENTE APORTE, YA LO DIJERON TODO. GRACIAS. ES BUENO SABER DE PERSONAS QUE DAN SIN ESPERAR NADA A CAMBIO. QUE DIOS TE LLENE DE MUCHOS CONOCIMIENTOS Y SABIDURÍA.
Muchas gracias me ayudo mucho 😉
gracias
Perfecto, solo hay que hacer una pequeña modificación a la penúltima parte si escribes 1.50 lo traducira a un pesos con 50/100
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Fo
correcto quedaría
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad >= 2, » PESOS «, » PESO «) & Fo
Saludos
THANK VERY MUCH 10 ARE MEJOR CONGRATULATIONS MY FRIEDSDS
EXCELENTE LA EXPLICACIÓN Y EL DESEMPEÑO DE LA MACRO.
GRACIAS
HOLA MUCHISIMAS GRACIAS ME SIRVIO DE MARAVILLA, ESTUVE INTENTANDO VARIAS OPOCIONES EN OTROS BLOGS Y NADAAAAAAAAA. SE LOS RECOMIENDO SIP FUNCIONA
Hola Gonzalo excelente tu aporte.
que debo hacer cuando ingrese una cantidad sin decimales, se omita los centavos.
Ej.1250.50(UN MIL DOCIENTOS CINCUENTA CORDOBAS CON 50/100)
Pero si digito una cantidad en entero que salga de la siguiente manera.
1200(UN MIL DOCIENTOS CORDOBAS NETOS).
Saludos
y gracias por tu aporte.
UNA CONSULTA SABE QUE ESTOY INICIANDO UN TRABAJO Y SOY NOVATA EN EXCEL,DESEARIA QUE ME EXPLICARAS COMO PUEDO LOGRAR QUE SE ME ACUMULEN DATOS DE LA HOJA UNO A LA HOJA DOS SIN LOGRAR MODIFICACIONES Y SIN QUE SE MUEVAN LAS CELDAS
EJEMPLO REALIZO REPORTES DIARIOS EN LAS CUALES PRESENTO GASTO E INGRESOS Y QUIERO QUE EN LA HOJA DOS SE ACUMULEN TODOS ESOS GASTOS E INGRESOS MENSUALMENTE Y DE LAS DIFERENTES FECHAS INTENTE HACERLO PERO NO ME LOGRA NADA.
POR FAVOR SI MEPUDIERAS AYUDAR TE AGRADECERE MUCHO. PUEDES CONTACTRTE CONMIGO AMI CORREO Y A SI TE ENVIO UN FORMATO DE LO QUE QUIERO REALIZAR.
ME FUE DE GRAN AYUDA! GRACIAS
gacias Exelete Aporte Estube Probando varios pero tenian varios errores y este esta muy completo
Gracias
Saludos
Muy agradecido por tu macro, lo necesitava para una impresion de cheques, gracias
Saludos a todos, Agradezco por e aporte, les comento que lo he diseñado para trabajarlo en Quetzales y le he hecho unas modificaciones, si alguno lo necesita se lo mando en una hoja que excel, escribanme al correo ronelescobar@hotmail.com
Las modificaciones fueron
Ponerlo en Quetzales
Quitarle el SON
Quitarle los parentesis
y Ponerle el CON
Ejem. 50.34 CINCUENTA QUETZALES CON 34/100
excelente código,
felicidades! 😉
personas que ayudan …aciendo, lo correcto… y …haciedolo correcto…. son las que se admiran,, gracias por el aporte exlentisimo
GRACIAS, LE HE HECHO ALGUNOS CAMBIOS PARA AJUSTARLA A MIS NECESIDADES, PERO ME HA SI INMENSAMENTE ÚTIL.
AHORA TENGO OTRA PREGUNTA, QUIERO QUE SI MI CELDA ALCANZA UN VALOR SE EJECUTE UNA FORMULA EN LA CELDA SIGUIENTE, COMO SE PUEDE HACER ESO??
SALUDOS!!
Hola, =SI(A1<=1,»esta formula»,»si no esta otra») El 11/02/2011 12:09 a.m.,
Muchas gracias ha sido de gran ayuda y me ha ahorrado mucho tiempo en la preparacion de mis documentos
Es mucho mas fácil, crear una macro (marco1, por ejemplo) y detenerla.
Luego en la pestaña «vista» / Macros / Ver Macros y le damos modificar macros, se abre al instante la macro q guardamos sin hacer nada, ahi le borramos lo q contiene y en su lugar pegamos el código…. y listo!!.
Solo noté un pequeño error en la macro, cuando escribes: 20’000,000 te escribe: «SON: ( VEINTE MILLONES PESOS 00/100 M.N.)» debiendo ser: «SON:( VEINTE MILLONES DE PESOS 00/100 M.N.)», y lo solucioné con una función condicional SI = 20,000,000 q escriba «SON: ( VEINTE MILLONES DE PESOS 00/100 M.N.)»
FUERA DE ESO, ESTÁ EXCELENTE PARA PAÍSES COMO MÉXICO, Y OTROS LATINOMAERICANOS QUE USAN EL PESO COMO MONEDA DE CURSO LEGAL.
muchisimas gracias…. esta muy bien explicado es mas tan agradecido estoy que nunca habia dejado comentarios en algun blog, pero la verdad con estas explicaciones vale la pena tomarce el tiepo, te lo agradezco……
Hola gonzalo tu me podrias ayudar!!!
me encanta excel y eres un muy buen aporte para esta cultura…
si yo habilito esta macro que debo hacer para que me funcione en todos los excel a crear y ya creados anteriormente. Ya que al abrir una nueva hoja no me figura la nueva formula.
Y es posible que no aparezca ni los ceros al final ni el MN.
Te agradecere mucho tu ayuda!!!
Gracias
X . X
V
BUENOS DIAS
GRACIAS POR ESTE TIPO DE INFORMACION ES MUY IMPORTANTE PARA CONOCER MAS ACERCA DE ESTE MARAVILLOSO PROGRAMA
QUISIERA Q POR FAVOR ME COLABORARAS EN:
QUIERO QUITAR LA PALABRA SON Y EL FINAL 00/100 N/N
YA QUE NO APLICA A LA FACTURA Q REALIZAMOS
TE AGRADEZCO Y ESTARE ATENTA A LA RESPUESTA
Hola angela, en los comentarios esta como hacer lo que necesitas. Saludos El 28/02/2011 09:49 a.m.,
Hola Angela:
Solo copia y pega este código, (ya tiene eliminado lo de SON y lo del final de 00/100 M.N.):
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 = «(» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «)
End Function
Hola Antonio
Acabe de utilizar este codigo en un modelo de factura que tengo y no puedo aplicarlo, la ultima linea me aparece en rojo como si faltara algo, hace falta algun parentesis?
GRACIAS LO HICE EN 2 MINUTOS
GRACIAS
GRACIAS COMPA!¡!
POR CIERTO ALGUN TUTORIAL ACERCA DE MACROS UTILES EN EXCEL, GRACIAS POR ANTICIPADO
Hee, amigo deberia usted ser profesor y de los buenos es muy didactico la verde entre a varios ste me parecio el mejor
muchas gracias
HOLA,TUVE KA NECESIDAD DE BUSCAR ESTE TEMA, INTENTE APLICARLO COMO MENCIONAS PERO DE IGUAL FORMA NO SE COMO DAR DE ALTA ESTA MACRO O QUE HACER.
COPIE EL CODIGO Y LUEGO?
COMO HABILITO LA MACRO?
COMO LA GRABO?
QUE MAS SIGUE, SOY MALO EN EXCEL.
PUEDES APOYARME?
GRACIAS.
HUGO
Al terminar de copiar el código le das:
1) Menú Archivo / Cerrar y volver a excel.
2) Luego escribes algun número con decimales, para comprobar que funciona la macro, por ejemplo, en A1 escribes: 2,345.65
3) luego en la celda a3 escribes: =PesosMN(A1)
Eso es todo, debe aparecer en letra el número.
Es todo. Al guardar el archivo se guarda en él la macro y se manda llamar como =PesosMN(Referencia de celda)
sos grande
muxas gracias amigo me sirvio muxo la macro para mi trabajo apenas estoy comenzando mi carrera como contador y con esto que me es de gran ayuda pa mi trabajo.
hello !!!!
aahhh perfekto !!!
lo buske x un buen rato y ahora en 5 min ya lo tenia probado .muy rapido y listo para usar !! 😀 …GRACIAS JOVENES !!!
SEAN FELICES 😀 …
Excelente Ayuda,
puedo agregar en una hoja de cálculos dos funciones o códigos (una en dólares y otra para pesos)?
BUENAS TARDES:
TENGO EXCEL 2007 Y AUNQUE HE TRATADO DE LEER MUCHOS DE LOS COMENTARIOS, NO HE ENCONTRADO LA RESPUESTA QUE NECESITO Y ES COMO INTRODUZCO LA FORMULA, PORQUE NO ME APARECE EL VISUAL BASIC, TENGO MACROS, PERO SOLO DICE «VER MACROS» Y «GRABAR MACRO».
ME SERIA DE MUCHA AYUDA SI ME LO EXPLICAN PORQUE NO SE POR DONDE ES QUE SE HACE.
MUCHISIMAS GRACIAS
BUENAS TARDES,
YO TENGO EXCEL 2007 Y AUNQUE HE LEIDO MUCHOS DE LOS COMENTARIOS NO ENCUENTRO COMO CREAR ESTO EN ESTE EXCEL, ESTA MACROS, PERO SOLO TIENE GRABAR MACRO O VER MACROS….
ME GUSTARIA QUE ME AYUDARAN CON ESTO .
MUCHAS GRACIAS
Hola Jessi:
1.- Dale clic en el botón de Office (Arriba-Izquierda).
2.- Dale clic en el botón «Opciones de Excel» (Abajo-Enmedio).
3.- En Mas frecuentes debes habilitar la opción «Mostrar ficha Programador en la Cinta de Opciones» y
4.- Listo, solo dale clic a la ficha Programador, que ya tienes (es la última a la derecha).
Ahi encuentras Visual Basic, pero si lees con atención, en un comentario mio anterior, decia q es mas facil grabar una macro nueva, por ejemplo macro1, y entrar en modificar macro, ahi se borra el contenido de la macro1, y se pega el código que ya viene indicado en este blog.
Espero haberte ayudado, Suerte!
hola!!!
sin entender nada de Vbasic (alguna vez estudie pseudocodigo… pero hace como 10 años… asi que no cuenta) lo modifiqué para que me devuelva el resultado en el siguiente formato
1.235,66
UN MIL DOSCIENTOS TREINTA Y CINCO CON 66/100.-
es decir… le saqué el «con» y los parentesis, y le agregué el «con» antes de los centavos y un bonito cierre .-
Ahora… estoy estancado, intentando colocarle el numero original a continuación, entre paréntesis y con el signo $
necesitaría que diga:
UN MIL DOSCIENTOS TREINTA Y CINCO CON 66/100.-($ 1.235,66)
si alguno de los expertos programadores me da una mano… les estaría eternamente agradecido.
Muchas Gracias
Diego.
GRACIAS AMIGO, ESTA MUY BIEN EXPLICADO LOS PASOS A SEGUIR, COMO SOY VENEZOLANO LE HICE LA MODIFICACIÓN DE PESOS A BOLÍVARES. NO SABES CUANTO BUSQUE ESTA MACRO, PARA INCLUIRLA EN MIS FORMATOS DE FACTURA. DE NUEVO MIL GRACIAS POR COMPARTIRLO.
Muchas gracias, me servira para la facturacion electronica (Mexico).
Viejo, que Dios te bendiga, gracias por compartir tus conocimientos. Excelente formula.
pero se tiene que guardar el libro como macro para que se guarden los cambios????????? en la hoja a la que le puse la formula
Hola Denisse, no precisamente debes guardar el libro como macro, mas bien guardas el libro y ya lleva el modulo del Visual Basic que insertaste.
El 23/03/2011 12:10 p.m.,
Hola:
Ya lo hice todo y si me funciona este macro pero no lo puedo utilizar en dos hojas del mismo libro quisiera saber como lo puedo hacer para que funcione y cuando cierro Excel y al volverlo abrir tengo que volverlo a pegar en macro quisiera saber paso a paso como lo puedo guardar sin tener que volverlo a cargar o crear alguien me puede ayudar gracias
De manera simple, se obtiene un resultado es efectivo y eficaz
Gracias
HB
Hola buen dia: Te quiero agradecer la verdad ya tenia tiempo tratando de conseguir esta conversión, busque en muchas páginas y ninguna me ayudo gracias deberas por conpartir tus conocimientos con tantas personas QUE trabajamos para salir adelante pero no contamos con estos conocimientos GRACIAS.
Hola, he tratado de realizar y guardar esto pero no puedo, alguien me pudiera decir como guardarlo en un excel 2007, si me ayudaran con el paso a paso ….. se los agradezco
Gracias por tan buena ayuda y excelente explicación, mil gracia por compartir te felicito
El codigo me funciona a la perfeccion en office 2010.
Lo que necesito es remplazar «pesos MN por dolares» y eliminar la palabra un (ejemplo un mil doscientos) para que diga solo mil doscientos, ya que aca en Puerto Rico no se utiliza con el un al principio.
Cuando intente reemplazar la palabra Pesos MN en el codigo, al correr el macro en la hoja me daba solo el numero sin la demas informacion.
Gracias por el aporte, estubo buenisimo/
Ya saben SI FUNCIONA EN EXCELL 2010.
HOLA:
Comole hiciste por q acabo de grabar la macro y no me dejo guardar el archivo con extension xls , lo tuve q guardar como complemento de excel,
ademas caundolo abro si aparece la maco cambio cantidades y si aplica, pero a la hora de guardar los cambios que hice nome deja le tengo e hacer con guardar como
ayudapor favor
Hola, tal vez debas guardarlo como «Libro de Excel habilitado para macros (*.xlsm)»
Gracias por el aporte, es de mucha utilidad. Lo adecue a mis necesidades y super, no me da ningun problema con las cantidades que yo uso, para los que quieran hacer cambios una forma facil de hacerlo es utilizando la opcion buscar y reemplazar en el editor de visual para poder dejarla tal y como se quiera.
Saludos.
recibi la hoja que me enviaste, pero me funciona si voy a escribir la cantidad en miles, ej 1500, que sale mil quinientos y no un mil quinientos como antes, pero si la cantidad es 1,000,000 un millon, entonces solo sale millon de dolares, o si solo es 1 dolar, solo sale dolar.
habria alguna forma de programar el codigo para que obvie el «un» cuando se trate de cantidades en mil, pero que lo deje funcional cuando de 1 o de 1,000,000 o > se trate????
Intente hacerlo con if then, pero no me salio.
de todas formas si encuentran algo me dejan saber.
Mira, para no darle tantas vueltas, aqui pudes encontrar uno multimoneda.
http://www.officefull.es/
Saludos
El 02/04/2011 08:04 a.m.,
GRACIASSSSSSSS 🙂
Excelente contribucion, gracias y Saludos
Muy buena la explicacion, no soy experto en excel, menos en macros, pero a mi me funciono a la primera.
Se agradece.
Muchas gracias Gonzalo , me funciono excelente!!!
HOLA, GONZALO ME GUSTO LA EXPLICACIÓN, NO ME DEJA PONERLOS EN TODOS MIS LIBROS DE TRABAJO, COMO LE HAGO? USO «Excel 2007».
BUENO A MI ME FUNCIONO CON 2007 ASI:
‘**********************************************************************
‘** **’
‘** CONVERTIR DE NUMEROS A LETRAS **’
‘** AUTOR: OSCAR JAVIER LEON AVENDAÑO **’
‘** licencia: USO LIBRE **’
‘** http:www.oscarjleon.com **’
‘** FECHA DE CREACION: NOV.1991 **’
‘** **’
‘**********************************************************************
Public Function CLetras(ByVal numero As Double, Optional fmtoUnidad As Integer = 0, Optional Unidades As String = «Kilos», Optional Unidad As String = «Kilo», Optional Genero As String = «M») As String
Dim strUnidad(0 To 5) As String
Dim strUnidades(0 To 5) As String
Dim strCifras(0 To 4) As String
Dim NumeroCifras As Byte
Dim NumeroTercios As Byte
Dim strNumero As String
Dim strTMP As String
Dim dblNumeroEntero As Double
Dim intNumeroTmp As Integer
Dim intCentavos As Integer
Dim J As Integer
Dim intNumTmp As Integer
strUnidades(0) = » pesos m/cte»: strUnidades(1) = » unidades»: strUnidades(2) = » dolares»: strUnidades(3) = » euros»: strUnidades(4) = » » & Unidades: strUnidades(5) = «»
strUnidad(0) = » peso m/cte»: strUnidad(1) = » unidad»: strUnidad(2) = » dolar»: strUnidad(3) = » euro»: strUnidad(4) = » » & Unidad: strUnidad(5) = «»
strCifras(1) = «»: strCifras(2) = » mil «: strCifras(3) = » millones «: strCifras(4) = » mil «: strCifras(0) = » millón »
intCentavos = Int((Round(numero, 2) * 100) – (Int(numero) * 100))
dblNumeroEntero = Round(numero, 2) – (intCentavos / 100)
strNumero = CStr(Abs(dblNumeroEntero))
NumeroCifras = Len(strNumero)
NumeroTercios = Abs(Int(-NumeroCifras / 3))
Select Case dblNumeroEntero
Case 0
strTMP = «cero»
Case 1
If fmtoUnidad 5 Then
strTMP = «un»
strUnidades(fmtoUnidad) = strUnidad(fmtoUnidad)
Else
strTMP = «uno»
End If
If Genero «M» Then strTMP = «una»
Case 2 To 999
strTMP = CLetrasS1(CLetrasS3(dblNumeroEntero, 1), Genero)
Case 1000
strTMP = «mil»
Case 1000000
strTMP = «un millón»
Case 1000001 To 1999999
strCifras(3) = » millón »
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
Case Else
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
End Select
If Right(strTMP, 9) = «millones » Then strTMP = Mid(strTMP, 1, (Len(strTMP) – 9)) & «millones de»
If Right(strTMP, 6) = «millón» Then strTMP = Mid(strTMP, 1, (Len(strTMP) – 6)) & «millón de»
strTMP = strTMP & strUnidades(fmtoUnidad)
If intCentavos > 0 Then
Select Case fmtoUnidad
Case 0
strTMP = strTMP & » con » & CLetrasS1(intCentavos, Genero) & » centavos»
Case 5
strTMP = strTMP & » punto » & CLetrasS1(intCentavos, Genero)
End Select
End If
‘cambiar «un mil» o «una mil» por «mil»
strTMP = Replace(strTMP, «una mil», «mil», , , vbTextCompare)
strTMP = Replace(strTMP, «un mil», «mil», , , vbTextCompare)
CLetras = strTMP
End Function
‘función que secundaria que calcula las decenas
Private Function CLetrasS2(numero As Integer, Genero As String) As String
Dim strUnidades(0 To 20) As String: Dim strDecenas(2 To 9) As String: Dim Unidades As Byte: Dim Decenas As Byte: Dim strTMP As String
strUnidades(0) = «»: strUnidades(2) = «dos»: strUnidades(3) = «tres»: strUnidades(4) = «cuatro»: strUnidades(5) = «cinco»: strUnidades(6) = «seis»: strUnidades(7) = «siete»: strUnidades(8) = «ocho»: strUnidades(9) = «nueve»: strUnidades(10) = «diez»: strUnidades(11) = «once»: strUnidades(12) = «doce»: strUnidades(13) = «trece»: strUnidades(14) = «catorce»: strUnidades(15) = «quince»: strUnidades(16) = «diez y seis»: strUnidades(17) = «diez y siete»: strUnidades(18) = «diez y ocho»: strUnidades(19) = «diez y nueve»: strUnidades(20) = «veinte»
strDecenas(2) = «veinti»: strDecenas(3) = «treinta»: strDecenas(4) = «cuarenta»: strDecenas(5) = «cincuenta»: strDecenas(6) = «sesenta»: strDecenas(7) = «setenta»: strDecenas(8) = «ochenta»: strDecenas(9) = «noventa»
If Genero = «M» Then
strUnidades(1) = «un»
Else
strUnidades(1) = «una»
End If
Decenas = Int(numero / 10)
Unidades = Int(numero – (Decenas * 10))
Select Case numero
Case 1 To 20
strTMP = strUnidades(numero)
Case 21 To 29
strTMP = strDecenas(Decenas) & strUnidades(Unidades)
Case 30 To 99
If (Decenas > 0) And (Unidades > 0) Then strTMP = strDecenas(Decenas) & » y » & strUnidades(Unidades)
If (Decenas > 0) And (Unidades = 0) Then strTMP = strDecenas(Decenas)
End Select
CLetrasS2 = strTMP
End Function
‘Funcion secundaria que calcula las centenas
Private Function CLetrasS1(numero As Integer, Genero As String) As String
Dim strCentenas(1 To 9) As String: Dim Centenas As Byte: Dim strTMP As String: Dim intNumeroEntero As Integer
intNumeroEntero = Int(numero)
Centenas = Int(numero / 100)
If Genero = «M» Then
strCentenas(1) = «ciento»: strCentenas(2) = «doscientos»: strCentenas(3) = «trecientos»: strCentenas(4) = «cuatrocientos»: strCentenas(5) = «quinientos»: strCentenas(6) = «seiscientos»: strCentenas(7) = «setecientos»: strCentenas(8) = «ochocientos»: strCentenas(9) = «novecientos»
Else
strCentenas(1) = «ciento»: strCentenas(2) = «doscientas»: strCentenas(3) = «trecientas»: strCentenas(4) = «cuatrocientas»: strCentenas(5) = «quinientas»: strCentenas(6) = «seiscientas»: strCentenas(7) = «setecientas»: strCentenas(8) = «ochocientas»: strCentenas(9) = «novecientas»
End If
Select Case numero
Case 0 To 99
strTMP = CLetrasS2(intNumeroEntero, Genero)
Case 100
strTMP = «cien»
Case 200, 300, 400, 500, 600, 700, 800, 900
strTMP = strCentenas(Centenas)
Case Else
strTMP = strCentenas(Centenas) & » » & CLetrasS2(Int(numero – (Centenas * 100)), Genero)
End Select
CLetrasS1 = strTMP
End Function
‘Funcion secundaria que saca un tres cifras del numero
Private Function CLetrasS3(numero As Double, Tercio As Integer) As Integer
Dim CadaCifra As Integer
Dim OrdenInverso As Integer
Dim intNumeroTmp As Integer
Dim NombreCifra(1 To 12) As String
OrdenInverso = Len(CStr(numero))
‘Borra la matriz
For CadaCifra = 1 To 12: NombreCifra(CadaCifra) = «0»: Next CadaCifra
For CadaCifra = 1 To Len(CStr(numero))
NombreCifra(OrdenInverso) = Val(Mid(CStr(numero), CadaCifra, 1))
OrdenInverso = OrdenInverso – 1
Next CadaCifra
intNumeroTmp = Val(NombreCifra((Tercio * 3)) & NombreCifra((Tercio * 3) – 1) & NombreCifra((Tercio * 3) – 2))
CLetrasS3 = intNumeroTmp
End Function
ESPERO LE SEA UTIL
como puedo arrastrar los datos de mis clientes a una factura que ya diseñe en exel 2007, desplegando una lista de todos los clientes en la factura
David, es mediante vínculos, o mas elaborado, utilizando la función buscarv, y asignando números progresivos a tus clientes, asi los puedes incluir fácilmente en una factura…. saludos
Hola amigos.
Esto es lo que realmente necesito, soy de Perú y es obvio que la moneda no es la misma, en este caso siyo quisiera cambiar de pesos a nuevos soles que es la moneda de mi pais, que formula utilizo. Gracias
Hola,
Lo que necesitás hacer se soluciona facilísimo, solo buscás en la penúltima línea esto:
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
Solo es cuestión de cambiar «pesos» y «peso» con «nuevos soles». Te advierto que tengás cuidado con los espacios que ya existen dentro de las comillas, porque sirven para ordenar el formato del texto a la hora de mostrarse (de lo contrario te pueden aparecer palabras unidas).
¡Excelentísimo! Muchas gracias por el aportazo, y un saludo.
ERES COMO UN DIOS CA
MUY BUENO EXELENTE DIRIA YO
DESDE LA CIUDAD MAS CONTAMINADA DEL MUNDO
excelente muchas gracias por tu ayuda quedo lista con la explicacion grafica que hiciste me fue de mucha utilida
Esta esta ok. pero necesito que me salga como este ejm.
1,001.15 que en letras diga (UN MIL UNO CON 00/100 NUEVOS SOLES ME podrian dar macro? les agradezco muhco de antemano
perdon me equivoque en los centimos
Esta esta ok. pero necesito que me salga como este ejm.
1,001.15 que en letras diga (UN MIL UNO CON 15/100 NUEVOS SOLES ME podrian dar macro? les agradezco muhco de antemano
buenisima nota compradre gracias de gran utilidad
EXCELENTE ME SIMPLIFICASTE LA VIDA¡¡¡ GRACIASSSSS ¡¡¡ 🙂
FELICITACIONES POR LA MACRO ES EXCELENTISIMA
Pero como soy de Perú es obvio que la moneda es en NUEVOS SOLES,Y ESTO YA LO SOLUCIONE, ahora cuando digito 1001.15 en letras me sale: UN MIL UN CON 15/100 NUEVOS SOLES; la verdad que yo quiero que me salga UN MIL UNO CON 15/100 NUEVOS SOLES; osea el problema esta en EL SEGUNDO UN y que en ves de UN que salga UNO; igual si digito 2001.10 el resultado es (DOS MIL UN CON 10/100 NUEVOS SOLES) y lo que quiero es que me salga (DOS MIL UNO CON 10/100 NUEVOS SOLES. Por favor si alguien me puede dar alguna solucion que le estaría eternamente agradecido.
Atte,
seubrimarq
siguiendo con el tema los numeros que ingreso a partir del 2001, 3001, 4001, etc. ya me salen pero cuando digito el 1001.20 ME SALE UNO MIL UNO y loque quisiera es que me salga UN MIL UNO gracias de antemano nuevamente.
Excelente aportacion
El macro me pareció genial de todos los que he bajado es el primero que me funciona y directamente.
quisiera cambiar el tipo de moneda hacerla mas general.
de todas maneras felicitaciones y muchas gracias
Hola que pena podrias ayudarme por favor, al ingresar la formula me sale #¿nombre? y ya la guarde como complemento y me sigue saliendo este error. ayuda por fis
Mil gracias me has facilitado el trabajo y no solo a mí sino a un montón de personas.
Bendiciones
Sobra decirlo, peroes muy buena tu explicación… ni como tener errores de esa manera. Saludos
mucha gracias lo logre gracias por su apoyo me fue de mucha utlidad.
slds.
gracias exelente aporte
MUCHAS GRACIAS POR TU APORTE ESTA MUY BUENO Y FACIL DE ENTENDER
Muchas gracias por esta aportación, auqnue batallé un poco, leyendo las demas respuesta lo resolví. Gracias a todos.
Utilizo algunos softwares y en el campo fecha de nacimiento solo digito por ejm. 200165, que al darle enter se convierte en 20/01/1965; es ovbio que que el campo es de fecha, ahora esto quiero hacerlo en excel hay alguna forma de hacerlo. por favor una ayuda que estare agradecido.
Eugene
hola q tal yo ya cheque y si funciona muy bien, pero aun siento que le falta un poco me gustaria saber como le hago para agregar billones se q es poco usual pero si se llega a ocupar en ocaciones, espero su repuesta, gracias!
ME AGRADO MUCHO LO QUE APRENDÍ DE TI,
LO PROVE Y FUNCIONA
QUE DIOS TE BENDIGA
GRACIAS POR TU ALTRUISMO
SALUDOS.
Exelente, me funciono muy bien, bravo.
Hola alguien que me ayude por favor, al ingresar la formula me sale #¿nombre? y ya la guarde como complemento y me sigue saliendo este error. ayuda por fis no se si el hecho de que mi ecxel diga que es de uso no comercial tenga algo que ver.
«Palitroche» esa era la palabra… como olvidarlo….!!!
Excelente Contribución.
Hice todo copie la macro la pegué, la guardé como complemento. Pero en vez de salir el númro en letras, en la celda, me sale la fórmula!!!! si alguien mepudiera ayudar se loa gradecería 😉
ola mira yo tuve el mismo problema pero espero y me explique bien: abres un libro de trabajo en blanco, le pegas el nuevo modulo y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel de las en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
asi queda anexado a tu excel..
muy agradecido. me ayudaste un buen
genial muchas gracias
Excelente ayuda la que me ha dado, muchas gracias…
GRACIAS, ME HA IDO BIEN Y NO PUEDO IGNORARLO ME HA IDO SUPER CON TU CODIGO.
ERES UN CHINGON. GRACIAS
MUY BUENA E IMPORTANTE LA MACRO
YO LA MODIFIQUE PARA ADECUARLA A MI PAIS COLOMBIA:
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS CON «, » PESO CON «) & Format(Str(lyCentavos), «00») & «/100 MONEDA CORRIENTE.)»
ME QUEDA LA INQUIETUD PARA NOMBRAR MILES DE MILLONES O HASTA BILLONES
Felicitaciones
Tengo una macro para responder cartas a diferentes destinatarios que me gustaria compartir para que me ayudes
Espectacular…. desde Guayaquil un saludo…
AMIGOS AQUI LES ENVIO PARA LA CONVERSION EN NUEVOS SOLES PARA TODOS LOS CHOCHES DE NUESTRO QUERIDO PERU
Public Function NL(ByVal Numero As Double) As String
Dim NumTmp As String
Dim c01 As Integer
Dim c02 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim Leyenda1 As String
Dim TFNumero As String
If Numero < 0 Then Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00")
c01 = 1
pos = 1
TFNumero = ""
Do While c01 <= 5
c02 = 1
Do While c02 1 Then
Leyenda = «Billones »
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid _
(NumTmp, 7, 3)) = 0 Then
Leyenda = «Mil Millones »
ElseIf cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = «Millon »
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = «Millones »
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = «Mil »
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = «»
End If
End Select
c01 = c01 + 1
TFNumero = TFNumero + letra3 + letra2 + _
letra1 + Leyenda
Leyenda = «»
letra1 = «»
letra2 = «»
letra3 = «»
Loop
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
Leyenda1 = "Cero Soles"
ElseIf Val(NumTmp) = 1 Or Val(NumTmp) 0 Then
cTexto = «veinti»
End If
Case 3: cTexto = «treinta »
Case 4: cTexto = «cuarenta »
Case 5: cTexto = «cincuenta »
Case 6: cTexto = «sesenta »
Case 7: cTexto = «setenta »
Case 8: cTexto = «ochenta »
Case 9: cTexto = «noventa »
Case Else: cTexto = «»
End Select
If uni > 0 And dec > 2 Then cTexto = cTexto + «y »
Decena = cTexto
cTexto = «»
End Function
Private Function Unidad(ByVal uni As Integer, _
ByVal dec As Integer) As String
If dec 1 Then
Select Case uni
Case 1: cTexto = «uno »
Case 2: cTexto = «dos »
Case 3: cTexto = «tres »
Case 4: cTexto = «cuatro »
Case 5: cTexto = «cinco »
End Select
End If
Select Case uni
Case 6: cTexto = «seis »
Case 7: cTexto = «siete »
Case 8: cTexto = «ocho »
Case 9: cTexto = «nueve »
End Select
Unidad = cTexto
cTexto = «»
y aqui como seria la fòrmula en la hoja de cálculo
y aqui como seria la fòrmula en la hoja de cálculo.. tambien me gustaria para solo centavos
MUCHISIMAS GRACIAS GONZALO TE LO AGRADECEMOS MUCHISIMO POR TU VALIOSA AYUDA
GRACIAS ERES UN GENIO
MUCHAS GRACIAS EH!!! ME HAN SALVADO, MUY BUEN APORTE
Gracias amigo, ke sencillo es usarlo y modificarlo, tengo XP y OFFICE 2007 y sin ningún problema funciono…
Saludos desde Monterrey MX
MUCHAS GRACIAS ME FUE DE MUCHA UTILIDAD !!
UUUF BUSKE KOMO LOKA Y NO ENCONTRABA NAAAAADA Q ME AYUDARA PERO ESTE FUE EFECTIVO =) AUNQ YO USO DOLARES PERO ESO SI SE COMO ARREGLARLO GRACIIIAAAAAAAAAS
GRACIAS POR TU APORTE ESTO ES EXCELENTE…
HOMBRE MUCHAS GRACIAS MUY BUENO QUE LAS PERSONAS COMPARTA LAS COSAS
Hola. No me acuerdo cuánto tiempo busqué algo así. En serio simple.
El único problema es que empiezo a usar el Calc de OpenOffice, me dije, seguro sirve. Me las ingenié para abrir el OpenOffice Basic y lo copié. Se detiene en la línea 4 ó 5 que empieza tyCantidad = Round(tyCantidad, 2)
Alguna solución?
muy buena, gracia por compartir tus conocimientos
Muy buen aporte,
gracias y pa’lantee!!!!!
Cuidense la banda de gchable!!!
Deberían de subirlo a wikipedia =P
Muchas gracias!! 😀 Fue de graaan ayuda
Gracias!!!! simplemente me facilitaste la existencia…..!!!! te sacaste un 10
MUCHISIMAS GRACIASS MUY MUY BIEN POR TI me sirvio
Hola;
Excelente Macro, solo que tengo una pregunta ¿para que aplique a todos mis libros es necesario abrir cada uno y cargar la macro o existe alguna manera de cargar esta macro para que en cualquier libro que abra este activada?
De antemano muchas gracias!!. . .
hola mira yo tuve el mismo problema pero espero y me explique bien: abres un libro de trabajo en blanco, le pegas el nuevo modulo y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel le das clik en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
asi queda anexado a tu excel..
Excelente =) me sirvió de mucho, muchas gracias.
Saludos
Hola Gonzalo muy buen aporte esta formula,solo que en el formato de mi factura me marca error y no me da el resultado,podras enviarme tu correo para enviate mi archivo y ver que es lo que tengo mal,de antemano telo agradezco.
Que gran aporte nos hiciste, realmente agradezco a blogueros como tu! Muchas gracias y felicidades!
Acá hay una función que convierte números a letras con decimales y hasta miles de billones.
http://vba-para-excel.blogspot.com/2011/08/convertir-numeros-letras-con-decimales.html
Muchas gracias Julio por la aportacin
Hola. Primero que nada, gracias por el aporte. Muy bien explicado y sencillo hasta… jejeje… necesitamos variar algo. A ver si me puedes ayudar: verás, yo facturo en pesos y en dolares, por lo que mi formato en excel, tiene un botón donde marcamos que moneda corresponde, me pregunto si se puede incluir esta variante en la macro, dependiendo qué botón marquemos. De nuevo, gracias por tu ayuda,
Saludos desde la Sultana del Norte
Gran ayuda!!! los que se les complica es por que no han grabado nunca una Macro.
Hay que habilitar la seguridad como dijo alguien arriba, aunque yo configure que se puedan ejecutar todas las macros, claro solo abro libros en los que confió.
En excel 2007 habiliten la cinta de opciones Programador.
En el Botón de office – Opciones de excel.
Casilla Mostrar ficha programador en la cinta de opciones y ahí encontraran todo lo relacionado a macros y al editor de VB
Suerte.
Gracias !!
Saludos a todos desde Lerdo de Tejada en Veracruz, Mexico
felicidadez excelente macro muy util gracias
muy didactico
gracias x el dato man
Utaaa, eres un magazo
Mis mas sinceras Felicitaciones, Gracias por compartir tus conocimientos.
Saludos. David Hernández Ocadiz México
Muchas gracias por compartir tus conocimientos, me es de mucha utilidad y esta muy bien redactado y entendible. Nuevamente Gracias
Hola gchable, lo hice y me salio perfectamente. Pero yo soy de Venezuela y deseo colocar Bolívares en vez de pesos, Como haria?? he intentado y me sale error
Por cierto gchable, veo que no respondes un comentario desde marzo de este año. Ojala y puedes responder el mio; graciassssss
Hola Provinciana, no respondo por falta de tiempo creeme, tampoco publico por lo mismo. Saludos
solo lo tienes que modificar en el visual.. en lugar de pesos pones las cifras en que manejas tu moneda… es tedioso pero funciona
ESTIMADO CONTADOR GONZALO
ERES UN GENIO!!!!! GRACIAS
Hola gchable,
Gracias por tu aportacion
Trabajo en una ONG en Senegal, donde se habla frances. Me gustaria poder adaptar el codigo a las variaciones del frances para poder usarlo en nuestro trabajo aqui en terreno. Pero no tengo suficiente nivel de programacion (… no tengo ninguno).
En frances, 71 es soixante-onze (sesenta y once) y asi hasta 79 con las decenas «douze», «treize», «quatorze», «quinze», «seize», «dix-set», «dix-huit», «dix-neuf»,
81 es «quatre-vignt un» (cuatro veintes y uno), y asi hasta 99 con «deux», «trois», «quatre», «cinq», «six», «sept», «huit», «neuf», «dix», «onze», «douze», «treize», «quatorze», «quinze», «seize», «dix-set», «dix-huit», «dix-neuf», «vingt», «vignt-un», «vigt-deux», «vigt-trois», «vigt-quatre», «vigt-cinc», «vigt-six», «vigt-sept», «vigt-huit», «vigt-neuf».
He traducido las palabras en el codigo que presentas pero cuando llega a estos numeros aporta un resultado diferente, como es logico.
¿Podrias ayudarnos?
Hola. Excelentisimo aporte el tuyo, pero no he encontrado la manera de escribir cifras superiores a los cientos de millones, por ejemplo (1’023.236.254,12) mil millones….. o noventa y cinco mil millones…..etc. Podrías ayudarnos?
De antemano muchas gracias.
Hola, busca aqui http://www.officefull.es/ suerte
Hola, les mando este correo que me han enviado….——————- Mensaje original ——————
que tal buen dia, le agradezco la aportacion me es de mucha ayuda en mis labores, por ejemplo si deseo que aparezcan una cantidad en pesos y la otra en dolares tomando valores de dos celdas y que el texto aparezca en una sola celda, me podrias apoyar, de antemano le agradezco la ayuda que comparte.
saludos
hola oye, me podrias ayudar para quitar las instrucciones que no serian necesarias para mostrar unicamente en letra ejemplo:8.7 = ocho punto siete y si tambien podrias decirme como hacer que el siete sea en letra porque me lo da en numero, no encuentro donde lo declaras, gracias de antemano
Gracias Maestro, muy simple de usar y fácil de instalar…
GRAN APORTE AMIGO¡¡¡¡¡¡¡GRACIAS
Hola Todos, les tengo una inquietud no se si ya les haya pasado.
la primera vez que utilice utilice el complemento, me aparecia la funcion PesosMN en la ayuda automatica al ingresar funciones, «me explico: cuando colocas el = y la primera letra de la funcion sale un menu contextual con las posibles funciones a usar». Ahi aparecia PesosMN. Se me ocurrio cambiarle el Nombre a la funcion de PesosMN a Num2Letra y ahora ya no me aparece la funcion en ese menu contextual de ayuda, ni por mas que volvi a utilizar PesosMN… Alguien sabe como revertir o hacer que la funcion aparezca en ese mini menu de ayuda…
Muchas gracias si alguien sabe como hacerlo..
lo que pasa es que lo borraste.. lo que tienes que hacer es crearlo de nuevo y guardarlo como: complemento de excel, de ahi lo añades a tu lista de complementos y listo vuele a aparecer de nuevo … es sencillo solo tienes que volver a ccrer tu complemento de excel
MUCHAS GRACIAS ME SIRVIO DE MUCHO ESTA MACRO, TENIA RATO YA BUSCANDO LA FORMA DE REALIZAR ESTE PASO, QUE BUENO QUE HAY GENTE COMO TU TODAVIA QUE CADA COSA QUE SABE LA ENSEÑA A LOS DEMAS
Es verdad, bueno, te dejo este otro, que utilizo yo, hace años lo bajé de otra pagina….
‘Funciones para convertir de números a letras
‘Llamada : Letras(Número,Formato) – Formato 1-Pesos, 2-Dólares
Function Unidades(num, UNO)
Dim U
Dim Cad
U = Array(«UN», «DOS», «TRES», «CUATRO», «CINCO», «SEIS», «SIETE», «OCHO», «NUEVE»)
Cad = «»
If num = 1 Then
If UNO = 1 Then
Cad = Cad & «UNO»
Else
Cad = Cad & «UN»
End If
Else
Cad = Cad & U(num – 1)
End If
Unidades = Cad
End Function
Function Decenas(num1, res)
Dim D1
D1 = Array(«ONCE», «DOCE», «TRECE», «CATORCE», «QUINCE», «DIECISEIS», «DIECISIETE», _
«DIECIOCHO», «DIECINUEVE»)
D2 = Array(«DIEZ», «VEINT», «TREINTA», «CUARENTA», «CINCUENTA», «SESENTA», _
«SETENTA», «OCHENTA», «NOVENTA»)
If num1 > 10 And num1 < 20 Then
Cad1 = D1(num1 – 10 – 1)
Else
Cad1 = D2((num1 \ 10) – 1)
If (num1 \ 10) 2 Then
If res > 0 Then
Cad1 = Cad1 & » Y »
Cad1 = Cad1 & Unidades(num1 Mod 10, 0)
End If
Else
If res = 0 Then
Cad1 = Cad1 & «E»
Else
Cad1 = Cad1 & «I»
Cad1 = Cad1 & Unidades(num1 Mod 10, 0)
End If
End If
End If
Decenas = Cad1
End Function
Function Cientos(num2)
num3 = num2 \ 100
Select Case num3
Case 1
If num2 = 100 Then
cad2 = «CIEN »
Else
cad2 = «CIENTO »
End If
Case 5
cad2 = «QUINIENTOS »
Case 7
cad2 = «SETECIENTOS »
Case 9
cad2 = «NOVECIENTOS »
Case Else
cad2 = Unidades(num3, 0) & «CIENTOS »
End Select
num2 = num2 Mod 100
If num2 > 0 Then
If num2 = 100) Then
cad3 = Cientos(num4)
Else
If (num4 >= 10) Then
cad3 = Decenas(num4, num4 Mod 10)
Else
cad3 = Unidades(num4, 0)
End If
End If
cad3 = cad3 & » MIL »
Miles = cad3
End Function
Function Millones(cant)
If cant = 1 Then
ter = » »
Else
ter = «ES »
End If
If (cant >= 1000) Then
cantl = cantl & Miles(cant \ 1000)
cant = cant Mod 1000
End If
If cant > 0 Then
If cant >= 100 Then
cantl = cantl & Cientos(cant)
Else
If cant >= 10 Then
cantl = cantl & Decenas(cant, cant Mod 10)
Else
cantl = cantl & Unidades(cant, 0)
End If
End If
End If
Millones = cantl & » MILLON» & ter
End Function
Function decimales(numero As Single) As Integer
Dim iaux As Integer
iaux = numero – Application.Round(numero, 2)
decimales = iaux
End Function
Function letras(cantm As Variant, ByVal mon As Integer) As String
Dim cants1 As String, num1 As Variant, num2 As Variant
num1 = cantm \ 1000000
num2 = cantm – (num1 * 1000000)
cents = (num2 * 100) Mod 100
If cents = 0 Then
cents1 = «00»
Else
cents1 = Format(cents)
End If
cantm = cantm – (cents / 100)
If cantm >= 1000000 Then
cantlm = Millones(cantm \ 1000000)
cantm = cantm Mod 1000000
End If
If cantm > 0 Then
If (cantm >= 1000) Then
cantlm = cantlm & Miles(cantm \ 1000)
cantm = cantm Mod 1000
End If
End If
If cantm > 0 Then
If cantm >= 100 Then
cantlm = cantlm & Cientos(cantm)
Else
If cantm >= 10 Then
cantlm = cantlm & Decenas(cantm, cantm Mod 10)
Else
cantlm = cantlm & Unidades(cantm, 1)
End If
End If
End If
If mon = 1 Then
letras = cantlm & » PESOS, » & cents1 & «/100 M.N.»
Else
letras = cantlm & » DOLARES » & cents1 & «/100 U.S.D.»
End If
End Function
Sub prueba()
Dim res As String, num As Single
num = 50899697.51
res = letras(num, 1)
End Sub
Una vez que lo guardas como macro, la mandas llamar asi:
=»(«&(letras(F7,1))&»)» donde F7 es la celda donde está el número a convertir, y el 1 es pesos, y el 2 es dólares….espero te sirva, a mi me sirve muy bien… suerte!
Tambien encontré otra direccion lineas arriba de este blog, que hace referencia a escribir con letra sin macro, y tambien esta padrisimo, porque pone con mayuscula inicial, todas mayusculas o mayuscula en cada palabra, repito: muy interesante.. saludos!
TE DARÍA UN BESO DONDE NO LLEGA EL SOL!!!!!
AAAjajajaja te pasaste!..
muy bueno, muchas gracias desde veracruz, mexico!!!
Gracias q buen aporte, sobre todo la explicacion llevaba tiempo buscando algo asi, me agilizaste mi trabajo
saludos
HOLA ME GUSTO LA EXPLICACION Y PARA EXCEL 2007 ESTA MUY BIEN AHI NO TUVE PROBLEMAS PARA INSERTAR LA MACRO
PERO COMO LE HAGO PARA EXCEL 2010
QUISE HACER LOS MISMOS PASOS Y NO ME DEJO
AYUDAME POR FAVOR
GRACIAS
hola mira yo tuve el mismo problema pero espero y me explique bien:
abres un libro de trabajo en blanco, primero que nada tienes que ir a la parte superior izquierda en archivo, le das click en opciones, luego en personalizar cinta de opciones, de ahi en comandos mas utilizados, ahi buscas programador y lo agregas afichas principales lo seleccionas y le das aceptar. te sales de ahi te vas al incio del libro le pegas el nuevo modulo de visual basic(pesosMN) y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel de las en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
muchísimas gracias, me acabas de salvar de una talacha indescriptible… esto de ponerse al corriente con el software luego es contraproducente…
Saludos
HAY ME DA MUCHISIMA PENA PORQUE A PESARD E QUE AKI ESTAR SUPER EXPLICADO NO SE PORQUE FREGADOS NO ME SALE A MI YA LO HABIA HECHO ANTES CON LAS INDICACIONES Y SALIO PERFECTAMENTE PERO AHORA TENGO UNA NUEVA MAQUINA Y NO SE PUEDE MI OFICCE ES 2007 Y NO SE COMO GUARDAR LA MACRO O HABILITARLA PORFA AYUDENME NETA ME SUPER URGE EN MI TRABAJO LO SUPER OCUPO OJALA ME PUEDAN DECIR PASO POR PASO DESPUES DE QUE INGRESE LA MACRO EN EL VISUAL BASIC
hola mira yo tuve el mismo problema pero espero y me explique bien: abres un libro de trabajo en blanco, le pegas el nuevo modulo de visual basic(pesosMN) y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel de las en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
POR FAVOR QUIE PODRIA AYUDARME, TENGO UNA DUDA ESTO, RESPECTO A COMO COLOCAR FECHAS A TRAVES DE FORMULA PERO NO COMO LA DE =HOY() ESA FORMULA ESTA MUY BIEN, MI PROBLEMA RADICA EN QUE QUIERO COLOCAR EL DIA, EL MES Y AL AÑO CADA UNO DE ELLOS EN DIFERENTES CELDAS EJEMPLO QUE EN UNA VAYA EL DIA EN OTRA EL MES Y OTRA EL AÑO. AGRADESCO SU AYUDA
Hola Angel, lo que puedes hacer es poner =HOY() en las tres celdas y darle un formato a cada una dando un click derecho sobre donde quieres que aparezca el dia dar click en la pestaña Numero y luego donde dice Categoria abajito en Personalizada y luego donde dice tipo pongale dd y aceptar, para el mes los mismos pasos y ahi vas a poner mmmm y para el año tambien los mismos pasos a ahi vas a poner aaa (Ejemplo dd = 01, d = 1, mm = 09 mmm = sep mmmm = septiembre, aa = 11 aaa = 2011, si pones dd mmm aaa te mostrara 01 en el, dia sep en el mes y 2011 en el año).
Espero me explique y que te sirva. Saludos
MUCHAS GRAXIAS POR LA AYUDA CLARO Q ME SIRVIO Y SE LO AGRADESCO, AHORA MIL DISCULPAS SE ME OLVIDO PREGUNTAR QUE SE ESTE FORMATO HACE Q CAMBIE EL AUTOMATICAMENTE DIARIO LOS DIAS?……….
GRAXIAS POR SU APOYO
MIL GRAXIAS……
Ya probaste con =MES(HOY()) y =AO(HOY())
Afirmativo debe de cambiarse automaticamente.
ok graxias hoy lo acabo de comprobar muchasgraxias
por su ayuda me ha servido demasiado
ok graxias hoy lo acabo de comprobar muchasgraxias
por su ayuda me ha servido demasiado.
al igual q agradesco su ayuda al quien me resulva esta duda:
como puedo hacer para que en una factura se descuente mis productos que tengo en almacen o existencia!!!
graxias a quein m pueda ayudar
Gracias!
Me ha servido y gustado mucho el aporte
Muchas gracias por compartirlo
COMO CONVIERTO ESTO : En la celda A1 se pagará 100 soles menos el descuento del 10% de 100 soles….. A EXCEL???
SI QUIERO ELIMINAR «SON:» KE TENGO KE HACER?
ve gracias por la formula me sirvio d emucho gracias ois y para los colombianos y de mas que necesiten quitar lo de los 00 y 100 y demaas copien este en la ultima parte de la formula y borren la anterior
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «)
End Function
Se agradese la aportación que nos haces, mil gracias.
Oigan, como le hago para que en excel 2010, esta función esté como todas las demás que ya trae al ser instalada. (Que aparezca no como definida por el usuario, sino como las que trae de fábrica)
hola mira yo tuve el mismo problema pero espero y me explique bien: abres un libro de trabajo en blanco, le pegas el nuevo modulo y lo cierras o utiliza alt+Q. despues vas a irte a guardar o guardar como: cambias el nombre le pones por asi decirlo : pesosMN. abajo de donde cambiaste el nombre esta el tipo de documento en que lo quieres guardar, dale clik a la casilla y se despliega una lista buscas en esa lista el nombre que diga: COMPLEMENTO DE EXCEL. Y LE DAS GUARDAR, automaticamente se guarda en c en una carpeta llamada complementos. y listo. AHORA abres un nuevo libro de excel te vas a la parte superior izquierda de tu pantalla le das clik al icono te vas a opciones de excel (aveces solo dice opciones)le das clik te vas a donde dice complementos( una vez en complementos hasta abajo hay una casilla que dice complementos de excel de las en LA CASILLA QUE DICE: IR, te abre una ventanita y ahi tiene que aparecer el nuevo complemento que creamos llamado pesosMN, si no aparece a simple vista le das examinar y escribes el nombre con el que guardaste el complemento. le das aceptar y listo ahora es usable en todos los libros que kieras abrir… sin nececidad de estar ingresando el modulo de nuevo.
SUGERENCIA: solo no olvides de no borrar el complemento creado..si lo borras tienes que empezar de ceros.
NOTA: si al abrir el libro de excel no te funciona, solo tienes que irte a opciones y añades el complemento que creamos..
graciassss……
asi queda anexado a tu excel..
millon y medio de gracias!
Muchisimas gracias por este gran aporte!
Anduve buscando por otros lugares y solo el tuyo me funcionó perfectamente.
Bendiciones para ti.
gracias por la invaluable ayuda.. a todos los que hacen que esta red sea un apoyo diariamente… agradecimientos a todos.
una ? a la audiencia como con vertir la fecha en texto por ejemplo tengo en diferentes celdas en una tengo 10 en otra 10 (octubre) y en otra 2010 nada mas que me aparece 10 y quiero q aparesca completo como puedo hacelo!!!!
buen codigo
Gracias por este gran aporte, en verdad es bueno saber que existe gente tan inteligente y tan sencilla como para compartir sus conocimientos con los demas….. felicidadess
sirve de maravilla
Gracias por este gran aporte, en verdad es bueno saber que existe gente tan inteligente y tan sencilla como para compartir sus conocimientos con los demas….. felicidadess
sirve de maravilla
SOY PROFR. JULIO CESAR CARREÑO BECERRA, AGRADEZCO ESTE APORTE, REALMENTE NO TENIA IDEA DE COMO REALIZARLO, LO PROBARE Y POSTERIOR HARÉ COMENTARIOS O SUGERENCIAS, TODO EN PRO DE MEJORAR. GRACIAS DE NUEVO
Que buen aporte, quisiera que me ayudaran para poder identificar si solo hubieran centavos, ej. 0.75; en mi caso soy de Guatemala (nuestra moneda es el Quetzal) y con las modificaciones que hice sale «Quetzal con 75/100», pero dado el caso que solo son centavos para que pudiera decir «75 centavos», espero haberme explicado, Agradezco mucho la ayuda que puedan brindarme.
simplemente chingon, llevo años facturando en excel y cada vez que cambio la cantidad tenia que cambiar la leyenda…gracias
Excelente!!!!!! Muhas gracias por compartirlo!
Muchas gracias por tu explicación y por el tiempo que te tomas en ayudarnos , fue de muchísima utilidad tu código aunque me queda una pregunta. Puedo de alguna manera quitar los paréntesis ?
Que tal Vivi, si, si se puede
Muchas gracias a no saben cuanto me sirvio esta pagina
amigo Gonzalo muchas felicidades por tu aportacion, tendras algun portal donde pueda ver todas tus aportaciones de MACROS.
tengo una duda como puedo extraer los datos numericos y alfanumericos de una celda
eje en «A1» tengo RF8965 y quiero separar en «A2» RF y en «A3» 8965
quiero comentarte que los datos alfanumericos pueden ser hasta 4 digitos y los numericos son maximos 10 digitos
Que gran explicación y aportación en verdad ¡Gracias!
Gonzalo, Mil Gracias por su valiosos aporte
Saludos,
FRANCISCO
GRACIAS AL AUTOR DE ESTE CODIGO LO PROBE Y ME ESTA FUNCIONANDO BIEN, VOY A PROBAR CON MAS CANTIDADES A VER QUE PASA.
DAD DE GRACIA LO QUE DE GRACIA HAS RECIBIDO…
CÉSAR JUÁREZ
GRACIAS AL AUTOR DE ESTE CODIGO LO PROBE Y ME ESTA FUNCIONANDO BIEN, VOY A PROBAR CON MAS CANTIDADES A VER QUE PASA.
DAD DE GRACIA LO QUE DE GRACIA HAS RECIBIDO…
CÉSAR JUÁREZ
Guate 27-10-2011
FUNCIONANDO AL CIEN MUCHAS GRACIAS
Muchas Gracias!!! me fue de mucha utilidad ;).
Chidisimo,
Gracias!!!
GRACIAS GRACIAS GRACIAS
JAVIER GONZALEZ
EXCELENTE MACRO
FUNCIONA BIEN
Hola amigo, muchas gracias por tu aportación, me sirvió de micho, eres Genial, grax, suerte buen día.
muchisimas gracias lo habia intentado con otrso pero nunca me funcionaron, este esta excelente. claudia moraels
Gustavo:
Por favor explicame si se debe hacer algun procedimiento adicional para excel 2010.
Lo siento Humberto, no uso Excel 2010, revisa los comentarios seguro habr algo.
gracias, muchas gracias
Muchas gracias por la respuesta que dejas en la red, fue de gran ayuda.
Saludos,
HOLA MUY UENA TU PUBLICACION, SE PUEDE HACER QUE SOLO APARESCA ( VEINTISIETE MIL TRESCIENTOS CINCO PESOS 95/100 M.N.) Y SE LE QUITE «SON:»
GRACIAS
hola si es que ya te respondieron tu duda plis pasamela no xfa
Busca en los últmos renglones esto.-
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
Ahora, cambia a.- PesosMN = «(» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
A mi me fincionó.
Excelente, Los felicito… Para Bolívares..
Function Bolivares(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
Bolívares = lcBloque
Case 2
Bolívares = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & PesosMN
Case 3
Bolívares = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
Bolívares = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
LO ACABO DE ENCONTRAR, SEGUI LOS PASOS PERO NO ME FUNCIONA. CÓMO DEBE SER LA FÓRMULA?
MUCHISIMAS GRACIASSS ES REALMENTE AGRADABLE Q ALGUIEN SE TOME LA MOLESTIA DE EXPLICAR,,, MIL GRACIASS… ME DECLARO TU FAN….
LO HICE PERO NO LO GUARDO Y AL DIA SIQUIENTE NO ME FUNCIONA
Mil Gracias por la aportacion!!!
Buenisima!!
🙂
te has de haber cansado de leer lo que te escriben, espero leas el mio…
GRACIAS estuvo padre, felicidades por compartir tus conocimientos con los mortales (ja! y hacia gala de utilizar bien el excel)
saludos
Hola JN, pues llegan al correo y de ahi los leo, realmente en el blog ya no me da tiempo de entrar.
Mib hermano gracias muy buen aporte 🙂
Gracias !
Gracias por la explicacion y el codigo, muy buen aporte te felicito !!!
Muchas gracias, es una gran herramienta.
Muchas gracias por tu ayuda, tu código funciona excelentemente bien. Le hice algunos cambios para nuestras abreviaturas en Colombia nada mas.
MUCHAS GRACIAS VIEJITO BUEN DETALLE DE TU PARTE , MUY BIEN EXPLICADO
SALUDOS….
Esta excelente solo me gustaría saber como hacerle para que cuando el numero sea cero aparezca así:
CERO PESOS 00/100 M.N.
y no
PESO 00/100 M.N.
Ojala alguien pudiera ayudarme.
Saludos
MUCHAS GRACIAS POR TU EXPLICACION SI PUDE HACERLO AHORA YA NO TENDRE QUE ESCRIBIR LA LETRA DEL NUMERO 🙂
ME AHORRARE MUCHO TIEMPO
Hola, mil gracias por la ayuda¡ se muy poco de esto, pero con la explicacion estuvo facilismo ademas baje el archivo donde ya viene listo. habra algun lugar donde bajar algo para convertir a texto en dolares? no encuentro nada y lo que leo sobre eso no le entiendo… Mil Gracias
Disculpen me podrian ayudar realise todo el procedimiento y me salio bien, el unico detalle es que quisiera que no apareciera la leyenda «SON»,nada mas quisiera la cantidad con letra,ayudenme porfavor
Os dejo ésta versión ligeramente modificada. Resumen de cambios:
– Devuelve «CIENTO UNO» en lugar de «CIENTO UN»
– Si la entrada es 1200, por ejemplo, no devuelve «UN MIL DOSCIENTOS» sino «MIL DOSCIENTOS»
Muchas gracias por el código.
Private Function DeletrearCantidad(tyCantidad As Long) As String
‘ Tomado y modificado de https://gchable.wordpress.com/2007/10/14/4/
Dim lyCantidad As Currency, lyCentimos 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)
lyCentimos = (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
DeletrearCantidad = lcBloque
If Right(DeletrearCantidad, 2) = «UN» Then DeletrearCantidad = DeletrearCantidad + «O»
Case 2
If lcBloque » » + laUnidades(0) Then
DeletrearCantidad = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & DeletrearCantidad
Else
DeletrearCantidad = IIf(lnBloqueCero = 3, Null, » MIL») & DeletrearCantidad
End If
Case 3
DeletrearCantidad = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & DeletrearCantidad
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
End Function
HOLA MUCHAS GRACIAS POR TU EXPLICACION FUE DE GRAN AYUDA SOLO QUE AL IGUAL QUE LORD DRAKO YO LO OCUPO PARA HACER CHEQUES Y NO ME SIRVE LA PALABRA SON: QUISIERA OMITIRLO OJALA TENGAS TIEMPO Y ME QUIERAS EXPLICAR
Busca en las últimas líneas.-
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
Y cambiala por.-
= «(» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
Perdón, me faltó el.-
PesosMN
antes del signo =
Hola, gracias por la información es muy útil y verdaderamente eficiente, busqué en muchos lados y definitivamente la tuya es la mejor.
Éxito con tus proyectos, sigue publicando información tan precisa.
Saludos,
Carmen Campos
Gracias, muy claro
Hola que tal soy nuevo en esto,pero quisiera saber como debo hacer para que me aparesca esto en un libro de excel:
«Recibi conforme, la suma de : 1568.76 pesos»,la parte de los numeros en letras con la leyenda al principio,desde ya muchas gracias a todos
Realmente te felicito!
Esta función es un verdadero monstruo.
Me quedo corto para felicitarte: Excelente! Excelente! Excelente!
Mil gracias y mis respetos…
Como puedo hacer para que esta funcion este disponible en todos los libros que abra en excel
Que cosa tan fregona gracias por compartir sus conocimientos lo voy a pasar a mis compañeros.
Mis respetos!
Dos cosas me impresionan:
El conocimientos que tienen y lo mas importante, el compartirlo sin fines de lucro.
Saludos,
EXCELENTE ME SIRVIO DE MUCHO
SU EXPLICACION MUY BUENA GRACIAS POR COMPARTIRLO
HOLA MUCHAS GRACIAS POR TU APORTE ESTAMOS EN 2012 Y SIGUE AYUDANDO A LA GENTE ESTE ARTICULO, Y SI JAJAJ ME ACORDE DE ESA LECTURA DE LIBRO DE PRIMARIA DONDE PITA BAUTIZA UN BICHO COMO PALITROCHE JAJJA UN SALUDO Y QUE ESTES DE LO MEJOR
de verdad muxas gracias me es de gran utilidad
y quiero hacerte una pregunta que cuando introdusco decimales me sale error quisiera que aparesca cero en letras poe ejm.
0.233=cero con………
le estare muy agradecido
Oye amigo, muchas gracias, me fue gran ayuda para mi trabajo. Las nueva ley de cheques indica que debes escribir en el cheque la cantidad tanto en números como en letras… ya te imaginaras lo que sufria para no hacer a mano los cheques que emito. nuevamente gracias feliz año 2012
PARA QUIENES LO QUIERAN EN MINUSCUL Y QUE AL FINAL DIGA SOLO PESOS
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», «seiscientos», «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 = «» & PesosMN & IIf(tyCantidad > 1, » pesos «, » peso «)
End Function
Gracias…
Soy nuevo usando Excel, pero pude crear la macro y usar la función… es de gran utilidad
soy de mexico cuando escribes: $1,000,000.00 te devuelve: (un millon pesos 00/100 m.n.) y debe ser: (un millon de pesos 00/100 m.n.) ojala que alguien sepa como se corrije.
Solo busca en la macro y donde dice «MILLON» y «MILLONES» le agredas el DE: «MILLON DE» y «MILLONES DE». A mi me funcionó.
Excelente macro, pero que dificil es encontrar algunas funciones como esta para las MAc
Hola, Esta función no funciona en mi MAC…. a ti te funcionó????
Viejo, mil gracias lo había estado buscando por todas partes.
HOLA OYE Y COMO LE PUEDES HACER EN WINDOWS XP
Hola, excelente macro! trabaja muy bien.
pero si le agregas la palabra «DE» a millon, y escribes $1,200,000.00, la formula dira:
SON: ( UN MILLON DE DOSCIENTOS MIL PESOS 00/100 M.N.)
y pues eso no es correcto.
Excelente presentacion!!! sigue asi
En verdad muchas gracias, me han ahorrado muchas horas de trabajo
Excelente, mil gracias , me ha sido ed gran ayuda.
MIL GRACIAS, SOLO NECESITABA LA CANTIDAD Y LE QUITE SON: ME FUNCIONO. DIOS TE BENDIGA EN UN MUNDO LLENO DE EGOISMO.
Funciona perfectamente, fue de mucha ayuda. Gracias.
muy agradecido no sabes cuanto andaba buscando esta función, un abrazo desde Chile
muy buena la pagina, y el codigo, pero aun no entiendo como guardar el macro, es decir cada vez que quiero utilizar la funcion tengo q escribir el codigo de macro en la hoja excel.
cabe decir que utilizo el excel 2007.
Ayudenme porfa, nose casi naa de macros pero esta funcion me es sumamente importante y la necesito para mi trabajo.
Gracias
graba el libro de excel en formato .xlsm que es el que permite mantener las macros incrustadas, así ya no tendrás que escribir el código de la macro cada vez que la quieras utilizar.
muchas gracias, fue de mucha ayuda para una coworker que elabora cheques, se ahorrará tiempo al dejar de escribir las cantidades con letras y dejar que lo haga la macro.
claudia: graba el libro de excel en formato .xlsm que es el que permite mantener las macros incrustadas, así ya no tendrás que escribir el código de la macro cada vez que la quieras utilizar.
gracias por el aporte de excel magnifico
Excelente! Gracias!
Estimado.
Eres lo maximo me funciono como esperaba, reemplace los datos pesos por nuevos soles ya que en Peru la moneda es SOLES, no tuve ningun problema.
Muchas gracias.
hola chicos, agradezco infinitamente su colaboración, por motivos de ahorrar trabajo necesito que esta opción fiuncione, pero uso oficce 2007 y no he podido habilitar el macro, leyendo todos sus comentarios me reconforto porque sé que también lo lograré, mas necesito que por favor me expliquen con detalle lo que debo hacer, muchisimas gracias de antemano un saludo, desde Venezuela!
hola, con gusto te ayudo, me puedes agregar a gtalk: vangermx y te explico paso a paso
HOLA CHICO, YA TE AGREGUE AL GTALK… YA CREE EL MACRO Y PUES CUANDO COLOCO EL SIGNO DE IGUALDAD EN UNA CELDA Y EL NOMBRE DEL MACRO, AL DARLE «ENTER» SALE ?NOMBRE? Y YA GRABE EL LIBRO EN FORMATO 2007 Y AUN NO ME FUNCIONA…!! :_(
AYUDAME POR FA..!!
Lo probe en excel para mac y funcione excelente, gracias !!!! años buscando uno que funcionara
Me podrias decir Luis si tu tienes office mac 2011
muchas gracias por compartir este macro es la primera vez que me funciona gracias a que alguien me explica suficientemente bien, la verdad es que si no lo logre antes fue mi falta de pericia en excell. hasta pronto. enhorabuena por las personas que comprenden que la informacion y el conocimiento son para compartirse y que hace siglos dejamos la edad media y su oscurantismo.
exelente aporte, pero tengo un detalle cada vez que cierro el archivo y lo vuelvo a abrir sepierden todos las funciones de la formula y tengo que hacer todo el procedimiento
de nuevo, saludos gracias
hola gonzalo, muchas gracias por este aporte. tengo una consulta, no he podido activarlo en el excel 2007, me sale un error de sintaxis que segun pantalla indica que es en la parte que dice……. :
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant ‘Si esta como Option Explicit
Podrias confirmarme si existe algun error o si tengo que activar alguna opcion? ya activce las oociones de programador.. Espero me puedas ayudar
saludos
}
Hey… infinitas gracias tenia tiempo de no hacer esto, y me sirvió mucho para recordar, funciona de maravilla…
oye no se puede hacer que solo se ponga el número sin lo de pesos y lo de Mx?? si se puede te agradeceria mucho que me dijeras como lo puedo hacer!!
YA INTENTE TODO LO QUE HE LEIDO Y AUN NO PUEDO HACERLO FUNCIONAR POR FAVOR AYUDENME. ME APARECE UNA OPCION DONDE ME DICE GUARDAR MACROS Y DICE DESHABILITADO COMO LO HABILITO
EXCELENTE GRACIAS POR TU TUTORIAL SUPER DETALLADO
como debo guardar la macro para poder utilizarla en varios libros
Excelente no hay mas que decir me ayudo mucho
muchas gracias ya lo probe y funciona muy bien
HOLA! BUENAS TARDES, ES UN BUEN PROGRAMITA, UNA DUDA COMO PUEDO PASARLO A MINUSCULA? GRACIAS
Está de wow tu blog, muchas gracias por tu ayuda. Exitos mil para ti.
Muchas gracias por toda tu ayuda…
Eres todo un genio, sin mayor problema lo pude realizar
gracias
estimado no tengo palabras para agradecer tu aporte, gracias por compartir.. saludos de Temuco, Chile
No hay problema suerte. Saludos
estimado nuevamente escribiendo, al principio de tu blog dice que se puede usar en word. cual seria la forma?
saludos desde temuco
En word no lo he aplicado
Una excelente herramienta, le realice cambios y le puse la moneda de mi país «Quetzales» y funciono a la perfección, gracias
Erick yo tambien soy de Guatemala y tambien hice los cambios pero no me funciono, podrias darme copia del codigo.. Gracias! Atte Heydi
Hola gonzalo, Saludos Cordiales
de verdad muchisimas gracias, en toda la web, el mejor, una duda:
como puedo cambiar a minusculas, ejemplo (UN MIL DOSCIENTOS PESOS 00/100 M.N.) a (Un mil doscientos pesos 00/100 m.n.)
Gracias por tu atencion
Usa =minusc()
hola ramon, me podrias ayudar a instalarlo en mi excel? yo no puedo hacerlo con exito. mi correo es mariodoany@gmail.com. Gracias
Seleccionas el codigo, lo copias, vas al libro en el que estas trabajando, oprimes ALT+F11 se habre una ventana ahi en insertar modulo, habre una ventana en blanco, ahi mismo, pegas lo que copiaste y listo, solo cierras la ventana con ALT+Q. Para aplicar esta formula solo das =PESOSMN(B4) celda de numero y ya lo tienes.
Para cambiar SON: MIL PESOS, solo borra en el codigo SON:, sin mover ni borrar otra cosa, listo.
ramon, gracias por tu tiempo.
Mira eso es lo que h agopero cuando pongo la formula sale una ventana que dice
Error de compilación:
Error de sintaxis
y se abre la ventana con el codigo resaltando supuestamente el error, pero no logro identificarlo. si me pudieras ayudar con esto por favor. Me das tu correo para enviarte la pantalla?. Gracias
Ok, si ya creaste el modulo borra todo el codigo, luego te pones en le modulo que creaste y lo borras, cierras en libro y vuelves a iniciar de nuevo, copias el codigo tal cual, no selecciones ni mas no menos.
Ramon, sorry que te moleste, pero soy una completa tabaza en este tema. me podrias dar tu mail para enviarte lo que me sale? Gracias
Hola gonzalo
como lo puedo cambiar a minusculas
gracias
HOLA SOY LUIS HICE UNAS PRUEBAS Y SI PUEDE MUCHAS GRACIAS AHORA UNA PREGUNTA SI NO QUISIERA QUE SALIERA SON UNICAMENTE LA PURA CANTIDAD QUE PUEDO HACER
WOW GRACIAS MIL GRACIAS MI SIRVIO MUCHO TU FUNCION SOLO QUIERO SABER COMO HACERLE PARA QUE NO APARESCA LA PALABRA ( SON:)
JEJEJ NO ME HABIA DADO CUNETA JEJEJEJE SI YA LO RESOLVII GRACIAS MIL GRACIAS
Muchas gracias! Magnífica ayuda y muy claramente explicado. Saludos!
Estos son lo aportes que se pueden clasificar como excelentes, FUNCIONA PERFECTO!!!!
Por fis ya intente pegarlo en pesos me sale espectacular pero soy peruana y lo necesito en soles intente con otra que pegaron mas abajo pero me dice que hay error de sintaxis..podrias ayudarme???? que como dicen muchos te aligera la vida y tambien la estuve buscando muchisimo, gracias
Funciono al 100%!!!!!, Muchas Gracias!!!!
Hola amigo. Genial el código para conversion de numeros a letras, funciona muy bien!!!. Pero necesito uno que sea para Dólares. Cómo puedo hacer???
uuuu muy bueno lo probe pero el tema e que soy de chile y necesito que la ultima parte donde dice algo como 21/100MN solo necesito que diga hasta el pesos. como lo puedo hacer porque trate de borrar algunas cosillas y se borro todo jajja si me puedes ayudar te lo agradecereeeeee mucho¡¡¡¡¡¡
Justo lo que buscaba! muchas gracias!!
Muchas gracias amigo por tu ayuda, es muy valioso tu trabajo felicitaciones
bueno solo puedo decir que es un excelente aporte ya que en verdad muchos manejamos el excel pero bien es cierto que no todos tenemos el conocimiento de todas las aplicaciones como las macros y solo puedo decir de verdad muchas gracias
Esto funciona en una hoja de excel que corre en MAC?
si funciona la mia es mac office 2011
Hola que código usaste??? porque en mi Mac con office 2011 no funciona. me da error #¡Valor!
ya son muchos agradecimientos y te mereces mas muchas gracias por ayudarnos un saludo enorme probe con muchooooosss y en todos me botaba error menos con el tuyo gracias en verdad
si funciona anonimo por eso me conflictue porque uso mac office 2011 pero si funciono super bien
Que clase de conflicto tuviste yo tambien tengo mac 2011 y no logre que funcione
grax___-por la info men me sirvio para un proyecto importante
Hola!
Me gustaría saber si me pueden ayudar con lo siguiente:
En mi caso quiero convertir números a letras pero no son pesos, sino cantidad de mercancía. Por ejemplo:
25.46 y quiero que diga como tal: veinticinco punto cuarenta y seis. ¿Es posible hacer esto?
Les agradezco mucho!
Saludos!
Esther, por supuesto que se puede hacer. Mándame tu correo y te envío la solución en hoja de cálculo EXCEL. Saludos desde Durango, México.
hola.. muchas gracias!!pero cuando cierro excel y abro otro documento en blanco regreso a lo mismo tengo ke copiar todo.. como le puedo hacer para ke y a no tenga ke hacer el mismo movimiento?….gracias ojala y me puedas ayudar…
Buenisimo muchas gracias!
Hola
lo que me pas esque yo tengo un formulario hecho por medio de visuall,,
en macros y quisera que todos los datos insertados por el formulario se pudieran sumar en excel ,,,lo he hco con la formula de la suma pero no esposible ya que el ultimo dato insertado no lo puede sumar ya que la fila va hacia abajo…..
me gustaria si algien me podia pasar el codigo……….
Gracias
MUCHAS GRACIAS, de verdad que chido que no seas envidioso con el codigo, me sirvio muchisimo excelente aporte
Despues de algunos años sigues recibiendo agradecimientos por tu gran ayuda, pues me agrego a ellos. MUCHAS GRACIAS
Excelente…..muy bueno jejejejeje
Muchas, pero muchas gracias Gonzalo.
El que da, se le multiplica.
Asi sea.
hola muy bueno tus conocimientos una pregunta ¿de donde sacas los codigos para realizar las formulas en la hoja de excel? es muy importante para mi que me enseñes todo eso sos bueno
Gonzalo, Muchas Gracias por tu ayuda… no mas errores en mi facturacion, que dios te lo multiplique para que nos ayudea.
Solo dos preguntas Como le quito son:?
Como lo pongo en USD?
Buenas tardes, excelente trabajo de mucha ayuda, mil gracias, solo quiero preguntar si se puede hacer que el valor en letras no quede entre parentesis me sale SON: (CIEN PESOS 00/100 M.L.) en colombia se usa M.L. pero eso ya lo cambie, solo quiero que quede SON: CIEN PESOS 00/11 M.L. sin los parentesis, gracias por tu ayuda
Hola Ivan, si se puede Saludos
que tal excelente trabajo en verdad gracias solo que tengo un problema
sigo todos los pasos y funciona correctamente pero me encuentro en un problema ya que al cerrar el documento pues ya se guardan los cambios pero al volver abrir el archivo y escribo la cantidad y me sale un error de nombre entonces vuelvo a hacer todo el procediemiento nuevamente y vuelve a funcionar entonces aqui algo que esta pasando es que no me esta guardando la macro o algo asi por el estilo..
De antemano gracias..!!
Excelente trabajo, muchas gracias.
NO ME AYUDAN EN NADA
GRcias
ayudenme
Anavy, puedes guardarlo como plantilla, este tutorial indica cómo hacerlo:
http://office.microsoft.com/es-es/excel-help/guardar-un-libro-o-una-hoja-de-calculo-como-plantilla-HA010218874.aspx
O mejor éste:
http://office.microsoft.com/es-es/excel-help/personalizar-el-modo-en-que-se-inicia-excel-HP010197489.aspx#BM3
Buenisimo !!!!! Mil Gracias
Muy buena la explicación
EXCELENTE TU TRABAJO, ME SIRVIO MUCHO, ME GUSTARIA CONOCER MAS SOBRE TUS TRABAJOS QUE NOS PUEDAN SERVIR A OTRAS PERSONAS … TE FELICITO
Muchas gracias por el codigo si funciona….
Excelente Me funcion Gracias!!!
Muy bueno. Funciona perfectamente.
GRACIAS ME FUNCIONO MUY BIEN AHORRA MUCHO TRABAJO
hola, buenas tardes. una pregunta, como guardar para que cada ves que abra el archivo se pueda manipular, porque si lo cierro y luego lo abro ya no se puede modificar y apareca ?nombre
Lo máximo me ayudo de mucho…. De la PTM
Recontra lokaso… sigan aportando
Gracias..
¡Muchas gracias!
Muy util el macro y buena onda en compartirlo, saludos.
Para calcular los billones agregamos el siguiente caso al codigo a partir del caso 3 del codigo original
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & PesosMN
Case 4
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0 And lnCuartoDigito = 0, » BILLON», » BILLONES») & PesosMN
End Select
exelente compadre esto es super
necesito de tu ayuda como me puedo contactar contigo?
BUENISIMO, ME SIRVIO DE MARAVILLA, MUCHAS GRACIAS Y SUERTE. SALUDOS
fabuloso!!!!! primero me marcaba error al copiar a VB pero me llevó todo el día intentando, hasta que por fin!!!! mil gracias
te agradesco infinitamente esta informión es muy valioate que dios te bendigasa cuidate
Manuel Bravo
ola oye para hacerlo en Mac OS en donde esta Visualbasic
Ups te lo debo saludos
Gracias amigo por compartirlo. . . me sirvió mucho
5 años después, todavía útil. ¡Gracias! =)
EXCELENTE EXPLICACIÓN! SOLO UN PROBLEMA: NO PUEDO HACER QUE CAMBIE A BOLIVARES. CÓMO LO HAGO?
barbarooo maestroo!!!
ESTA FUNCION LA USO PARA CORRESPONDENCIA PERO CUANDO PASO LAS CANTIDADES A WORD NO CIERR LOS DECIMALES SINO ME PONE MUCHOS QUE HAGO PARA CORREGIR.
GRACIAS
Intenta poner =redondear(pones la la funcion,2)
Saludos
Que tal! la verdad tenía mucho tiempo buscando esta función; muchas gracias… es de gran utilidad. Bien dicen, todos los dias se aprende algo nuevo…. digo, en mi vida, habia trabajado con macros… Gracias…
Gracias por compartir esta ayuda tan util. Felicitaciones
Mill Graciiias !!! Ahora mi contabiilidad sera muuucho Eficiiente !!!!
saludos desde Mtyy !!
** Carolina vzz **
hola buen dia, me podrias explicar como es ke siguiendo todos los pasos no puedo insertar la formula? mi equipo tiene windows vista, dime si puedo trabajar en el con tu formula? de antemano gracias. dokie
Hola, si, asi es
Saludos
me podrias orientar como, gracias
CONVERSION DE NUMEROS A LETRAS «BOLIVIANOS» (DUANER OVANDO)
Para los bolivianos la formula sería =bolivianos(celda) ……y gracias al creador de la fórmula original……..
Function Bolivianos(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
Bolivianos = lcbloque
Case 2
Bolivianos = lcbloque & IIf(lnbloquecero = 3, Null, » mil») & Bolivianos
Case 3
Bolivianos = lcbloque & IIf(lnprimerdigito = 1 And lnsegundodigito = 0 And lntercerdigito = 0, » millon», » millones») & Bolivianos
End Select
lnnumerobloques = lnnumerobloques + 1
Loop Until lycantidad = 0
Bolivianos = «(» & Bolivianos & IIf(tycantidad > 1, » «, » «) & Format(Str(lycentavos), «00») & «/100 Bolivianos)»
End Function
Estoy muy agradecido, excelente funcion, gracias por compartirla
Esta genial muchisimas gracias, muy simple en comparacion con otras. Gracias por compartirla 😉
AMIGO, LO UNICO QUE TE PUEDO DECIR ES «E X C E L E N T E »
Y MEJOR AUN, QUE COMPARTAS TU INFORMACION Y CONOCIMIENTOS, DE VERDAD GRACIAS MIL !!!
Muy bueno, muchas gracias, me hicieron el día!!! saludos
DEFINITIVAMENTE UN BUEN APORTE MUY BIEN EXPLICADO Y DESARROLLADO
MAESTRO CON TODO RESPETO, ES USTED EL PUTO AMO…¡¡¡¡ LO FELICITO
Mil gracias me fué muy util toda la información y comentarios
la verdad esto esta genial, llevaba años buscando como hacerlo y funciona a la perfeccion, GRACIAS!!!!!!
ME PONGO DE PIE ERES UN SABIO
Gracias, está genial
Si esta buenisimo el mejor explicado y aparte sencillo y con el correcto formato que usamos en México, simplemente el MEJOR!!!!!
ME AYUDO MUCHO SU INFORMACION, MUCHAS GRACIAS, LA VERDAD PENSE QUE NO IBA A PODER.
POR FAVOR SI YO QUISIERA QUE NO APARESCA EL SON:, COMO LE HAGO, AGRADESCO DE ANTEMANO TODA SU AYUDA BRINDADA HASTA EL MOMENTO.
«POR FAVOR SI YO QUISIERA QUE NO APARESCA EL SON:, COMO LE HAGO, AGRADESCO DE ANTEMANO TODA SU AYUDA BRINDADA HASTA EL MOMENTO.»
CUANDO ESTÉS EN EL EDITOR PRESIONA CRTL+F Y BUSCAS M.N. LO ELIMINAS Y LISTO, (ACTUALIZA LA FORMULA SI YA LA HICISTE O HAZLA OTRA VEZ)
y gracias gonzalo_conta fue de gran ayuda…!!!
ya intente lo que me dice, pero no me quita el SON: LO QUE ME QUITA ES LA CANTIDAD POR EJEMPLO 30,000.00 LE DOY LO QUE ME MENCIONA Y ME PONE SON: (PESOS 00/100 M.N.) PERO NO ME PONE TREINTA MIL.
En la misma linea al principio de ella le borras el SON o lo remplazas.
la linea es
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
esta al final del codigo espero te sirva
hola por favor no encuentro o creo que no tengo visual basic mi office es 2010 que hago gracias
Seguro que lo tienes, sigue los pasos
Abre un libro nuevo y presiona ALT+F11 sin soltar ALT
ahí veras al el editor de visaul basic, insertas el modulo y copias adentro el codigo.
Saludos
ESTA SUPER PADRE, TE AHORRA UN BUEN DE TIEMPO
LO LOGRE YA PUDE QUITAR EL SON:, CLARO QUE NO HUBIERA PODIDO SIN SU VALIOSA AYUDA, MUCHISIMAS PERO MUCHISIMAS GRACIAS, QUE ESTE MUY BIEN.
Excelente explicacion, muchisimas gracias!!
está excelente la aportación. te felicito, solo una duda… como le hago para que salga como 8.9 OCHO PUNTO NUEVE
Favor necesito me colaboren, metí el código para la conversión de número a letras y se me presentó un problema, cuando doy enter en cualquier programa me sale asterisco y un paréntesis, no sé si tuve alguna falla, o no sé a que se deba esto, tengo Officce 2007, borré el código de visual básic y aún así me sigue saliendo el asterisco y paréntesis al final de cada palabra cuando le doy enter. Les agradezco su ayuda.
muy buen aporte, justamente lo que andaba buscando, y funciona de maravilla
voz sos un genio!!!!!!!!!!
Esta Macro es muy buena
fue una buena ayuda
gracias
Gracias mi estimado, esto me ahorra tiempo
hasta pronto
excelente mil gracias
muchas gracias por la publicacion, estos aportes son muy buenos y nos ayudan mucho, yo le hice el cambio de PESOS a BOLIVIANOS.
MIL GRACIAS GONZALO
Gracias por el aporte, me servirá de mucho y ya comencé a modificarlo. (yo le quite la palabra «son», los paréntesis, M.N., puse algunos acentos en los números, y la parte «un mil millones») quedando así:
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», «DIECISÉIS», «DIECISIETE», «DIECIOCHO», «DIECINUEVE», «VEINTE», «VEINTIUN», «VEINTIDÓS», «VEINTITRÉS», «VEINTICUATRO», «VEINTICINCO», «VEINTISÉIS», «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
Case 4
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0 And lnCuartoDigito = 0, » MIL», » MIL») & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = «» & PesosMN & IIf(tyCantidad >= 2, » PESOS CON «, » PESO «) & Format(Str(lyCentavos), «00») & «/100»
End Function
**Y ENCONTRÉ OTRO CÓDIGO DIFERENTE, SE LOS DEJO PARA QUE LO REVISEN, A MI ME SIRVIÓ. INGRESAN (una vez insertado el Modulo) LA FUNCIÓN COMO: =Numletra
Sub Convertir()
End Sub
Function Numletra(Number As Double, Optional Kurrencys As String, Optional Kurrency As String) As String
If Kurrencys = «» Then
Kurrencys = «PESOS»
Kurrency = «PESO»
End If
If Kurrency = «» Then Kurrency = Kurrencys
Const MinNum = 0#
Const MaxNum = 4294967295.99
Dim Result As String
If (Number >= MinNum) And (Number = 2 Or Number < 1 Then Kurrenzy = Kurrencys
Result = RecurseNumber((Fix(Number)))
If Round((Number – Fix(Number)) * 100) < 10 Then
Result = "" + Result + " " + Kurrenzy + " 0" + Mid(Str(Round((Number – Fix(Number)) * 100)), 2, 1) + "/100 M.N."
Else
Result = "" + Result + " " + Kurrenzy + " " + Mid(Str(Round((Number – Fix(Number)) * 100)), 2, 2) + "/100 M.N."
End If
Else
Result = "Error, verifique la cantidad."
End If
Numletra = Result
End Function
Function RecurseNumber(N As Long) As String
Dim Numbers, Tenths, Hundrens
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISÉIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", _
"VEINTIÚN", "VEINTIDÓS", "VEINTITRÉS", "VEINTICUATRO", "VEINTICINCO", "VEINTISÉIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA", "CIEN")
Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
Dim Result As String
Select Case N
Case 0
Result = "CERO"
Case 1 To 29
Result = Numbers(N)
Case 30 To 100
Result = Tenths(N \ 10) + IIf(N Mod 10 0, » Y » + RecurseNumber(N Mod 10), «»)
Case 101 To 999
Result = Hundrens(N \ 100) + IIf(N Mod 100 0, » » + RecurseNumber(N Mod 100), «»)
Case 1000 To 999999
Result = RecurseNumber(N \ 1000) + » MIL» + IIf(N Mod 1000 0, » » + RecurseNumber(N Mod 1000), «»)
Case 1000000 To 1999999
Result = RecurseNumber(N \ 1000000) + » MILLÓN» + IIf(N Mod 1000000 0, » » + RecurseNumber(N Mod 1000000), » DE»)
Case 2000000 To 999999999
Result = RecurseNumber(N \ 1000000) + » MILLONES» + IIf(N Mod 1000000 0, » » + RecurseNumber(N Mod 1000000), » DE»)
Case 1000000000 To 1999999999
Result = RecurseNumber(N \ 1000000000) + » MIL MILLONES» + IIf(N Mod 1000000000 0, » » + RecurseNumber(N Mod 1000000000), » DE»)
Case 2000000000 To 4294967295.99
Result = RecurseNumber(N \ 1000000000) + » BILLONES» + IIf(N Mod 1000000000 0, » » + RecurseNumber(N Mod 1000000000), » DE»)
End Select
RecurseNumber = Result
End Function
Muchísimas gracias! Fue muy buena tu ayuda
Lo siento Gustavo pero quisiera saber cómo guardo la macro como un complemento de Excel (office 2007), para después habilitarla desde Opciones de Excel Complementos. y Usarla como se usa cualquier función y desde cualquier hoja (gracias por tu ayuda)
lo que puedo comentar es que mucho tiempo estuve buscando como hacerlo, muchas gracias, no entiendo toda la sintaxis pero he estado haciendole algunas modificaciones para mi trabajo, me han salido bien, muchisimas gracias por toda la información
Saludos
Super my friend saludos desde Colombia un abrazo
Muchas gracias, solo copie en modulo y a correrlo.
Me evito estar explicandole por teléfono a mi hermano. Es una macro muy sencilla.
GRACIAS POR COMPARTIR LO QUE SABES.
HOLA …… DÉJAME DECIRTE QUE ME QUITO EL SOMBRERO.. GENIAL GENIAL … HACE BASTANTE TIEMPO ESTA CACHARRIANDO CON ESTE TEMA Y POR CASUALIDAD ME ENCONTRÉ CONTIGO… FELICITACIONES Y MIL GRACIAS. QUE DIOS TE BENDIGA.
Muchas gracias… Sólo queda agradecer tu gentileza
una pregunta, ejecuto el macro y guardo el archivo, al abrirlo nuevamente no me ejecuta el macro, esto a que se debe????
gracias exelente aporte
Muchas gracias…. me sirvio bastante….
MUCHAS GRACIAS POR COMPARTIR TUS CONOCIMIENTOS……
Hola, mil gracias por impartir tus conocimientos, una pregunta: que debo hacer para que me funcione cuando digito $1’000.000.000,00 $2’000.000.000,00 etc., de antemano mil gracias por tu colaboracion.
Gonzalo, Gracias sinceras por este aporte más que útil. Saludos cordiales desde Bogotá, Colombia.
que tal Gonzalo muchas gracias por el video, yo lo aplique y me funciona muy bien, pero en el trabajo tengo una mac y no me funciona espero me puedas ayudar con el procedimiento, gracias.
Muchas gracias por este aporte, es demaciado útil.
Hola quiero saber porque al momento de registrar un valor de miles de millones no me registra y me saca el error de #VALOR, muchas gracias si me ayudas con el código para ajustarlo.
Excelente…..muchas gracias Gonzalo……muy buen aporte, con personas como tu, habemos más personas que aprendemos cosas nuevas…..
Atte.
Marcela. A.V.
Chile.
Muchisimas Gracias
SAludos..
Mil gracias agilizaron mucho mi trabajo…se les agradece muchooo!!
Hola
Muchísimas gracias por tu INFORMACION tengo un pequeño problema necesito que al final de la formula cuando ya me la ha convertido números a letra me indique que son m/cte, ya que me esta mostrando 40/100 nm dejo mi correo: aleja21_7@hotmail.com
Felicidades….excelente macro y se agradece que existan personas con el conocimiento y que quieran compartir sus conocimientos asi como tu. GRACIAS…
Quiero agradecer a Gonzalo que es la persona que realizo este macro ya que le a serbido a muchas personas, y en especial a mi que me a llebado meses tratando de encontrar una macro de pudiera hacer esta conversion
como dice tu paisano si hubieran, otras personas como tu desprendidas, no solo Mexico seria diferente si no todo el mundo saludos a la distancia desde Honduras C.A.
no puedo me puedes esplicar bien lo que pasa que tengo xp
¡Gracias!, de verdad que esto de compartir sólo lo hacen los genios y grandes de corazón, Dios t bendiga. ¡Excelente blog!
Hola desde Rep. Dominicana
Antes que nada aprecio la colaboración de Gonzalo y mis respetos y admiración por todos los que desinteresadamente aportan soluciones tan útiles.
Luego de tomar el código publicado, me tomé la libertad de agregar dos argumentos a la funcion CONVIERTENUMLETRA:
El primero es «DENOMINACION», con este podrán indicar el tipo de Moneda Ej.: «Dolares», «Pesos mexicanos», «Soles», etc.
El segundo es «CONDECIMALES», es una variable booleana (Falso/verdadero) y se usa indicarle a la función si se quiere incluir decimales en el resultado.
Abajo algunos ejemplos y el código completo modificado.
Juan Manuel Rodríguez
Ejemplos:
———–
=CONVIERTENUMLETRA(50,»»,FALSE)
Resultado: CINCUENTA
=CONVIERTENUMLETRA(50,»SOLES»,FALSE)
Resultado: CINCUENTA SOLES
=CONVIERTENUMLETRA(50,»SOLES»,TRUE)
Resultado: CINCUENTA SOLES CON 00/100
Codigo VB:
————–
Function CONVIERTENUMLETRA(NUMERO, Optional DENOMINACION, Optional CONDECIMALES As Boolean)
Dim TEXTO
Dim MILLONES
Dim MILESC
Dim CIENTOS
Dim DECIMALES
Dim CADENA
Dim CADMILLONES
Dim CADMILES
Dim CADCIENTOS
TEXTO = NUMERO
TEXTO = FormatNumber(TEXTO, 2)
TEXTO = Right(Space(14) & TEXTO, 14)
MILLONES = Mid(TEXTO, 1, 3)
MILES = Mid(TEXTO, 5, 3)
CIENTOS = Mid(TEXTO, 9, 3)
DECIMALES = Mid(TEXTO, 13, 2)
CADMILLONES = CONVIERTECIFRA(MILLONES, 1)
CADMILES = CONVIERTECIFRA(MILES, 1)
CADCIENTOS = CONVIERTECIFRA(CIENTOS, 0)
If Trim(CADMILLONES) > «» Then
If Trim(CADMILLONES) = «UN» Then
CADENA = CADMILLONES & » MILLON»
Else
CADENA = CADMILLONES & » MILLONES»
End If
End If
If Trim(CADMILES) > «» Then
CADENA = CADENA & » » & CADMILES & » MIL»
End If
ENTRE100 = «/100″
TCON = » CON »
If CONDECIMALES = False Then
DECIMALES = «»
ENTRE100 = «»
TCON = «»
End If
If Trim(CADMILES & CADCIENTOS) = «UN» Then
CADENA = CADENA & «UNO » & » » & DENOMINACION & TCON & DECIMALES & ENTRE100 & » »
Else
If MILES & CIENTOS = «000000» Then
CADENA = CADENA & » » & Trim(CADCIENTOS) & » » & DENOMINACION & TCON & DECIMALES & ENTRE100 & » »
Else
CADENA = CADENA & » » & Trim(CADCIENTOS) & » » & DENOMINACION & TCON & DECIMALES & ENTRE100 & » »
End If
End If
CONVIERTENUMLETRA = Trim(CADENA)
End Function
Function CONVIERTECIFRA(TEXTO, SW)
Dim CENTENA
Dim DECENA
Dim UNIDAD
Dim TXTCENTENA
Dim TXTDECENA
Dim TXTUNIDAD
CENTENA = Mid(TEXTO, 1, 1)
DECENA = Mid(TEXTO, 2, 1)
UNIDAD = Mid(TEXTO, 3, 1)
Select Case CENTENA
Case «1»
TXTCENTENA = «CIEN»
If DECENA & UNIDAD «00» Then
TXTCENTENA = «CIENTO»
End If
Case «2»
TXTCENTENA = «DOSCIENTOS»
Case «3»
TXTCENTENA = «TRESCIENTOS»
Case «4»
TXTCENTENA = «CUATROCIENTOS»
Case «5»
TXTCENTENA = «QUINIENTOS»
Case «6»
TXTCENTENA = «SEISCIENTOS»
Case «7»
TXTCENTENA = «SETECIENTOS»
Case «8»
TXTCENTENA = «OCHOCIENTOS»
Case «9»
TXTCENTENA = «NOVECIENTOS»
End Select
Select Case DECENA
Case «1»
TXTDECENA = «DIEZ»
Select Case UNIDAD
Case «1»
TXTDECENA = «ONCE»
Case «2»
TXTDECENA = «DOCE»
Case «3»
TXTDECENA = «TRECE»
Case «4»
TXTDECENA = «CATORCE»
Case «5»
TXTDECENA = «QUINCE»
Case «6»
TXTDECENA = «DIECISEIS»
Case «7»
TXTDECENA = «DIECISIETE»
Case «8»
TXTDECENA = «DIECIOCHO»
Case «9»
TXTDECENA = «DIECINUEVE»
End Select
Case «2»
TXTDECENA = «VEINTE»
If UNIDAD «0» Then
TXTDECENA = «VEINTI»
End If
Case «3»
TXTDECENA = «TREINTA»
If UNIDAD «0» Then
TXTDECENA = «TREINTA Y »
End If
Case «4»
TXTDECENA = «CUARENTA»
If UNIDAD «0» Then
TXTDECENA = «CUARENTA Y »
End If
Case «5»
TXTDECENA = «CINCUENTA»
If UNIDAD «0» Then
TXTDECENA = «CINCUENTA Y »
End If
Case «6»
TXTDECENA = «SESENTA»
If UNIDAD «0» Then
TXTDECENA = «SESENTA Y »
End If
Case «7»
TXTDECENA = «SETENTA»
If UNIDAD «0» Then
TXTDECENA = «SETENTA Y »
End If
Case «8»
TXTDECENA = «OCHENTA»
If UNIDAD «0» Then
TXTDECENA = «OCHENTA Y »
End If
Case «9»
TXTDECENA = «NOVENTA»
If UNIDAD «0» Then
TXTDECENA = «NOVENTA Y »
End If
End Select
If DECENA «1» Then
Select Case UNIDAD
Case «1»
If SW Then
TXTUNIDAD = «UN»
Else
TXTUNIDAD = «UNO»
End If
Case «2»
TXTUNIDAD = «DOS»
Case «3»
TXTUNIDAD = «TRES»
Case «4»
TXTUNIDAD = «CUATRO»
Case «5»
TXTUNIDAD = «CINCO»
Case «6»
TXTUNIDAD = «SEIS»
Case «7»
TXTUNIDAD = «SIETE»
Case «8»
TXTUNIDAD = «OCHO»
Case «9»
TXTUNIDAD = «NUEVE»
End Select
End If
CONVIERTECIFRA = TXTCENTENA & » » & TXTDECENA & TXTUNIDAD
End Function
AQUI LO TENEMOS EN VIDEO SI NO ENTENDIERON 🙂
http://www.manualestutor.com/2012/08/convertir-numeros-letras-en-excel.html
muchas gracias hermano, hoy aprendo algo
hola me aparece error de sintaxis? como se soluciona esto? Aguardo una respuesta, gracias.
Mira Amigo gonzalo
Tengo la celdas A1, B1 y C1(Constante); lo que quiero es hacer una formula en la celda D1(Resultado) que multiplique a1*c1 y b1*c1 osea que al ingresar un dato en la celda a1 automaticamente salga el resultado en la celda D1 o que ingrese un dato en la celda B1 hago lo mismo ¿habra alguna forma de hacerlo? estare muy agradecido por la ayuda gracias de antemano
HOLA ANONIMO, para lo que estas requiriendo, solo requieres usar la función «SI» de forma anidada; ya que sería como se escribe a continuación: en D1 vas a escribir; =SI(a1=0;a1*c1;b1*c1) y listo…. esa sería una parte de la condición, prueba y sigue intentando que es muy facil una vez que lo aprendes a hacer.
saludos
Muchisimas gracias!! Llevaba un buen tiempo buscando una respuesta tan concreta y util!! 🙂 gracias!!!
he probado con todas los odigos publicados, y lo unico que funciona sin error es la primera en pesos, pero necesito en nuevos soles, se agredece su apoyo, para los que no sabemos,se aprende mucho aca. Por favor si alguien puede facilitar el codigo correcto en nuevos soles (PERÚ), les quedare muy agradecida.
Yo lo que hize fue cambiar en el programa de visual todo lo que dijera pesos y cambie a Lempiras la cual es mi moneda en Honduras, y tambien elimine lo que dice m.n. luego me sali del programa con alt Q y me duncionó.
AMIGO MUCHAS GRACIAS POR ESTA VALIOSA INFOMRACION
HOLA MUCHISIMAS GRACIAS, ME SIRVIO MUCHISIMO, SE LO AGRADEZCO, SALUDOS DESDE VERACRUZ, VER
Muchisimas gracias por el aporte, me fué muy util.
Excelente!!!!son una bruta para el excel y pude hacer mi macro…
Gracias por el dato 🙂
Muchas gracias hermano, como dicen aya arriba, me quito el sombrero. Es muy practica y la verdad es el sueño de todo contador.
Saludos desde Mexicali Mexico y espero estes muy bien, un abrazo y que viva Mexico por siempre!!!
Buen dia:
Probe la macro y funciono de maravilla, pero al convertirla a excel 2007 me aparece el error:
«The following features cannot be saved in macro-free wok books:
. VB project
to save a file whit these features, click NO, and the choose a macro-enabled file type in the File Type List.
To continue savingas a macro-free workbook, click YES.
SI NO»
La copie directamente en el archivo 2007 y tampoco se gurada el modulo…
¡Porfavor ayuda…!!!!!!!! ¿Que estoy haciendo mal??
Muchisimas gracias no te imaginas cuantos dolores de cabeza me causo mi trabajo pero gracias a ti todo me resulto super tus aportes sirven para muchas personas y la forma de explicacion es excelente gracias!!!
son un asko y los pienso de mandar
yo quiero poner el numero y que me salga enletra no quiero informacion
pero me sirvio un poco
Gracias por el aporte me sirvió mucho ahora lo estoy aplicando a una lista de calificaciones, funciona a las mil maravillas salvo cuando tengo un caso como este 18.90 me muestra el resultado en letras DIECIOCHO CON, solo pasa cuando los decimales son .10, .20, .30 …90 adjunto el código modificado y la formula modificada que estoy utilizando si alguien tiene alguna solución se agradecería que la comparta,
Codigo VB
Function num_letras(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
num_letras = lcBloque
Case 2
num_letras = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & num_letras
Case 3
num_letras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & num_letras
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
num_letras = «» & num_letras & IIf(tyCantidad > 1, «», » «)
num_letras = num_letras
End Function
Formula en celda
=SI(RESIDUO(B28,1)=0,num_letras(B28),»»&num_letras(B28)&SI(B28>1,» CON»,»»)&num_letras(DERECHA(B28,2))&»»)
Gracias
Me podrías ayudar, por que si tecleeo la cifra 180270420008.00 me marca error?
Saludos y Gracias
excelente… al fin encontre lo que tanto andaba buscando.
Tengo un inconveniente en el uso, si me pueden ayudar cuando pones 0,75 o 1,25 por ejemplo PESO 75/100 UN PESOS 25/100 deberia decir CERO PESOS 75/100 UN PESO 25/100
GRacias por su ayuda
Espero les sirva:
http://www.manualestutor.com/2012/08/convertir-numeros-letras-en-excel.html
Bueno aquí esta la solución en vídeo de este tema espero les sirva:
http://www.manualestutor.com/2012/08/convertir-numeros-letras-en-excel.html
Excelente Macro, yo lo tenia pero estaba incompleto, felicidades y gracias.
MUY BUENO GRACIAS ME SACASTE DE UN APURO
Hola yo dejo acá un macro para convertir, números en letras en este caso a pesos colombianos, espero les sea de ayuda.
Es Asi:
‘**********************************************************************
‘** **’
‘** CONVERTIR DE NUMEROS A LETRAS **’
‘** AUTOR: juan jaramillo **’
‘** **’
‘** **’
‘** FECHA DE CREACION:agosto 1/2012 **’
‘** **’
‘**********************************************************************
Public Function CLetras(ByVal numero As Double, Optional fmtoUnidad As Integer = 0, Optional Unidades As String = «Kilos», Optional Unidad As String = «Kilo», Optional Genero As String = «M») As String
Dim strUnidad(0 To 5) As String
Dim strUnidades(0 To 5) As String
Dim strCifras(0 To 4) As String
Dim NumeroCifras As Byte
Dim NumeroTercios As Byte
Dim strNumero As String
Dim strTMP As String
Dim dblNumeroEntero As Double
Dim intNumeroTmp As Integer
Dim intCentavos As Integer
Dim J As Integer
Dim intNumTmp As Integer
strUnidades(0) = » pesos m/cte»: strUnidades(1) = » unidades»: strUnidades(2) = » dolares»: strUnidades(3) = » euros»: strUnidades(4) = » » & Unidades: strUnidades(5) = «»
strUnidad(0) = » peso m/cte»: strUnidad(1) = » unidad»: strUnidad(2) = » dolar»: strUnidad(3) = » euro»: strUnidad(4) = » » & Unidad: strUnidad(5) = «»
strCifras(1) = «»: strCifras(2) = » mil «: strCifras(3) = » millones «: strCifras(4) = » mil «: strCifras(0) = » millón »
intCentavos = Int((Round(numero, 2) * 100) – (Int(numero) * 100))
dblNumeroEntero = Round(numero, 2) – (intCentavos / 100)
strNumero = CStr(Abs(dblNumeroEntero))
NumeroCifras = Len(strNumero)
NumeroTercios = Abs(Int(-NumeroCifras / 3))
Select Case dblNumeroEntero
Case 0
strTMP = «cero»
Case 1
If fmtoUnidad 5 Then
strTMP = «un»
strUnidades(fmtoUnidad) = strUnidad(fmtoUnidad)
Else
strTMP = «uno»
End If
If Genero «M» Then strTMP = «una»
Case 2 To 999
strTMP = CLetrasS1(CLetrasS3(dblNumeroEntero, 1), Genero)
Case 1000
strTMP = «mil»
Case 1000000
strTMP = «un millón»
Case 1000001 To 1999999
strCifras(3) = » millón »
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
Case Else
For J = NumeroTercios To 1 Step -1
intNumTmp = CLetrasS3(dblNumeroEntero, J)
If intNumTmp 0 Then strTMP = strTMP & CLetrasS1(intNumTmp, Genero) & strCifras(J)
Next J
End Select
If Right(strTMP, 9) = «millones » Then strTMP = Mid(strTMP, 1, (Len(strTMP) – 9)) & «millones de»
If Right(strTMP, 6) = «millón» Then strTMP = Mid(strTMP, 1, (Len(strTMP) – 6)) & «millón de»
strTMP = strTMP & strUnidades(fmtoUnidad)
If intCentavos > 0 Then
Select Case fmtoUnidad
Case 0
strTMP = strTMP & » con » & CLetrasS1(intCentavos, Genero) & » centavos»
Case 5
strTMP = strTMP & » punto » & CLetrasS1(intCentavos, Genero)
End Select
End If
‘cambiar «un mil» o «una mil» por «mil»
strTMP = Replace(strTMP, «una mil», «mil», , , vbTextCompare)
strTMP = Replace(strTMP, «un mil», «mil», , , vbTextCompare)
CLetras = strTMP
End Function
‘función que secundaria que calcula las decenas
Private Function CLetrasS2(numero As Integer, Genero As String) As String
Dim strUnidades(0 To 20) As String: Dim strDecenas(2 To 9) As String: Dim Unidades As Byte: Dim Decenas As Byte: Dim strTMP As String
strUnidades(0) = «»: strUnidades(2) = «dos»: strUnidades(3) = «tres»: strUnidades(4) = «cuatro»: strUnidades(5) = «cinco»: strUnidades(6) = «seis»: strUnidades(7) = «siete»: strUnidades(8) = «ocho»: strUnidades(9) = «nueve»: strUnidades(10) = «diez»: strUnidades(11) = «once»: strUnidades(12) = «doce»: strUnidades(13) = «trece»: strUnidades(14) = «catorce»: strUnidades(15) = «quince»: strUnidades(16) = «diez y seis»: strUnidades(17) = «diez y siete»: strUnidades(18) = «diez y ocho»: strUnidades(19) = «diez y nueve»: strUnidades(20) = «veinte»
strDecenas(2) = «veinti»: strDecenas(3) = «treinta»: strDecenas(4) = «cuarenta»: strDecenas(5) = «cincuenta»: strDecenas(6) = «sesenta»: strDecenas(7) = «setenta»: strDecenas(8) = «ochenta»: strDecenas(9) = «noventa»
If Genero = «M» Then
strUnidades(1) = «un»
Else
strUnidades(1) = «una»
End If
Decenas = Int(numero / 10)
Unidades = Int(numero – (Decenas * 10))
Select Case numero
Case 1 To 20
strTMP = strUnidades(numero)
Case 21 To 29
strTMP = strDecenas(Decenas) & strUnidades(Unidades)
Case 30 To 99
If (Decenas > 0) And (Unidades > 0) Then strTMP = strDecenas(Decenas) & » y » & strUnidades(Unidades)
If (Decenas > 0) And (Unidades = 0) Then strTMP = strDecenas(Decenas)
End Select
CLetrasS2 = strTMP
End Function
‘Funcion secundaria que calcula las centenas
Private Function CLetrasS1(numero As Integer, Genero As String) As String
Dim strCentenas(1 To 9) As String: Dim Centenas As Byte: Dim strTMP As String: Dim intNumeroEntero As Integer
intNumeroEntero = Int(numero)
Centenas = Int(numero / 100)
If Genero = «M» Then
strCentenas(1) = «ciento»: strCentenas(2) = «doscientos»: strCentenas(3) = «trecientos»: strCentenas(4) = «cuatrocientos»: strCentenas(5) = «quinientos»: strCentenas(6) = «seiscientos»: strCentenas(7) = «setecientos»: strCentenas(8) = «ochocientos»: strCentenas(9) = «novecientos»
Else
strCentenas(1) = «ciento»: strCentenas(2) = «doscientas»: strCentenas(3) = «trecientas»: strCentenas(4) = «cuatrocientas»: strCentenas(5) = «quinientas»: strCentenas(6) = «seiscientas»: strCentenas(7) = «setecientas»: strCentenas(8) = «ochocientas»: strCentenas(9) = «novecientas»
End If
Select Case numero
Case 0 To 99
strTMP = CLetrasS2(intNumeroEntero, Genero)
Case 100
strTMP = «cien»
Case 200, 300, 400, 500, 600, 700, 800, 900
strTMP = strCentenas(Centenas)
Case Else
strTMP = strCentenas(Centenas) & » » & CLetrasS2(Int(numero – (Centenas * 100)), Genero)
End Select
CLetrasS1 = strTMP
End Function
‘Funcion secundaria que saca un tres cifras del numero
Private Function CLetrasS3(numero As Double, Tercio As Integer) As Integer
Dim CadaCifra As Integer
Dim OrdenInverso As Integer
Dim intNumeroTmp As Integer
Dim NombreCifra(1 To 12) As String
OrdenInverso = Len(CStr(numero))
‘Borra la matriz
For CadaCifra = 1 To 12: NombreCifra(CadaCifra) = «0»: Next CadaCifra
For CadaCifra = 1 To Len(CStr(numero))
NombreCifra(OrdenInverso) = Val(Mid(CStr(numero), CadaCifra, 1))
OrdenInverso = OrdenInverso – 1
Next CadaCifra
intNumeroTmp = Val(NombreCifra((Tercio * 3)) & NombreCifra((Tercio * 3) – 1) & NombreCifra((Tercio * 3) – 2))
CLetrasS3 = intNumeroTmp
End Function
Muy bueno! Juan! gracias! mas explicito ni pedirlo….gracias!
Muchas gracias Juan.
Sin embargo te cuento que probé la del seño GCHABLE y me funciona perfecto.
Cuando pruebo la tuya me salen cantidad de errores.
Quería saber si alguien te había contactado y dicho que estos errores aparecían.
Me gusta mucho tu fórmula porque le da solución al problema de MILLON y MILLON DE para cifras como 1.000.000 o 2.000.000, etc.
Tu me podrías decir si revisaste tu macro antes de pegarla para cerciorarte que estuviera bien?
Me interesaría mucho usarla, gracias, Jairo
Hola necesito su ayuda por favor, necesito convertir números enteros y decimales a texto, ejemplo:
4,545.47 Cuatro mil quinientos cuarenta y cinco con cuarenta y siete
4,545.00 Cuatro mil quinientos cuarenta y cinco exactos.
Por favor necesito su ayuda si me pudieran ayudar…
miguel.tuj@hotmail.com
hola no entiendo bien tu pregunta, pero arriba hay un macro que da estos datos así con decimales.
Gracias amigo, me evitaste quebrarme la cabeza.
muchas gracias
Muchas Gracias, hay varios tutoriales pero el tuyo lo mas explicito, Felicidades
HOLA, MUCHAS GRACIAS POR TU AYUDA Y EN VERDAD QUE BUENA FORMA DE EXPLICAR COMO SE REALIZAN Y ESTO DA PAUTA PARA QUE CADA UNO PODAMOS IR CREANDO MACROS SENCILLAS E IR AVANZANDO PARA REALIZAT YA UNAS COMPLEJAS.
MUCHAS GRACIAS Y SALUDOS A TODOS.
My spouse and I stumbled over here by a different page and
thought I should check things out. I like what I see so i am just
following you. Look forward to looking into your web page again.
Hola! Quisiera que me ayuden ya que al escribir 1000 me sale «Uno mil» y quisiera que me salga solo «Un mil».
Desde ya, gracias.
Gracias, muy bueno!
MUCHAS PERO MUCHAS, GRACIAS, ME ACABO DE LUCIR EN MI TRABAJO GRACIAS A ESTA FUNCION
CONTADOR GONZALO, FELICIDADES POR SER TAN PROFESIONAL, SUS CONCEJOS Y ENSEÑANZAS EXCELENTES.SALUDOS DESDE LAS COSTAS DE.OAXACA,MEXICO.SILVERIO
Quisiera que me ayuden porque yo hago cheques y quisiera que me quedara 1250.24= Mil docientos cincuenta 24/100
Tengo una hoja de cálculo en excel que te puede servir, si te interesa contáctame. Saludos.
GRACIAS AL AUTOR DE LA GUIA, ME SIRVIO MUCHISIMO, LO NECESITABA EN DOLARES Y SOLO CAMBIE EN LA MACRO PESOS POR DOLARES Y MN POR USD Y LISTO…..YA PUEDEN USARLO CON DOLARES…..GRACIAS NUEVAMENTE…..JSOLANO
Hey, gracias el aporte… me ahorre la programacion. creo que no imaginabas que 5 años despues se te seguiria agradeciendo.
para habilitar este macro en excel 2010 por que me aparece como nombre
Nuevamente te agradezco, y logre implementar la macro, no soy diseñador, pero vi tu trabajo y me gustó.un saludo pendiente de tus nuevos conocimientos.
Muchisimas gracias en verdad muy bueno
CONTADOR GONZALO GUSTO EN SALUDARLO, QUIERO PEDIRLE SI ES POSIBLE UNA MACRO PERO QUE NO SEA PARA MONEDA, SIMPLEMENTE PARA CONVERTIR NUMEROS A LETRAS, ESPERO SUS COMENTARIOS ESTA VIA O EN MI MAIL. DE ANTEMANO GRACIAS
hola donde puedo descargar un manual para aprender todo esto de macros….gracias..
holaaaaa donde puedo descargar un manual para aprender todo esto de macros como funciona etc…gracias
MUCHISSSIMMMMAS GRACIAS HACE TIEMPO ESTABA TRATANDO DE HACERLO…,MUY UTIL Y FELICITACIONES SINCERAMENTE
Gonzalo_Conta….te felicito por compartir tus conocimientos,,,,excelente trabajo y sobre todo la explicacion, te mando un sincero saludo desde Chihuaha, Mexico,,,,un abrazo, y ojala existiera mas gente como tú…..
Eternamente agradecido, tu explicación ha sido tan clara que sabiendo poco o nada de programación ya lo he cambiado a dólares y me ha funcionado muy bien.
MIL GRACIAS COTADOR, LE FELICITO POR SU EXPLICACION TAN CLARA PORQUE FUNCIONA EXCELENTE
me sirvio
Muchísimas Gracias … sabia que existia, pero tu explicación paso a paso… fue simplemente genial !!
Facilisimo muchas gracias que buen trabajo….
The Best – Colombia
gracias fue muy facil con tu explicacion asi deberia ser todo facil
Muchas gracias por tu aporte. Le hice unas pequeñas modificaciones y lo dejé tal como yo lo necesitaba.
HERMANO MUCHISIMAS GRACIAS, ME SIRVIO MUCHISIMO …..SALUDOS DE CORAZA!!!
Wow, awesome blog layout! How long have you been blogging for?
you make blogging look easy. The overall look of your website is great, let alone the content!
Hola, primero gracias por el aporte funciona muy bien, le hice unas modificaciones pero me interesa hacer una que no puedo, la cantidad me sale asi:
( CINCO MIL TRESCIENTOS TREINTA Y SEIS PESOS 00/100 M.N.)
me gustaria que el parentesis estuviera pegado a la primer letra osea asi (CINCO MIL TRESCIENTOS TREINTA Y SEIS PESOS 00/100 M.N.)
Se que es poco pero es solo por estetica del documento, y ya por ultimo no se me queda grabada la función, yo uso office 2007 y por mas que he buscado no lo logro, si funciona en el libro en el que lo puse, pero si abro uno nuevo no, espero me puedas ayudar ya sea por aqui o por mi mail, saludos y nuevamente gracias por el aporte.
Muchas Gracias me ahorraste un friego de Tiempo de oficina
Muy funcional, pero que tendria que modificar si no quiero que me de las cantidades en moneda, sino simplemente la cantidad como lo mencionas en tu ejemplo:
23 = Veintitrés
Sin mas ni mas?
De antemano muchas Gracias.
Saludos y Felicitaciones.
SI FUNCIONA Y MUY BIEN, palitroche
Excelente aporte :
De antemano muchas Gracias.
Saludos y Felicitaciones.
A todos los interesados, tengo una hoja de excel (no es macro), que les hace la conversión de número a letra, hiperfácil de usar, y sobre todo que pueden observar las fórmulas utilizadas. El límite superior que utilicé fue $999,999,999.99, pero por supuesto que se puede ampliar. A todo aquel que se interese se lo puedo enviar gratuito, solo les pido que me citen y me den el crédito en sus trabajos si les llega a ser útil. Saludos desde Durango, México.
Gracias Omar, te pido si es posible proporciona tu pagina y te visitamos. muchas gracias o mandamela a mi correo, y si tienes unicamente numeros a letras sin monedas sólo a letras te agradezco.
Mi correo es omarmanzanochaidez@yahoo.com.mx. Saludos desde Durango, México.
Nuevamente Omar muchas gracias y espero tu mensaje, un cordial saludo desde oaxaca. Date: Fri, 2 Nov 2012 03:19:23 +0000 To: bichon3pino@hotmail.com
Estimado. como lo puedo modificar para que en cantidades menores a $1.00 me devuelva algo asi como: $0.50 = «50/100 de Pesos M.N.» en lugar de el actual «Pesos 50/100 M.N.»
De nueva cuenta, y a todos los interesados, adicional a la hoja de cálculo que hace la conversión de números a letra, también estoy trabajando y ya prácticamente la terminé, una hoja de cálculo que convierte coordenadas UTM a Geodésicas y viceversa. Estoy incluyendo en ella los elipsoides de referencia más utilizados (20 elipsoides), donde por supuesto aparecen el WGS84 y el ITRF92. Se basa en el formulario de traslación desarrollado por Molodensky. A todo aquel que se interese se lo puedo enviar gratuito, solo les pido que me citen y me den el crédito en sus trabajos si les llega a ser útil. Saludos desde Durango, México.
Muy agradecido Omar por tus aportaciones, continuamos en comunicación.
Este macro lo uso para todo, cantidad de botellas, cajas, con una pequeña modificacion y claro importes en moneda de mi pais, gracias.
Erick, como queda la macro para cajas, y sin monedas. gracias
Acabo de enviarle a Silverio la hoja de Cálculo que resuelve sus dudas. Para los que amamos Excel, creo yo que se deben de resolver con las mismas herramientas que nos proporciona el programa. Estoy abierto para todos aquellos que tengan dudas acerca de la programación en Excel. Saludos desde Durango, México.
Excelente trabajo Omar, en hora buena felicidades, muy profesional y sobre todo muy bien explicada tu hoja de calculo.Continúa cosechando éxitos.
excelente, gracias por su ayuda
Excelente muchas gracias tenia esa duda de tiempo atras gracias por ayudar muy bien explicado
Muchas gracias!!!!!
Excelente tu explicacion y funciona a la perfeccion. MIL GRACIAS
Por ejemplo, si quiero que la calificacion de un alumno que es de 9.5 aparezca de la siguiente manera (Siete Punto Cinco), como le podria hacer?
No quiero que aparezca pesos moneda nacional.
Perdón no me pude contener, pero si quieres que una calificación de 9.5 aparezca como siete punto cinco estarías siendo un mal maestro jajajaja perdón de nuevo.
Es muy sencilla de modificar la hoja de cálculo, solo dime que requieres UNO o DOS decimales, ya que si son dos decimales aparecería como nueve punto cincuenta, y es obvio de que si es solo uno, diría nueve punto cinco. Tú decides. Saludos desde Durango, México.
Me sirvio mucho, gracias por la formula…
hola, estoy tratando de habilitar la macro pero me pide que copie el codigo pero no se donde lo encontrarlo =( gracias..!
ERES EL MEJOR!
GRACIAS!!!!
MUCHAS GRACIAS!!!! DIOS Y EL UNIVERSO CONSPIRAN A TU FAVOR EN TODOS TUS PROPOSITOS!!!!
Omar manzano: He de agradecerte si me puedes enviar la hoja de calculo que te pedi por correo, de antemano muchas gracias y tus conocimientos ya somos un sinnumero de personas que estamos agradecidos.
Muchas gracias mi amigo. Habia visto muchas funciones parecidas, pero hasta ahora ninguna me habia funcionado.
Nuevamente, gracias por tu aportacion.
muchas gracias, esta super facil!!! solo tengo una preguntita!! como le hago para que no aparezca ( SON:) gracias…
NO HAY MUCHAS PALABRAS…. GRACIAS , FELICIDADES Y ESPERO QUE TUS BUENAS OBRAS (ES DECIR LAS PUBLICACIONES DESINTERESADAS) SEAN RECOMPENSADAS AL 100% DE NUEVO GRACIAS Y SUERTE EN TUS FUTUROS PROYECTOS
muy bueno el aporte gracias
excelente la informacion, lo aplicable y me es de mucha utlidad… gracias …
muy buena aporte saludos nos sirvio de mucho
Sorprendente! ya van 5 años del post y todavia lo seguimos usando!, el problema mio es éste, cada vez que quiero modificar alguno que encuentro o solo pegar los codigos que en su lista estan, no me sale, mi office 2007 me sale #¿NOMBRE? a veces no escriben las claves para que funcione, en micaso es en nuevos soles, Gracias Gonzalo.
Extraordinario, el mejor que encontre.
Gracias por tu gran aporte, no importa el tiempo que lleva
sigue siendo la mejor solucion.
Me ha sido de mucha utilidad, te estoy eternamente agradecido.
como guardo la macro en excel 2010
al momento de guardar checas en el fomato en el cual lo deseas guardar por default te dice «Libro excel» le cambias a «libro con macros excel» algo asi
Gonzalo, como puedo tener en un mismo libro MN y Dolares,?
Raul, busca en la red el codigo de Mauricio Baeza, si mal no recuerdo es multimoneda, seguro te servirá
Suerte.
Gonzalo.
QUIERO PONER UNA LETRA A UN VALOR QUE ESTE ENTRE 135 -144 COMO LE PUEDO HACER UN EJEMPLO C1 139 C4 B
GRACIAS HACE RATO ESTABA BUSCANDO ALGO ASI
excelente esto es exactamente lo que estaba buscando. mchas Gracias Gonzalo
muchisisisisisimas gracias mies estimado tenia muchos años buscando esto, mil mil mil gracias. de verdad mil gracias
hola
gracias por compartir tu macro tengo una pregunta yo soy de Chile y aquí se usa el peso por lo que al escribir la cifra de $1.000 pesos me aparece un mil pesos pero aquí no se escribe así debería decir solo mil pesos como puedo modificar y lo otro para cuando uno escribe en millones como por ejemplo $1.000.000 pesos en el macro aparece solo un millón pesos y debería ser un millón de pesos como lo puedo cambiar por favor ayúdame plisss
Master!!!! Gracias por el aporteeee!!! Saludos…
Gracias Gonzalo_conta, esto me sirvió muchísimo, sólo tuve que modificar el código para que no dijera «SON» y me sirviera para Colombia y listo. También me sirvió mucho la explicación de Tavo sobre guardar el documento como complemento y habilitarlo desde opciones de Excel para poder usarlo en todos los libros nuevos que hago. Gracias, mil gracias.
Excelente función, haces que sea super fácil, agradecimiento también a los autores.
Que excelente aporte. Me salvó de horas de investigación. Felicitaciones al autor o autores y al colaborador que la propuso en este sitio.
Excelente trabajo. pero sobre todo mil gracias por tu aporte. Saludos
BUENAS NOCHES MI NOMBRE ES JOSE GUADALUPE SOY PROFESOR DE UNA ESCUELA PRIMARIA PERO TENGO QUE ENTREGAR UNA LISTA DE CALIFICACIONES CON NUMEROS DEL 5 AL 10, PERO ACTUALMENTE ME PIDEN UNA LISTA MAS DONDE LAS CALIFICACIONES 10 Y 9 SEAN A, 8 SEA B, 7 Y 6 SEA C Y 5 SEA D EN OTRA LISTA COMO LE PUEDO HACER PARA NO HACER DOBLE TRABAJO SINO UNO SOLO Y EN LA OTRA LISTA DE MANERA AUTOMATICA APAREZCAN LAS LETRAS, SE LO AGRADECERIA MUCHAS GRACIAS
GRACIAS ES UNA MACRO MUY SENCILLA Y FUNSIONABLE, LO HICE RAPIDO Y ME SIRVIO
Hola, segui las instrucciones y solo me aparece M.N.) en el lugar donde debiera de aparecer la cantidad.
Que podre estar haciendo mal? uso el office 2010.
Gracias
Hola mi estimado Juan Carlos, seguramente no has direccionado la celda numérica, en el ejemplo aparece =»PesosMN(A1)» lo que parece que falta es que en lugar de A1, le pongas la celda donde tienes la cantidad numérica. por ejemplo, si el número que quieres convertir esta en la D50, solo deberás sustituir la A1 por la D50.
Espero te sirva
Saludos
Hi there to all, for the reason that I am actually eager of reading this
webpage’s post to be updated regularly. It carries fastidious information.
me ha servido mucho, Gracias
ola oye como le hago para que no tenga que hacer todo el procedimiento en cada uno de los formatos de excel solo hacerlo una sola vez y ya ojala me puedas contestar me urge y gracias
Muchas gracias por la aportacion, funciona muy bien.
Saludos
muchas gracias, me sirve bien aunque hice cambios porque necesitos los numeros en ingles, solo que sigo con problemas al guardar como Libro de Excel abilitado para macros (Excel7) cuando la buelvo abrir me dice #¿nombre?, no se que tengo que hacer antes. espero me ayudes. gracais
problema solucionado…… solo tengo que avilitar la macro y ya me funciono al 100 gracias
Muchas gracias por su ayuda; muy clara y completa; el detalle del palitroche de Pita, sí, lo recuerdo, encantador gesto. Saludos.
Excelente ayuda! felicitaciones, esto es lo que hace el internet interesante y de mucho provecho!!!
como le podria hacer para que lo marque en 2 lineas de una misma celda
es decir que me de hasta la cantidad y desde pesos en otro renglon o celda
excelente!! muchas gracias!! me fue de mucha utilidad!!
Eres mi héroe.
Excelente ayuda, y veo que por mucho tiempo ha funcionado
es calida hacer eso
HOLA TAVO COMO HABILITO LOS MACROS TENGO EXCEL 2010,, SALUDOS
Aqui esta el tutorial de como habilitar los macros, sole pegas el codigo que gozalo da y lo pegas en medio de
Sub Hello()
codigo
End Sub
http://msdn.microsoft.com/es-es/library/office/ee814737(v=office.14).aspx
cuando lo pegues se te va duplicar end funtion
solo borras el repetido antes de ejecutar y listo.
MUCHISIMAS GRACIAS, ME VA A YUDAR MUCHISIMO!!!
Gracias por tu aportacion ya lo instale esta increible, estoy feliz por facilitarme este programita tan especial
muchas gracias por compartir, te agradezco en infinito
Pocas veces coloco mi comentario en la Web, pero realmente el agradecimiento lo vale. Excelente trabajo, Gracias por Compartirlo
Mil Gracias
Gracias… funciona excelente… me han sacado de un apuro administrativo.
Perfecto, funciona de Maravilla.
Saludos
Sorprende que este trabajo lo compartas de este modo, como podemos remunerarte , creo que es lo justo, saludos
excelentisimo!!!! gracias.
HOLA TAVO ME PODRIAS AYUDAR ES QE HAGO TODO EL PROCESO Y ME APARECE #NOMBRE
HAY QUE PUEDO HACER GRACIAS
Chicos, necesito de su ayuda!!! Hice el procedimiento y todo salió perfecto, pero al querer eliminar la palabra «SON» para que solo saliera la cantidad, no se que hice que ahora en lugar de hacer la conversión me aparece #¿NOMBRE? y al intentar hacer el procedimiento nuevamente sin quitarle nada, ya no se puede… que hago?
Muchas gracias fue de gran utilidad y facil de instalar.
CHIDO CARNAL TE LO AGRADEZCO CREEME SI TE CONOCIERA TE PAGO UNOS 100 O MAS. SALUDOS
Jajaja gracias, no podría aceptarlo
Muy bueno tu codigo, una pregunta como hacer para enviar el resultado en
negrita
Excelente muy bien explicado y de mucha ayuda, gracias por compartir sus conocimientos.
Saludos.
GRACIAS MUCHAS GRACIASSSSS
Excelente mi tutora me lo sugirió y me fue super, había ensayado otros que encontré en la web y no tuve resultado
GRACIAS Amigo…. Excelente
Gracias! rápido y fácil. Muy buen aporte. saludos!!
GONZALO UNA PREGUNTA DISCULPA CUANDO ESCRIBO EN No. 16,17,18 Y 19 ME LO CONVIERTE ASI EJ. (DIECISEIS, DIECISIETE, DIECIOCHO, DIECINUEVE) Y YO QUIERO QUE ME LO SEPARE EJ. (DIEZ Y SEIS, DIEZ Y SIETE) ME PUEDES AYUDAR A MODIFICAR LA FORMULA, TE LO AGRADECERIA MUCHICIMO, GRACIAS
Muchas muchas gracias me no sabes una explicacion bien hecha cuanto le sirve a las persona
Muchas gracias, no se requiere grandes explicaciones cuando se es conciso Saludos
Muchas gracias, es algo que necesitaba
Reblogged this on Gbetus and commented:
Está es una buena solución para «Convertir Números a letras en Excel»
hola buen dia me pueden ayudar es que ayer realice el procedimiento y funciono bien pero hoy que abri el archivo ya me aperece ¿nombre me podrian explicar que hay que hacer please
exelente
LA REMIL PUTA MADRE Q TE RE PARIO… NO ENTIENDO UNA GUASCA
EXCELENTE, UNA EXPLICACIÓN SENCILLA Y FUNCIONA MUY BIEN, GRACIAS.
GRACIAS MIL, ENORME APORTACIÓN…!!
Un cordial saludo. Tengo una situación la cual quiero consultarle a ver de que forma se puede solucionar.
Resulta que tengo una hoja de cálculo programada para llevar mi asistencia en mi trabajo. Me contabiliza horas trabajadas cuando es de am a pm, sin embargo
Cuando necesito que me contabilice de pm hacia am me da error.
Adjunto copia de las formulas para que puedas ver lo que te quiero decir.
Se que cuando se refiere de 6pm a 2 am, corresponde al día siguiente, pero quisiera programarla para que en ese mismo renglón me identifique que se han laborado 8 horas.
Gracias.
Buenas noches, en verdad es una excelente exolicación hasta hoy todo muy bn, pero hoy estoy tratandolo de hacer con excel 2011 en mac y m sale #NOMBRE?, por ams que le hago no pude.. les agradezco m ayuden..:( mi correo es elianak118@hotmail.com
Your method of explaining the whole thing in this piece of writing is truly pleasant, all
be able to effortlessly understand it, Thanks a lot.
MUY BUEN APORTE, GRACIAS POR COMPARTIR
Unquestionably believe that which you said.
Your favorite reason appeared to be on the web the simplest thing to be aware of.
I say to you, I certainly get irked while people consider worries that they plainly do not know about.
You managed to hit the nail upon the top as well as defined out the whole thing without having
side effect , people could take a signal. Will likely be
back to get more. Thanks
Muy útil, de antemano gracias!
Un codigo que todo el mundo lo usa.
Muy practico, gracias.
Muchas gracias, fijate que yo lo he usado en Excel, pero lo necesito en Access, gracias.
Muchas muchas gracias la verdad que me gusto mucho el programa te felicito
HOLA, PARA LOS QUE HICIERON FUNCIONAR LA FORMULA Y LUEGO DE UN RATO LA MAQUINA LES DA ERROR (#NOMBRE?) YO LO SOLUCIONE, HABILITANDO LOS MACROS DESDE CONFIGURACIÓN DEL CENTRO DE CONFIANZA (consultar ayuda en el programa utilizado y los guía paso a paso) LUEGO DE HABILITARLOS, HAY QUE CERRAR EL PROGRAMA Y VOLVER A ABRIRLO Y LISTO, YA FUNCIONAL NORMALMENTE LA FORMULA.-
Excelente… justo lo que buscaba.
EXCELENTE APORTE!! MUCHAS GRACIAS
Howdy, i read your blog occasionally and i own a similar
one and i was just wondering if you get a lot of spam responses?
If so how do you reduce it, any plugin or anything you can suggest?
I get so much lately it’s driving me insane so any assistance is very much appreciated.
QUE BUENA FUNCION, ME ENCANTO Y FACILITARA MUCHO MI TRABAJO
Gracias por la gran aportacion,.
Señor Gonzalo, muchísimas gracias por su labor tan generosa de compartir conocimiento.
Ya leí todos los comentarios en esta página y encontré que varias personas hicieron la misma pregunta:
Como hacer que la fórmula escriba 1.000.000 = «Un Millón DE pesos», en lugar de «Un millón pesos».
Sin embargo, en ningún lugar encontré que usted resolviera esta duda.
Muchas gracias, Jairo de Colombia
Gracias, me ha servido mucho!! muy clara tu explicacion
Gracias!
Que interesante que el post es del 2007 y muchos te estemos comentando en 2013, jaja
Otro aporte: en Excel 2007 hay que guardar el libro como «Habilitado para macros» (.XLSM) porque si lo guardas normal (.XLSX) se pierde el código y no se puede usar la función.
No cabe duda eres genial !
Me funcionó de maravilla
Gracias !!
DE MARAVILLA ERES EL MEJOR, SE PUEDE ADECUAR A CUALQUIER MONEDA LO PUDE HACER CON NUEVOS SOLES ACA EN PERU
Señor Gonzalo, muchísimas gracias por su labor tan generosa de compartir conocimiento.
Ya leí todos los comentarios en esta página y encontré que varias personas hicieron la misma pregunta:
Como hacer que la fórmula escriba 1.000.000 = “Un Millón DE pesos”, en lugar de “Un millón pesos”.
Sin embargo, en ningún lugar encontré que usted resolviera esta duda.
Muchas gracias, Jairo de Colombia
EXCELENTE PARA QUE APAREZCA 1 MILLÓN DE PESOS HAY QUE MODIFICAR LA MACRO EN SU ESTRUCTURA Y AGREGAR LA PALABRA «DE» EN «MILLÓN Y MILLONES.
GRACIAS POR COMPARTIR ESTE CONOCIMIENTO.
FALTA AGREGAR COMO GUARDAR ESA MACRO EN QUE FORMATO Y COMO PODER UTILIZARLA EN TODOS LOS LIBROS DE EXCEL PERO ES EXCELENTE. GRACIAS
Gracias Argelio, pero si fuese asi de sencillo, no hubiera preguntado. Si se hace lo que tu aconsejas, entonces en todas las instancias donde aparezca la palabra millón, saldrá «millón de», x ejemplo: 1250000= un millon de doscientos cincuenta mil. L q hay q hacer es agregar un nuevo «loop» para las excepciones donde se necesita «millon de». El problema es q no me acuerdo como se hace. Alguien puso una macro mejorada con ese loop, pero me dio muchos errores y no sirvió. Alguien ya arregló el problema?
Hola necesito hacer un macro pero tengo el 2013 como lo pueo hacer, necesito convertir los numeros en letras me podrian ayudar ???
como les va?
me gustaria que me dijeran una macro para que a una letra le corresponda un horario.
por ejemplo, si en B1 tengo N, en C1 que me devuelva 22:00/06:00
gracias.
se me olvido. es excel 2010
Muchas gracias, muy útil.
Muchisima gracias y en efecto solo el tuyo esta clarisimo y sobre todo que va paso por paso y con imagenes, mil bendiciones
Gracias Gonzalo.
De que, saludos
Hola saludos desde Venezuela, me gustaria saber si ese paso de conversion es posible para word
Excelente tu aporte.Me funciono de maravilla. Gracias
De verdad muy buen aporte si funciona, gracias.
GRACIAS AMIGO POR TU AYUDA
Mucha suerte, saludos
De lujo tu aporte esta muy funcional, sobre todo por que explicas la manera de aplicarlo a todos los archivos de Excel. Gracias!!!
Gracias muy util y facil la forma de transmitir la informacion. Rapido lo consegui!!!!
Gracias mil!!!
EXLENETE!!! gracias por la ayuda
Excelente! Sencillo de instalar, gracias mil por el aporte
EXCELENTE ME AYUDO Y SIRVIO MUCHO GRACIAS
excelente, mil gracias super chido
Excelente macro Saludos
Hola, como puedo quitar la palabra SON: y que solo aparezca la cantidad, muchas graacias por la ayuda, esta explicado excelentemente bien
Hola Nalleli. Borralo en el codigo
Gracias!! Todo muy claro,,, y funciona bien,
saludos
hola muy buena explicación, todo funciona menos con cantidades grandes como por ejemplo:
$2,794,410,069.25
me sale el siguiente error:
#¡VALOR!
ME PODRAN AYUDAR?
GILBERTO.
hola muy bueno tu aportación, pero en cantidades grandes no me sale los resultados, por ejemplo te doy un numero $2,794,410,069.25 , como resultado me sale lo siguiente:
#¡VALOR!
sabrán por que?
saludos.
MUY BIEN, EXCELENTE AYUDA.
Mis respetos Gonzalo_Conta, facil y bien explicado.
Excelente, Gonzalo, muchas gracias por la ayuda. espero poder corresponder sus aportaciones con otras tantas… aunque apenas estoy empezando con esto de la tecnologia…
super genial!! grazie!
Buen dia,
Yo encontré este que me parece muy bueno pero solo trabaja hasta 999.999,99, se puede mejorar para llegar a millones.
Gracias
‘————————————-
Public i
Function num2let(importe)
If importe = 1 Then Final = » peso» Else Final = » pesos»
If importe > 999 Then num2let = num2letras(Int(importe / 1000)) + » mil »
num2let = num2let + num2letras(importe – Int(importe / 1000) * 1000) + Final
If Int(importe) = 0 Then num2let = «cero pesos»
If importe Int(importe) Then
num2let = num2let + » con » + num2letras((importe – Int(importe)) * 100) + » centavos.»
End If
End Function
Function num2letras(importe)
‘Pasa de numero a letras, importes entre 0 y 999
‘Centena —————————————-
centena2 = Int(importe / 100)
Select Case centena2
Case 0: num2letras = «»
Case 1: num2letras = «cien»
Case 2: num2letras = «doscientos»
Case 3: num2letras = «trescientos»
Case 4: num2letras = «cuatrocientos»
Case 5: num2letras = «quinientos»
Case 6: num2letras = «seiscientos»
Case 7: num2letras = «setecientos»
Case 8: num2letras = «ochocientos»
Case 9: num2letras = «novecientos»
End Select
‘Decena ———————————————-
decena2 = Int((importe – centena2 * 100) / 10)
If centena2 = 1 Then num2letras = num2letras + «to»
Select Case decena2
Case 1: num2letras = num2letras + » diez»
Case 2: num2letras = num2letras + » veinte»
Case 3: num2letras = num2letras + » treinta»
Case 4: num2letras = num2letras + » cuarenta»
Case 5: num2letras = num2letras + » cincuenta»
Case 6: num2letras = num2letras + » sesenta»
Case 7: num2letras = num2letras + » setenta»
Case 8: num2letras = num2letras + » ochenta»
Case 9: num2letras = num2letras + » noventa»
End Select
‘Unidad ———————————————-
unidad2 = Int((importe – centena2 * 100 – decena2 * 10))
If decena2 = 0 Then
‘num2letras = Mid(num2letras, 1, Len(num2letras) – 6)
Select Case unidad2
‘Case 0: num2letras = num2letras + » cero»
Case 1: num2letras = num2letras + » un»
Case 2: num2letras = num2letras + » dos»
Case 3: num2letras = num2letras + » tres»
Case 4: num2letras = num2letras + » cuatro»
Case 5: num2letras = num2letras + » cinco»
Case 6: num2letras = num2letras + » seis»
Case 7: num2letras = num2letras + » siete»
Case 8: num2letras = num2letras + » ocho»
Case 9: num2letras = num2letras + » nueve»
End Select
End If
If decena2 = 1 Then
num2letras = Mid(num2letras, 1, Len(num2letras) – 4)
Select Case unidad2
Case 0: num2letras = num2letras + » diez»
Case 1: num2letras = num2letras + » once»
Case 2: num2letras = num2letras + » doce»
Case 3: num2letras = num2letras + » trece»
Case 4: num2letras = num2letras + » catorce»
Case 5: num2letras = num2letras + » quince»
Case 6: num2letras = num2letras + » diceciseis»
Case 7: num2letras = num2letras + » diecisiete»
Case 8: num2letras = num2letras + » dieciocho»
Case 9: num2letras = num2letras + » diecinueve»
End Select
End If
If decena2 = 2 Then
If unidad2 0 Then num2letras = Mid(num2letras, 1, Len(num2letras) – 6)
Select Case unidad2
Case 1: num2letras = num2letras + » veintiun»
Case 2: num2letras = num2letras + » veintidos»
Case 3: num2letras = num2letras + » veintitres»
Case 4: num2letras = num2letras + » veinticuatro»
Case 5: num2letras = num2letras + » veinticinco»
Case 6: num2letras = num2letras + » veintiseis»
Case 7: num2letras = num2letras + » veintisiete»
Case 8: num2letras = num2letras + » veintiocho»
Case 9: num2letras = num2letras + » veintinueve»
End Select
End If
If decena2 > 2 Then
Select Case unidad2
Case 1: num2letras = num2letras + » y un»
Case 2: num2letras = num2letras + » y dos»
Case 3: num2letras = num2letras + » y tres»
Case 4: num2letras = num2letras + » y cuatro»
Case 5: num2letras = num2letras + » y cinco»
Case 6: num2letras = num2letras + » y seis»
Case 7: num2letras = num2letras + » y siete»
Case 8: num2letras = num2letras + » y ocho»
Case 9: num2letras = num2letras + » y nueve»
End Select
End If
If importe = 100 Then num2letras = «cien»
End Function
De nuevo yo, disculpen pero me apasione buscando y logre dar con lo que necesitaba.
Muchas gracias a su autor http://www.elguille.info.
la formula queda como numero2letra.
Option Explicit
Option Compare Text
‘Declaradas a nivel de módulo
Dim unidad(0 To 9) As String
Dim decena(0 To 9) As String
Dim centena(0 To 10) As String
Dim deci(0 To 9) As String
Dim otros(0 To 15) As String
Private m_Sexo1 As String
Private m_Sexo2 As String
Private m_LenSexo1 As Long
Public Enum eSexo
Femenino ‘= 0
Masculino ‘= 1
End Enum
Public Function Numero2Letra(ByVal strNum As String, _
Optional ByVal Lo As Long = 0&, _
Optional ByVal NumDecimales As Long = 2&, _
Optional ByVal sMoneda As String = «», _
Optional ByVal sCentimos As String = «», _
Optional ByVal SexoMoneda As eSexo = Femenino, _
Optional ByVal SexoCentimos As eSexo = Masculino) As String
Dim i As Long
Dim iHayDecimal As Long ‘Posición del signo decimal
Dim sDecimal As String ‘Signo decimal a usar
Dim sDecimalNo As String ‘Signo no decimal
Dim sEntero As String
Dim sFraccion As String
Dim fFraccion As Single
Dim sNumero As String
Static SexoAntMoneda As eSexo
Static SexoAntCentimos As eSexo
Dim sSexoCents As String
‘
‘ Para tener en cuenta el sexo de los céntimos (20/Jul/00)
‘ m_Sexo2 se usa para indicar el plural de las monedas,
‘ sSexoCents sustituirá a esa variable cuando se calculen los céntimos
If SexoCentimos = Femenino Then
sSexoCents = «as»
Else
sSexoCents = «os»
End If
‘
‘Dependiendo del «sexo» indicado, usar las terminaciones
If SexoMoneda = Femenino Then
m_Sexo1 = «o»
m_Sexo2 = «os»
Else
m_Sexo1 = «a»
m_Sexo2 = «as»
End If
‘por si se cambia en el trascurso el sexo de la moneda
If SexoMoneda SexoAntMoneda Then
unidad(1) = «» ‘ Aquí ponía: unidad(2) = «» (08/Sep/01)
SexoAntMoneda = SexoMoneda
End If
m_LenSexo1 = Len(m_Sexo1)
‘Si se especifica, se usarán
sMoneda = Trim$(sMoneda)
If Len(Trim$(sMoneda)) Then
sMoneda = » » & sMoneda & » »
Else
sMoneda = » »
End If
sCentimos = Trim$(sCentimos)
If Len(Trim$(sCentimos)) Then
sCentimos = » » & sCentimos & » »
Else
sCentimos = » »
End If
‘Si no se especifica el ancho…
‘
If Lo Then
sNumero = Space$(Lo)
Else
sNumero = «»
End If
‘Comprobar el signo decimal y devolver los adecuados a la config. regional
strNum = ConvDecimal(strNum, sDecimal, sDecimalNo)
‘Comprobar si tiene decimales
iHayDecimal = InStr(strNum, sDecimal)
If iHayDecimal Then
sEntero = Left$(strNum, iHayDecimal – 1)
sFraccion = Mid$(strNum, iHayDecimal + 1) & String$(NumDecimales, «0»)
‘
sFraccion = Left$(sFraccion, NumDecimales)
‘
fFraccion = VBA.Val(sFraccion)
‘ Si no hay decimales… no agregar nada…
If fFraccion < 1 Then
If Len(Trim$(sMoneda)) Then
sMoneda = Pluralizar(sNumero, sMoneda)
End If
strNum = RTrim$(UnNumero(sEntero, m_Sexo1) & sMoneda)
If Lo Then
LSet sNumero = strNum
Else
sNumero = strNum
End If
Numero2Letra = sNumero
Exit Function
End If
If Len(Trim$(sMoneda)) Then
sMoneda = Pluralizar(sEntero, sMoneda)
End If
sEntero = UnNumero(sEntero, m_Sexo1)
If Len(Trim$(sCentimos)) Then
sCentimos = Pluralizar(sFraccion, sCentimos)
End If
m_Sexo2 = sSexoCents
If SexoCentimos = Masculino Then
sFraccion = UnNumero(sFraccion, "")
Else
sFraccion = UnNumero(sFraccion, "a")
End If
'
strNum = sEntero & sMoneda & "Pesos M/Legal" & " con " & sFraccion & sCentimos & "Centavos "
If Lo Then
LSet sNumero = RTrim$(strNum)
Else
sNumero = RTrim$(strNum)
End If
Numero2Letra = sNumero
Else
If Len(Trim$(sMoneda)) Then
sMoneda = Pluralizar(strNum, sMoneda)
End If
strNum = RTrim$(UnNumero(strNum, m_Sexo1) & sMoneda) & " Pesos M/Legal"
If Lo Then
LSet sNumero = strNum
Else
sNumero = strNum
End If
Numero2Letra = sNumero
End If
End Function
Private Function UnNumero(ByVal strNum As String, ByVal Sexo1 As String) As String
'———————————————————-
'Esta es la rutina principal (10/Jul/97)
'Está separada para poder actuar con decimales
'———————————————————-
Dim dblNumero As Double
Dim Negativo As Boolean
Dim L As Integer
Dim Uno As Boolean
Dim Millon As Boolean
Dim Millones As Boolean
Dim vez As Long
Dim MaxVez As Long
Dim k As Long
Dim strQ As String
Dim strB As String
Dim strU As String
Dim strD As String
Dim strC As String
Dim iA As Long
'
Dim strN() As String
Dim Sexo1Ant As String
'Si se amplia este valor… no se manipularán bien los números
Const cAncho = 12
Const cGrupos = cAncho \ 3
'Por si se especifica el sexo, para el caso de los decimales
'que siempre será masculino
Sexo1Ant = m_Sexo1
m_Sexo1 = Sexo1
m_LenSexo1 = Len(m_Sexo1)
'
' idea aportada por Harvey Triana
' para no tener que estar reinicializando continuamente los arrays
'
' Se ve que lo anterior fallaba si se usaba varias veces seguidas (05/Mar/99)
If unidad(1) «un» & Sexo1 Then
InicializarArrays
End If
‘
‘ If m_Sexo1 Sexo1Ant Then
‘ unidad(2) = «»
‘ End If
‘ ‘
‘ If unidad(2) «dos» Then
‘ InicializarArrays
‘ End If
‘
‘Si se produce un error que se pare el mundo!!!
On Local Error GoTo 0
If Len(strNum) = 0 Then
strNum = «0»
End If
dblNumero = Abs(CDbl(strNum))
Negativo = (dblNumero CDbl(strNum))
strNum = LTrim$(RTrim$(Str$(dblNumero)))
L = Len(strNum)
If dblNumero < 1 Then
UnNumero = "cero"
Exit Function
End If
'
Uno = True
Millon = False
Millones = False
If L 999999 Then Millon = True
If dblNumero > 1999999 Then Millones = True
strB = «»
strQ = strNum
vez = 0
ReDim strN(1 To cGrupos)
strQ = Right$(String$(cAncho, «0») & strNum, cAncho)
For k = Len(strQ) To 1 Step -3
vez = vez + 1
strN(vez) = Mid$(strQ, k – 2, 3)
Next
MaxVez = cGrupos
For k = cGrupos To 1 Step -1
If strN(k) = «000» Then
MaxVez = MaxVez – 1
Else
Exit For
End If
Next
For vez = 1 To MaxVez
strU = «»
strD = «»
strC = «»
strNum = strN(vez)
L = Len(strNum)
k = VBA.Val(Right$(strNum, 2))
If Right$(strNum, 1) = «0» Then
k = k \ 10
strD = decena(k)
ElseIf k > 10 And k 0 Then
k = VBA.Val(Mid$(strNum, L – 1, 1))
strD = deci(k)
End If
End If
‘—Parche de Esteve
If L – 2 > 0 Then
k = VBA.Val(Mid$(strNum, L – 2, 1))
‘Con esto funcionará bien el 100100, por ejemplo…
If k = 1 Then ‘Parche
If VBA.Val(strNum) = 100 Then ‘Parche
k = 10 ‘Parche
End If ‘Parche
End If
strC = centena(k) & » »
End If
‘——
If strU = «uno» And Left$(strB, 4) = » mil» Then strU = «»
strB = strC & strD & strU & » » & strB
If (vez = 1 Or vez = 3) Then
If strN(vez + 1) «000» Then strB = » mil » & strB
End If
If vez = 2 And Millon Then
If Millones Then
strB = » millones » & strB
Else
strB = «un millón » & strB
End If
End If
Next
strB = Trim$(strB)
If Right$(strB, 3) = «uno» Then
strB = Left$(strB, Len(strB) – 1) & m_Sexo1 ‘»a»
End If
Do ‘Quitar los espacios dobles que haya por medio
iA = InStr(strB, » «)
If iA = 0 Then Exit Do
strB = Left$(strB, iA – 1) & Mid$(strB, iA + 1)
Loop
‘
If Left$(strB, 5 + m_LenSexo1) = «un» & m_Sexo1 & » un» Then
strB = Mid$(strB, 4 + m_LenSexo1)
End If
‘—Nueva comparación (01:16 25/Ene/99)
If Left$(strB, 5) = «un un» Then
strB = Mid$(strB, 4)
End If
‘
‘ Comprobar sólo si se especifica «un* mil «, (05/Mar/99)
‘ no «un* mil» ya que puede ser «un* millón»
‘If Left$(strB, 6 + m_LenSexo1) = «un» & m_Sexo1 & » mil» Then
If Left$(strB, 7 + m_LenSexo1) = «un» & m_Sexo1 & » mil » Then
strB = Mid$(strB, 4 + m_LenSexo1)
‘ Puede que el importe sea sólo «un mil» o «una mil» (19/Ago/00)
ElseIf strB = «un» & m_Sexo1 & » mil» Then
strB = Mid$(strB, 4 + m_LenSexo1)
End If
‘
‘—Nueva comparación (15:11 25/Ene/99)
‘If Left$(strB, 6) = «un mil» Then
‘ Que debe estar así, para que no quite «un millón» (05/Mar/99)
If Left$(strB, 7) = «un mil » Then
strB = Mid$(strB, 4)
End If
‘
If Right$(strB, 15 + m_LenSexo1) «millones mil un» & m_Sexo1 Then
iA = InStr(strB, «millones mil un» & m_Sexo1)
If iA Then strB = Left$(strB, iA + 8) & Mid$(strB, iA + 13)
End If
‘—Nueva comparación (15:13 25/Ene/99)
If Right$(strB, 15) «millones mil un» Then
iA = InStr(strB, «millones mil un»)
If iA Then strB = Left$(strB, iA + 8) + Mid$(strB, iA + 13)
End If
‘
‘ De algo sirve que la gente pruebe las rutinas… (05/Mar/99)
‘ ¡¡¡ Gracias gente !!!
If Millones Then
‘ Comprobación de -as ??? millones
‘ convertir en -os ??? millones
‘ Pero sólo si el sexo es femenino
If m_Sexo1 = «a» Then
‘If (strB Like «*as * millones*») Then
‘ Usar un bucle Do por si hay varias coincidencias (07/Dic/00)
Do While (strB Like «*as * millones*»)
‘ Buscar la primera terminación «as » y cambiar por «os »
k = InStr(strB, «as «)
If k Then
Mid$(strB, k) = «os »
End If
Loop
‘End If
‘ La comparación anterior no funciona con x00 millones (30/Jun/00)
‘If (strB Like «*as millones*») Then
‘ Usar un bucle Do por si hay varias coincidencias (07/Dic/00)
Do While (strB Like «*as millones*»)
‘ Buscar la primera terminación «as » y cambiar por «os »
k = InStr(strB, «as millones»)
If k Then
Mid$(strB, k) = «os millones»
End If
Loop
‘End If
‘
‘
‘——————————————————————
‘ Comprobar si dice algo así …una millones (08/Jul/00)
‘ Por ejemplo en 821.xxx.xxx decia ochocientos veintiuna millones
‘——————————————————————
k = InStr(strB, «una mill»)
If k Then
strB = Left$(strB, k + 1) & Mid$(strB, k + 3)
End If
‘
‘
End If
End If
‘
‘
‘————————————————————————–
‘ Cambiar los veintiun por veintiún, etc por sus acentuadas (08/Jul/00)
Do
k = InStr(strB, «veintiun «)
If k Then
Mid$(strB, k) = «veintiún »
End If
Loop While k
‘ El veintidos creo que nunca lo he acentuado… (08/Jul/00)
‘ pero en la enciclopedia consultada lo acentúa
Do
k = InStr(strB, «veintidos «)
If k Then
Mid$(strB, k) = «veintidós »
End If
Loop While k
Do
k = InStr(strB, «veintitres «)
If k Then
Mid$(strB, k) = «veintitrés »
End If
Loop While k
Do
k = InStr(strB, «veintiseis «)
If k Then
Mid$(strB, k) = «veintiséis »
End If
Loop While k
‘————————————————————————–
‘
‘
If Right$(strB, 6) = «ciento» Then
strB = Left$(strB, Len(strB) – 2)
End If
If Negativo Then strB = «menos » & strB
UnNumero = Trim$(strB)
‘ Restablecer el valor anterior
m_Sexo1 = Sexo1Ant
m_LenSexo1 = Len(m_Sexo1)
End Function
Private Sub InicializarArrays()
‘Asignar los valores
unidad(1) = «Un» & m_Sexo1
unidad(2) = «Dos»
unidad(3) = «Tres»
unidad(4) = «Cuatro»
unidad(5) = «Cinco»
unidad(6) = «Seis»
unidad(7) = «Siete»
unidad(8) = «Ocho»
unidad(9) = «Nueve»
‘
decena(1) = «Diez»
decena(2) = «Veinte»
decena(3) = «Treinta»
decena(4) = «Cuarenta»
decena(5) = «Cincuenta»
decena(6) = «Sesenta»
decena(7) = «Setenta»
decena(8) = «Ochenta»
decena(9) = «Noventa»
‘
centena(1) = «Ciento»
centena(2) = «Doscient» & m_Sexo2
centena(3) = «Trescient» & m_Sexo2
centena(4) = «Cuatrocient» & m_Sexo2
centena(5) = «Quinient» & m_Sexo2
centena(6) = «Seiscient» & m_Sexo2
centena(7) = «Setecient» & m_Sexo2
centena(8) = «Ochocient» & m_Sexo2
centena(9) = «Novecient» & m_Sexo2
centena(10) = «Cien» ‘Parche
‘
deci(1) = «Dieci»
deci(2) = «Veinti»
deci(3) = «Treinta y »
deci(4) = «Cuarenta y »
deci(5) = «Cincuenta y »
deci(6) = «Sesenta y »
deci(7) = «Setenta y »
deci(8) = «Ochenta y »
deci(9) = «Noventa y »
‘
otros(1) = «1»
otros(2) = «2»
otros(3) = «3»
otros(4) = «4»
otros(5) = «5»
otros(6) = «6»
otros(7) = «7»
otros(8) = «8»
otros(9) = «9»
otros(10) = «10»
otros(11) = «Once»
otros(12) = «Doce»
otros(13) = «Trece»
otros(14) = «Catorce»
otros(15) = «Quince»
End Sub
Private Sub Class_Initialize()
m_Sexo1 = «o»
m_Sexo2 = «os»
End Sub
Public Function Pluralizar( _
ByVal sNumero As String, _
ByVal sMoneda As String, _
Optional ByVal bCadaPalabra As Boolean = False) As String
‘————————————————————————–
‘ Pluraliza la moneda, si el valor de número es distinto de uno
‘
‘ Ahora es una función pública (07/Jul/00)
‘
‘ Parámetros:
‘ sNumero Importe, para saber si hay que pluralizar o no
‘ sMoneda Cadena con la palabra a pluralizar
‘ bCadaPalabra Si se pluralizan todas las palabras (08/Jul/00)
‘————————————————————————–
Dim dblTotal As Double
Dim sTmp As String
Dim i As Long
If Len(Trim$(sMoneda)) Then
‘ He quitado el Val (08/Jul/00)
‘dblTotal = Val(sNumero)
‘
‘ Si entra una cadena vacia, da error (08/Jul/00)
If Len(sNumero) = 0 Then
sNumero = «0»
End If
dblTotal = (sNumero)
‘
If dblTotal 1# Then
sMoneda = Trim$(sMoneda)
‘ Si se pluralizan todas las palabras (08/Jul/00)
If bCadaPalabra Then
sMoneda = sMoneda & » »
sTmp = «»
For i = 1 To Len(sMoneda)
If Mid$(sMoneda, i, 1) = » » Then
‘ pluralizar
If InStr(«aeiou», Right$(sTmp, 1)) Then
sTmp = sTmp & «s»
Else
sTmp = sTmp & «es»
End If
End If
sTmp = sTmp & Mid$(sMoneda, i, 1)
Next
sMoneda = » » & Trim$(sTmp) & » »
Else
If InStr(«aeiou», Right$(sMoneda, 1)) Then
sMoneda = » » & sMoneda & «s »
Else
sMoneda = » » & sMoneda & «es »
End If
End If
End If
End If
Pluralizar = sMoneda
End Function
Public Function ConvDecimal(ByVal strNum As String, _
Optional ByRef sDecimal As String = «,», _
Optional ByRef sDecimalNo As String = «.») As String
‘Attribute ConvDecimal.VB_Description = «Si la cadena contiene decimales, convertirlo al adecuado para usar con Val»
‘Attribute ConvDecimal.VB_HelpID = 21080
‘ Asigna el signo decimal adecuado (o lo intenta) (10/Ene/99)
‘ Devuelve una cadena con el signo decimal del sistema
Dim sNumero As String
Dim i As Long
Dim j As Long
On Error Resume Next ‘ Si se produce un error, continuar (07/Jul/00)
‘ Averiguar el signo decimal
sNumero = Format$(25.5, «#.#»)
If InStr(sNumero, «.») Then
sDecimal = «.»
sDecimalNo = «,»
Else
sDecimal = «,»
sDecimalNo = «.»
End If
strNum = Trim$(strNum)
If Left$(strNum, 1) = sDecimalNo Then
Mid$(strNum, 1, 1) = sDecimal
End If
‘ Si el número introducido contiene signos no decimales
j = 0
i = 1
Do
i = InStr(i, strNum, sDecimalNo)
If i Then
j = j + 1
i = i + 1
End If
Loop While i
If j = 1 Then
‘ cambiar ese símbolo por un espacio, si sólo hay uno de esos signos
i = InStr(strNum, sDecimalNo)
If i Then
If InStr(strNum, sDecimal) Then
Mid$(strNum, i, 1) = » »
Else
Mid$(strNum, i, 1) = sDecimal
End If
End If
Else
‘En caso de que tenga más de uno de estos símbolos
‘convertirlos de manera adecuada.
‘Por ejemplo:
‘si el signo decimal es la coma:
‘ 1,250.45 sería 1.250,45 y quedaría en 1250,45
‘si el signo decimal es el punto:
‘ 1.250,45 sería 1,250.45 y quedaría en 1250.45
‘
‘Aunque no se arreglará un número erróneo:
‘si el signo decimal es la coma:
‘ 1,250,45 será lo mismo que 1,25
‘ 12,500.25 será lo mismo que 12,50
‘si el signo decimal es el punto:
‘ 1.250.45 será lo mismo que 1.25
‘ 12.500,25 será lo mismo que 12.50
‘
i = 1
Do
i = InStr(i, strNum, sDecimalNo)
If i Then
j = j – 1
If j = 0 Then
Mid$(strNum, i, 1) = sDecimal
Else
Mid$(strNum, i, 1) = » »
End If
i = i + 1
End If
Loop While i
End If
j = 0
‘ Quitar los espacios que haya por medio
Do
i = InStr(strNum, » «)
If i = 0 Then Exit Do
strNum = Left$(strNum, i – 1) & Mid$(strNum, i + 1)
Loop
ConvDecimal = strNum
Err = 0
End Function
EL COMENTARIO ORIGINAL SE EXPLICA MUY BIEN X LAS GRÁFICAS!!! MUCHAS GRACIAS!!!
muy util tu macro, muchas gracias
Muchas gracias me sirvió mucho
MUCHISISISISIMAS GRACIAS, TU INFORMACION ME FUE DE MUCHA UTILIDAD
Un mil gracias, me ha servido mucho te agradezco el detalle y el tiempo para ayudarnos
EXCELENTE!!! LA EXPLICACIÓN MUY ENTENDIBLE Y ES UNA EXCELENTE AYUDA PARA EL TRABAJO EN EXCEL. MUCHAS GRACIAS
MUCHAS GRACIAS POR COMPARTIR ESTA INFORMACION, ES DE MUCHA AYUDA 🙂
ME SIRVIO BASTANTE
Muchas gracias Gonzalo-conta, muy útil la información.
muchas gracias. me sirvio. saludos
Muchisimas gracias…excelente ayuda!!!
¡Gracias amigo! Excelente aporte, muy claro (más claro no se puede) y totalmente desinteresado, ¡saludos!
Muy bueno tu aporte, pero quisiera que me ayudaras a cambiar a bolivares y los decimales a centimos?
Encontre la solución a mi pregunta¡¡¡ igual gracias tuve que modificar una que otras cosas de pesos a bolivares y de centavos a céntimos espero sea de ayuda:
Function BolivaresCTMS(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentimos 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)
lyCentimos = (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
BolivaresCTMS = lcBloque
Case 2
BolivaresCTMS = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & BolivaresCTMS
Case 3
BolivaresCTMS = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & BolivaresCTMS
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
BolivaresCTMS = «SON: (» & BolivaresCTMS & IIf(tyCantidad > 1, » BOLIVARES «, » BOLIVARES «) & Format(Str(lyCentimos), «00») & «/100 CTMS)»
End Function
excelente herramienta, muchas gracias por estas aportaciones.
excelente herramienta, muchas gracias por estas aportaciones.
Gonzalo, necesito convertir letras a números, si existe una formula para excel, por favor comunicate conmigo, no soy contador, es para algo más simple, sólo necesito hacerlo vía mail. Te dejo abajo mi correo. Soy maestra, por ello deseo contactarme contigo, para poder aplicarlo con niños, no soy experta en computación.
Espero tu respuesta, mil gracias.
psss.. para los que no les permite guardar la macro y cada que la abren les aparece #¿NOMBRE?, en la celda donde tendría que aparece la cantidad en letras, simplemente Habiliten las Macros y bajen la seguridad de Excel, si no saben como en gooble escriban como habilitar macros en Excel y la versión que usen y como bajar el nivel de seguridad de exceln y la versión que este usando, yo tengo office 2007 y la macro me funciona perfecto, saludos
Felicidades por tu trabajo me fue muy útil, no me explico porque no existe una función que haga esto, solo lo hace en Tailandés, ¿porque Microsoft no hace una que se acople a cada país?,. Copié el código y funciona bien, le quité la palabra «SON» y los paréntesis al final en la variable PesosMN y quedó perfecta para lo que necesito. Muchas gracias.
Gracias Brother… me ahorraste unas cuantas horas!
Excelente. Funcionó a la primera. Gracias.
Gracias funciono muy bien. saludos
EXCELENTE, FUNCIONA DE DIEZ… TE FELICITO, MUY BUEN APORTE.-
me sirvió de mucho! gracias
Gonzalo; nuevamente molestandote, me urge una formula para convertir letras a números, si es de manera aleatoria mejor, esto es que deseo aplicarlo en la escuela, con pequeños de 2°, a algunos no les gustan los números y a otros sí pero se les dificulta la lectura, mi idea es que parezca magicamente, afortunadamente tengo un proyector y eso puede ayudar, estoy muy interesada en apoyar a mis pequeños alumnos, por favor si alguien lo sabe se los agradeceré muchisimo. El que usan aquí ciertamente no es dificil de usar y me ha sido útil y lo agradezco, pero ciertamente necesito también UNA FORMULA QUE EN EXCEL CONVIERTA LAS LETRAS A NÚMEROS Y SOBRE TODO QUE SEA DE MANERA ALEATORIA. GRACIAS A QUIEN PUEDA APORTAR ALGO EN FAVOR DE LA EDUCACIÓN DE UNOS 30 PEQUEÑOS.
NUEVOS HORIZONTES.
Hola Anónimo, Realiza lo siguiente en una hoja de Excel:
1.- En la celda B5 empieza a poner las letras de la A a la Z, hacia a bajo.
2.- En la C5, pones del numero el numero que quieres que corresponda a la letra de la columna B.
3.- En la columan D repites la informacion que tienes en la columna B.
4.- En la celda B2 pon la siguiente formula =BUSCARV(ALEATORIO.ENTRE(1,25),C5:D29,2,0).
5.- En la C2 pon la siguiente formula =BUSCARV(B2,B5:C29,2,0).
Para cambiar los valores presiona F9
Te debe quedar de la siguiente forma http://i159.photobucket.com/albums/t126/gchable/excel.jpg.
MUCHAS GRACIAS POR TU INFORMACIÓN SE TE AGRADECE DE CORAZON
EXCELENTE EXCELENTE MIL Y MIL GRACIAS
HOLA A TODOS:
TENGO EL PROBLEMA DE LOS TEXTOS PARA CUANDO LAS CANTIDADES REBASAN LOS MILES DE MILLONES.
ALGUIEN YA LO SOLUCIONO?
LES AGRADECERIA LA INFORMACION.
GRACIAS.
mucha graciass por la ayuda:)fue de mucha ayuda…
Gracias Gonzalo, la formula funciona pero no es lo que yo esperaba, pienso que supe explicarme, intentaré ahora hacerlo; mi idea es que si yo le pongo un número a cada letra ese número cambie y que cada letra quede como una constante, sin cambiar, únicamente los números, por ejemplo, si yo le pongo el número 5 a la letra A y el 14 a la X y el 29 a la D entonces al aplicar la formula las letras permanecieran constantes y los números cambiaran, por ejemplo la A tuviera el número 24, la X el 3 la D el 8 y aspi, que pudieran cambiar, además sí esto fuera posible de manera horizontal sería mucho mejor para mí, ya que es la manera en que usualmente escribimos. De todas formas utilizaré la formula como una entradita con los pequeños, y estaré pendiente de mi correo para checar tu respuesta, si lo que solicito no es posible, de todas maneras mil gracias, yo tengo en cuenta que ya me ayudaste mucho, un gran saludo y felicidades por tu página que veo que a muchas personas han podido resolver sus problemas de trabajo y tareas aqui.
De nuevo, mil gracias.
Nuevos horizontes.
MUCHAS GRACIAS MUY PRACTICO, ME SIRVIO MUCHO ESTE DOCUMENTO
GRACIAS POR TU APORTACIÓN ME HA SERVIDO ENORME
Exelente te agradesco muchisimo Gonzalo_Conta por esta gran aportacion
estrecho tu mano y te deseo lo mejor
buenas tardes la formaula esta super solo que me piden que le quite la palabra SON para pesos mexicanos me pueden decir como hacerlo.
gracias
Hola Elizabeth,
En el codigo que copiaste busca la palabra SON al final, borrala y listo.
Muchas gracias Gonzalo por esta funcion. Excelente codigo !! Adjunto algunos cambios necesarios para poder manejar cantidades como las siguientes:
1021.25 deberia de escribir «Mil veintiuno con 25/100» en lugar de «UN mil VEINTIUN con 25/100» ya que el UN no es necesario en cantidades entre 1000 y 1999.99 y el VEINTIUN al final deberia de ser VEINTIUNO.
531.25 deberia de escribir «Quinientos treinta y uno» en lugar de «Quinientos treinta y UN»
Este codigo corrige esos problemas; solo hay que reemplazar el primer CASE del codigo por este:
Select Case I
Case 1
lcBloque = » » & IIf((lnNumeroBloques = 1 And lnDigito = 1), (laUnidades(lnDigito – 1) & «O»), (laUnidades(lnDigito – 1)))
If tyCantidad > 1000 And tyCantidad < 2000 And lyCantidad = 1 Then
lcBloque = ""
End If
lnPrimerDigito = lnDigito
Case 2
If lnDigito 1), (laUnidades((lnDigito * 10) + lnPrimerDigito – 1) & «O»), (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
Gracias de nuevo !!
Buena Noche.
LESTER… Oye mi pana podrias copiarlo completo; es decir desde el: Function PesosMN(tyCantidad As Currency) As String … hasta el … End Function.
Claro esta adjuntando los cambios que sugieres para poder manejar cantidades como: 1021.25.
Lester, buen aporte solo que no se donde hacer el cambio o no funciona, me sale error de compilacion, podrias poner completo el texto desde el inicio hasta el final ya que lo hayas probado.
muchas gracias.
fue deveras de gran ayuda
muchas gracias 🙂 me sirvió de mucho
Alguien podria crear una macro que cuando entro un numero de la forma a.b (texto)lo deje de la forma a,b(numero)
Lo que deseo es, si ingreso en una celda 6.2 lo pase a 6,2 , esto se puede hacer con la funcion sustituir pero necesito de una columna auxiliar , me gustaria que opere en el momento de ingresar la informacion…gracias
Hola Gonzalo, que tal! Espero te encuentre bien. Sabes, no quiero molestarte, se que estas bastante ocupado, pero si tienes oportunidad te agradecería si me puedes ayudar a solucionar un detalle. Tengo una columna en excel, con 350 correos-e, necesito agregar más en otra columna. ¿Como puedo hacer para, al final comparar A vs B e identificar si hubo correos duplicados y removerlos automáticamente. Me conformo con que me diga cuáles son los repetidos.
Te agradezco mucho de antemano tu ayuda.
DTB
Saludos!
Jesus
Gracias por la ayuda fue genial
muy bien exelente macro!!
PERFECTO MUCHISIMAS GRACIAS, TODO BIEN
QUISIERA SABER SI ESTE CODIGO LO PUEDEN MODIFICAR PARA LA MONEDA DE GUATEMALA 🙂 LES DEJO MI CORREO willyan170@hotmail.com
Buen dia, sus comentarios son las mejores repuestas en toda la wed pero soy de Ecuador y acá se maneja en dolares como me pueden ayudar con esto. gracias
COMO LE HAGO PARA QUE NO APAREZCA SON
copia esto
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 = » » & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
no quiero que salga son en la factura
Hola Diana, a mi me sucede lo mismo no quiero que aparezca SON, por fa, si alguien te responde pasame el tip , te lo voy a agradecer mucho.
Copia Esto
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 = » » & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
CREO QUE AGRADECIMIENTOS NO TE FALTAN MAS SIN EMBARGO GRACIAS POR FACILITARME MI FACTURACION
gracias me funciono muy bien , eres un fregonaso
Excelente, eres un ejemplo!!!!
Excelente todo perfecto
Gracias.
gracias excelente si me sirvió
Excelente aporte, se te agradece por hacernos el trabajo mas liviano y por compartir tu conocimiento. saludos……
Buenas Tardes agradezco, si tienen el macro de convertir numeros a letras en pesos colombianos.
Quedo atendo 😀
Excelente!!!!!
Excelente explicación, Gracias Infinitas!!!
Compadre, muchas gracias… le hice una pequeña modificación, para quitarle el Son, pesos y el oo/100)… solo lo deje con las letras y me quedó perfecto… muchas gracias, fue la mejor que encontré.
Vi que algunos no quieren que aparezca el son, solo tienen que borrar unas cosas:
En la penultima fila, dice lo siguiente:
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100
Borren el SON:( todo lo que esta en comillas y dejen un solo espacio
PesosMN = » » & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100
Lo mismo si quieren borrar pesos u otras cosas… yo lo deje solo con las letras sin SON, pesos ni nada y quedo así
PesosMN = » » & PesosMN & IIf(tyCantidad > 1, » «, » PESO «) & Format(Str(lyCentavos), » «) & » »
por ende, donde el valor sea $59.425.-
Me muestra según formula: cincuenta y nueve mil cuatrocuentos veinticinco
espero les sirva… y gracias a gonzalo_conta que sin su ejemplo no lo hubiera hecho nunca.
miles y miles de gracias!!!!!! nunca habia podido hacerlo lo explicas de lujo…
MIL GRACIAS!
Muchas gracias por tu aporte, muy bueno, hice todos los paso y me da correcto pero en pesos?, lo malo es que quiero cambiarlo a dolares y quitarle la palabra son pero no puedo al momento de cambiar y poner la formula en excel me da ERROR ASI: #¿NOMBRE? como puedo cambiar por favor alguien puede ayudarme??
Creo que solo cambiando, del penúltimo renglón…
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » PESOS «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
a…
PesosMN = «SON: (» & PesosMN & IIf(tyCantidad > 1, » DOLARES «, » DOLAR «) & Format(Str(lyCentavos), «00») & «/100 M.N.)»
End Function
Muchas me sirvió mucho
me funciono a la perfección tal cual en excel 2007
GRACIAS……………
perfecta tu explicación sobre esta macro se te agradece
Hola funciona perfectamente agradezco la informacion
Muchas Gracia, es de muy buena ayuda. que tengas un exceente día…
me sirvio muchissimo gracias infinitas y en los comentarios resolvi algunas dudas me tarde pero valio la pena ojala puedas leer mi comentario
saludos!!!!
Leído. Salusos
impresionante la función de esta formula realmente mis felicitaciones, mas sin embargo tengo un problema que a continuación te explico y en el cual te agradecería mucho si me pudieses ayudar..
yo trabajo en una empresa importadora y exportadora en la cual la moneda que toman como referencia es el dolar, ya supe como modificar esta parte para el resultado final, solo que no se si me puedas ayudar en cambiar el formato de resultado de la cantidad que arroja la formula por ejemplo «»$ 1781.80 usd»» con la formula resulta lo siguiente «»(UN MIL SETECIENTOS OCHENTA Y UN DOLARES 00/100 USD)»» y se que es correcto este formato mas sin embargo si me pudieras ayudar a que solo quede bajo el siguiente formato «»(MIL SETECIENTOS OCHENTA Y UN DOLARES 00/100 USD)»», en verdad me urge muchísimo para si me puedes ayudar lo antes posible con esta duda y si me pudieras enviar tu respuesta a mi correo willian_ng_f@hotmail.com…
saludos y muchas gracias por brindarnos tu ayuda!!!!
gracias excelente trabajo me ayudo bastante
perfectro gracoas
buen día, hice la macro, pero al momento de querer hacerlo en otro archivo me aparece error, y ya guarde la macro en la opción de habilitado xlsm que será lo que me falta?
Hola buen día, yo lo resolví sin macros, creo que se le complica un poco a la gente usar macros
Hola Victor Podemos adjuntar tu archino si nos lo mandas. Que te parece?
Y por qué si tienes algo más práctico no lo compartes?
MUCHAAAAAASSSSSSS GRACIAS EL ÚNICO QUE ENCONTRÉ CLARO Y PRECISO,
Buenos tardes amigo.,- son muy interesantes sus comentarios.-
me encantaría saber como cambiar moneda a guaraníes paraguayos «Gs» si no es tanta molestia
desde ya gracias por la ayuda y que dios los bendiga-.
HOLA BUENAS TARDES SUPER BIEN ESTE ALGORITMO PERO COMO LE PUEDO MODIFICAR EL SON POR QUE NO ME LO ACEPTAN EN EL BANCO
EXCELENTE HERMANO, BUSQUE EN VARIAS OPCIONES EN INTERNET Y LA TUYA FUE LA UNICA QUE ME AYUDO GRACIAS POR COMPARTIR TUS CONOCIMIENTOS
Ya hice lo que tienes en tus instrucciones pero cuando salgo del libro y vuelvo a entrar ya la formula no me sirve, y me toca volver hacer todo el procedimiento.
En este caso que es lo que debo hacer
Tiene que guardar el libro como «Libro de Excel habilitado para macros (*.xlsm) en la opción guardar como abajito del nombre que le vas a dar al libro.
gracias es una gran persona para explicar tan detalladamente, me fue de mucha utilidad su ayuda.
saluditos
Hola, esta muy util tu información, solo quiesiera saber como hago para que no me salga el SON al principo y para que no me salga entre parentesis Muchas gracias
quisiera que alguien me ayudara, en primer lugar esta excelente la formula porque se pueden hacer cambios segun la nesecidad de las personas, pero en mi caso pongo por ejemplo 1000 y me aparece Un Miluno con 00/100, y quisiera que saliera Un mil quetzales con 00/100. Ya cambie a quetzales
gracias
SON: (UN MIL DE GRACIAS 😉
HOLA BUEN DIA PRIMERO MIL GRACIAS X ESTA APORTACION LA VERDAD SI ME AYUDO PERO TENGO 2 DUDAS NO SE SI ME PODRIAS AYUDAR EN ESTO
PRIMERO SI PODRIAS QUITAR EL PARENTESIS Y EL SON
POR EJEMPLO 1250.00
UN MIL DOSCIENTOS CINCUENTA PESOS .00/100MN
ADEMAS TENGO UNA DUDA YO LO APLIQUE EN UN EXCEL 2007 PERO PONGO MACROS—GRABAR MACROS—- LUEGO LA MODIFICO PEGANDO LA FUNCION Q PROPORCIONASTE-
Y FUNCIONA BIEN
EL PROBLEMA ES Q UNA VEZ Q CIERRO EL EXCEL Y LO VUELVO A ABRIR YA NO TIENE LA FUNCION
INCLUSIVE PUSE HABILITAR MACROS Y NADA CUANDO SE CIERRA Y VUELVO A ABRIR PASA
DE VERDAD TE LO AGRADECERIA MUCHO
Excelente, muchas gracias por el aporte.
EXCELENTE TRABAJO, LA VERDAD ME HA SIDO DE MUCHA UTILIDAD, PERO UNA PREGUNTA ¿CÓMO LE HAGO PARA QUITAR EL ESPACIO QUE HAY ENTRE EL PRIMER PARÉNTESIS Y LA PRIMER LETRA?
EJEMPLO:
APARECE ASÍ: SON: ( DOS MIL….
ME GUSTARÍA: SON: (DOS MIL…
BUENAS TARDES QUISIERA SABER LA FORMULA PARA AL TRADUCIR LOS NUMEROS EN LETRAS EN LA PARTE FINAL ME QUEDE . PESOS M/CTE ES PARA COLOMBIA LO NECESITO PARA GIRAR CHEQUES AGRADESCO SU AYUDA
DISCULPA ME RESULTO UN ERROR, LO PODRIAS VERIFICAR
cuatro mil quinientos cuarenta y seis con 22/00 4546.23
gracias pero no encontrado la solución. Solo busco ,si 100 lo quiero escribir en letras que yo quiera por ejemplo EUU como lo hago
llevo meses y nadie me ha podido ayudar
Genial! muy claro y fantastico. gracias!
hola si solo quiero que me covierta del 1 al 10 en letras mayusculas… como pongo el codigo????
hola si solo quiero que me covierta del 1 al 10 en letras mayusculas… como pongo el codigo???? Para poner calificaciones
MUCHAS GRACIAS!! Sirve al 100%
MUCHAS GRACIAS….
tengo un problema hago todos los pasos que se explican y funciona el libro excel pero cuando le doy guardar el libro me sale el siguiente mensaje:
Las siguientes características no se pueden guardar en libros sin macros:
Proyecto VB
Para guardar un archivo con estas caracteristicas, haz click en no y, a continuacion, elije un tipo de archivo habilitado para macros en la lista tipo de archivo
para seguir guardando el archivo como libro sin macros, haz click en si.
cuando le doy si o no se guarda el archivo pero cuando lo vuelvo a abrir el macro se elimina y no funciona
que debe hacer para solucionar este problema?
EXCELENTE, EN MENOS DE 2 MIN, TODO SALIO PERFECTO, SOLO UITE EL «SON:», MUCHAS GRACIAS.
Buenas. Su código me funcio a increible. Ahora les consulto.
existe alguna manera de agregar esta función al Excel para q no tengamos la necesidad de guardar el Excel con macros? Q en cualquier libro en blanco pueda ingresar =pesosmn() y funcione como con cualquier fórmula predeterminada.
cualquier cosa dejo mi mail chino57@terra.com
Y les agradezco esta ayuda increible que nos dieron
Hola Gchable.
Muchas gracias por la Macro, funciona estupendo.
Necesito un par de ayudas… espero no molestar.
1. si escribo 1 sale = UN, quiero que salga UN PESO
2. si escribo 1.000 Sale = UN MIL, quiero que salga MIL PESOS
3. si escribo 1.000,58 Sale = UN MIL 58, quiero que salga MIL PESOS CON CINCUENTA Y OCHO CENTAVOS
Muchas gracias por tu colaboración y por compartir información con nosotros.
Gracias me fue de gran ayuda esta pagina
Excelente, de gran ayuda, gracias amigo.
muchas gracias por la ayuda
me funciono muy bien
MIL GRACIAS, FUNCIONA PERFECTO, TENGO OFFICE 7
MUY BUEN EJEMPLO, GRACIAS
Muchas gracias! es la mejor explicacion que encontre en la red!
Realmente muy buen explicado y excelentemente ejecutado. Sos un genio. para aportar algo relacionado dejo un link de una serie de videos en youtube en donde se explica las bases de como convertir números a letras en excel pero sin macros. En la descripción de cada video está otro link que te permite descargar una planilla terminada.
Un gran saludo a todos
link: https://www.youtube.com/watch?v=Q8XSmaPq8gA&list=PLqGk704XqwyrtpbO3Zesn-uSsQOAZEWDU
La creé en EUROS ! Copiar la MACRO de abajo :
Function EUROS(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
EUROS = lcBloque
Case 2
EUROS = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & EUROS
Case 3
EUROS = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & EUROS
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
EUROS = EUROS & IIf(tyCantidad >= 1, » CON «, » «) & Format(Str(lyCentavos), «00») & » CENTIMOS»
End Function
Excelentisimo!!! eres un amor, que bueno que eres compartido.
viejo, que los dioses de asgard te bendigan, estaba dando a luz con una aplicacion viejisima y me solucionastes la vida con este codigo. gracias
Jajaja
Enviado desde Outlook Mobile
MUCHAS GRACIAS POR COMPARTIR ESTO, ME SIRVIÓ MUCHISIMO Y ME AHORRÓ MUCHO TIEMPO Y ESFUERZO.
Muchisimas Gracias, te debo una!! 😉
Buen día, muchas gracias, estoy ayudando a las chicas de contabilidad para agilizar la elaboración de cheques, y está macros me cayo como anillo al dedo, pero como siempre hay alguien a quien no de das gusto y quiere las letras en minúsculas. Ya vi el aporte de otro usuario, muchas gracias
Muchas gracias.
EXCELENTE muchas gracias Gonzalo y Tavo
Muchas Gracias… ! muy buena herramienta auxiliar en formatos… Saludos !
Excelente aporte, que grande es el que sabe, pero mas grande es aquel que sabe y sabe compartir con los demás. Muchas gracias, me sirvio muchisimo.
se puede usar para office 2013 y como
mil gracias de verdad muy sencillo y practico gracias!!!!!!
Muchas gracias, me fue de mucha ayuda tu aporte. Las instrucciones fueron dadas de una forma sencilla. 🙂
Hola buen día, necesito hacer una macro donde al escribir un numero se despliegue a la derecha la sumatoria de 1 dando como resultado el numero inicial, algo así:
9 = 1 1 1 1 1 1 1 1 1
4 = 1 1 1 1
3 = 1 1 1
6 = 1 1 1 1 1 1
me pueden ayudar
Excelente trabajo, me ha ayudado muchísimo en mi trabajo y ahorrado mucho tiempo, yo no sé nada de programación y este texto me puso a otro nivel, gracias.
Tengo una pregunta cómo puedo quitarle el espacio deque hay después del paréntesis, por ejemplo:
( QUINCE MIL PESOS 00/100 M.N.) y me gustaría que quedará así (QUINCE MIL PESOS 00/100 M.N.)
LA CANTIDAD LA TENGO EN LA COLUMNA G5 COMO PUEDO HACER PARA OBTENER LA ESCRITURA
BUENAS YARDES, A VER SI ME PUDIERAN APOYAR , QUIERO CONVERTIR NÚMEROS A LETRAS Y ENCONTRE LA FORMULA, PERO APARENTEMENTE TENGO UN ERROR Y DICE QUE LA FORMULA CONTINE TEXTO NO RECONOCIDO.
buen dia, no puedo guardar los macros, tal vez es muy especifica su respuesta sin embargo necesito me apoyes detalle o paso a paso a este e mail jorgedvb36@outlook.com, gracias saludos
Gracias, excelente trabajo. Me sirvió bastante.
Muchas gracias.
y para que me aparesca en dolares como hago ademas tambien como lo puedo guardar
excelente ,
personas como usted son las que necesita este mundo.
EXCELENTE TRABAJO, MUY UTIL DE VERDAD.
AYÚDEME CON ALGO, NECESITO QUE LOS NUMEROS ME SALGAN EN LETRAS, EJEMPLO: 7,05 SIETE COMA CERO CINCO. 9,28 NUEVE COMA VEINTIOCHO 5,00 CINCO COMA CERO CERO.
MIL GRACIAS POR SU AYUDA.
CADA VEZ QUE ABRO EXCEL TENGO QUE COPIAR ESTA FORMULA, HAY ALGUNA MANERA QUE EN AUTOMATICO QUEDE ??
Gracias por este post lo probé con pesos mexicanos y funciona bien pero si me puedes ayudar con la moneda de Honduras que es «Lempiras» te lo agradeceré.
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 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
[image: Abrimos el editor de Visual Basic]
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
[image: Insertando el Modulo para pegar el codigo]
En la ventana que se abre pegamos el codigo de la macro
[image: pegamos el codigo]
[image: codigo pegado]
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)
[image: Imagen final]
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 09 de Octubre de 2013.
https://www.dropbox.com/s/c1tad1rde15rbgs/Numeros_a_letras.xls
Pongo a su disposición un libro de Excel ya con la macro listo para usar:
No olviden habilitar las macros.
**************************************************************
Muchas gracias es muy clara la explicación, me sirvió mucho y es muy fácil. Saludos
FUNCIÓN PARA QUE SE COLOQUE SOLO EL NUMERO EN LETRAS Y ELIMINAR «00/100 M.N.»
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 = » » & PesosMN & IIf(tyCantidad > 1, » DE PESOS «, » PESO «)
End Function
muchas gracias por la información fue de muchíiiisima ayuda 😉
esta muy completa tu informacion, me agrado solo que quisiera que en lugar que sean pesos sea dolares, como se puede hacer
espero me puedas ayudar
saludos…
Muchisisisisimas gracias Gonzalo..!! He utilizado tu macro en mi trabajo y me ha ayudado bastante diría yo…. Pero he encontrado que al ser la cantidad $00.00 no indica el «Cero» con letra…. Me puedes ayudar de favor..??
Otro detalle al final de la instrucción…. Como puede indicar ……. «Con» …./100 ..??
Ejemplo: Son Cero Pesos con 00/100 MN
Excelente Articulo.
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, » Nuevos Soles «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 )»
End Function
ESTO ES PARA PERÚ´
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(«», «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, » con «, » PESO «) & Format(Str(lyCentavos), «00») & «/100 » & «Nuevos Soles»
End Function
Excelente, no siempre se encuentran explicaciones bien detalladas, GRACIAS.
Muy buena informacion y con pasos muy secillos, batalle un poco como la mayoria en que no me dejaba realizarlo en otro archivos, leyendo los cometarios encontre este aporte de pelayo que fue el que me ayudo:
Archivo, guardar como, colocale un nombre y cambien en guardar como tipo Compremento de Microsoft Excel *.xla, una vez que lo haz guardado, con el excel abierto vas a herramientas, complementos examinar, buscas la ruta, lo agregas y lo dejas tildado en la lista de complementos, cada vez que abras el excel se abrira ese lobro dejandote la funcion disponible en cada sesion de esa maquina, si requieres utilizarlo en otra maquina repite el paso de agregar el complemento.
MUCHAS GRACIAS, ME HA SIDO DE MUCHA UTILIDAD.
Excelente, funciona a la primera. Muchas gracias
Buena noche y muchas gracias. Quisiera saber como se modifica la macro para que el resultado de miles de millones, pues la macro actual es hasta centenas de millones.
Gracias me sirvió mucho
Muchisimas gracias Contador de gran Bendición su blog, Dios lo Bendiga por apoyar a otros….
Saludos esta muy bien tu desarrollo, lo único que espero puedas corregir es el uso correcto para cantidades en el rango de los 1000.00 a los 1999.99, lo correcto es escribir: «Mil pesos o Mil…» a diferencia que empleas » Un mil…»
Hola, habría manera de mejorar el código para que pueda hacer la conversión después de 999.999.999 Pesos colombianos, al llegar a los 1.000.000.000 deja de funcionar.
me ayudo mucho, pero solo que me gustaria que no apareciera al principio la palabra «son» ya que no me permiten en el trabajo que vaya asi si pudieras ayudarme te lo agradeceria….
HOLA CONSULTA, Cómo puedo hacer que la macro quede graba y habilitada para cualquir libro de excel, al abrir nuevamente el archivo la funcion desaparece y tengo q volver a copiarla en visual basic
¡Sos un capo! ¡Muchisimas gracias por este aporte!
Buen día, una consulta, si tengo que poner en una celda con letra dos celdas en las cuales hay dos valores distintos y monedas distintas, por ejemplo en una celda tengo 15.10 pesos y en la otra de al lado tengo 25.40 dolares, como le hago para que me aparezca en una sola celda y con letra: ** QUINCE PESOS 10/100 M.N. ** MÁS ** VEINTICINCO DOLARES 40/100 USD. Y cuando sea cero la cantidad, aparezca CERO PESOS 00/100 M.N. ** MÁS** CERO DOLARES 00/100 USD., alguien podría ayudarme? Saludos!
Este es mi Macros:
‘Funcion para pasar numeros a letras
Function NumLetras(Valor As Currency, Optional MonedaSingular As String = «», Optional MonedaPlural As String = «») 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
Dim ValorEntero As Long
Valor = Round(Valor, 2)
lyCantidad = Int(Valor)
ValorEntero = lyCantidad
lyCentavos = (Valor – 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
NumLetras = lcBloque
Case 2
NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, » MIL») & NumLetras
Case 3
NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, » MILLON», » MILLONES») & NumLetras
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
NumLetras = NumLetras & » DÓLARES » & Format(Str(lyCentavos), «00») & «/100 » & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function
Pero quiero que me aparezca «CERO DOLARES 20/100 por ejemplo, ya que con esta función me aparece «DOLARES 20/100»
Podrían ayudarme?
Saludos!
hola yo ocupo cantidades de hasta $ 10,000,000,000.00 pero el macro llega hasta $ 999,000,000.00 por todo lo demás muy buena macro!!
mi petición es podrás ayudarme con la macro hasta $ 10,000,000,000.00 en pesos mexicanos? de antemano gracias y saludos.
Excelente, gracias!!!
Muy buen artículo gracias, también hay una APP Android para usar en celulares y tabletas, que convierte números a palabras, ideal para escribir rápidamente, números en formato de letras para cheques,
contratos o en documentos importantes, esta APP esta disponible en:
https://play.google.com/store/apps/details?id=net.sabro.numerosaletras
Gonzalo, desde CDMX. Mil gracias por el apoyo. Eres Genial¡
Por nada hombre.
CÓMO QUITAR EL ESPACIO QUE APARECE EN EL PRIMER PARENTESIS?, GRACIAS
Saludos, yo quiero saber como poner hasta los centavos en letra, no encuentro como hacerlo y enserio lo necesito, si me pueden ayudar escríbanme al correo adonayreales98@gmail.com
aqui te dejo un unos ejemplos para convertir numero a letras en excel usando vba mas detalle