Convertir Numeros a Letras En

Embed Size (px)

Citation preview

Convertir nmeros a letras enExcel

Una de las funciones de Microsoft Excel ms buscadas en la red y en los foros, es como convertir un nmero a texto o nmero a letras, esta funcin no viene integrada en las formulas propias de Microsoft Excel, esto lo podemos hacer insertando un cdigo llamado Macro, que no son mas que instrucciones que nos ayudan a automatizar tareas en Excel (tambin se usa en Word, Access etc.).

En la red se puede encontrar muchos de estos cdigos, algunos permiten manejar varias monedas, dlares, Euros etc. Uno de los ms usados y ms que excelente es el de Mauricio Baeza, 100% hecho en Mxico!, seguramente ya lo haz usado, desde entonces han surgido muchas variantes y modificaciones; pero muy pocos sitios o casi ninguno muestran cmo usarlos.

Desde que uso Microsoft Excel he probado varios de esos cdigos, he visto como mucha gente se atribuye la autora de dichos cdigos, que vergenza pero en fin. Dentro de las diferencias que he encontrado en la conversin a texto es algo as como esto:

23 = Veintitrs23 = Veinte y tres

Yo me inclinara ms por el primero, No es que la segunda conversin este mal, cualquiera de las dos formas son correctas, pongamos un ejemplo, cuando voy a la tienda de la esquina y pregunto Cundo cuesta este palitroche*? El anciano muy amablemente me dice son veintitrs pesos joven.

Vamos a empezar, primero necesitamos el cdigo, vamos a usar este que al parecer el autor es Sal Lpez con una pequea modificacin de ByPaco para que aparezca Pesos y M.N., yo le hice una pequea modificacin al cdigo para que aparezca SON: como se usa aqu en Mxico.Function PesosMN(tyCantidad As Currency) As String

Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero

Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit

tyCantidad = Round(tyCantidad, 2)

lyCantidad = Int(tyCantidad)

lyCentavos = (tyCantidad - lyCantidad) * 100

laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")

laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")

laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

lnNumeroBloques = 1

Do

lnPrimerDigito = 0

lnSegundoDigito = 0

lnTercerDigito = 0

lcBloque = ""

lnBloqueCero = 0

For I = 1 To 3

lnDigito = lyCantidad Mod 10

If lnDigito 0 Then

Select Case I

Case 1

lcBloque = " " & laUnidades(lnDigito - 1)

lnPrimerDigito = lnDigito

Case 2

If lnDigito 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N.)"

End Function

Bien, ahora que ya tenemos el cdigo vamos a insertarlo en nuestra hoja de trabajo de Microsoft Excel. Recomendable trabajar en un libro nuevo.

Hacemos clic en Herramientas->Macros->Editor de Visual Basic, o simplemente presionando Alt+F11

Es importante que cierres todos los libros que tengas abierto y dejes abierto solo el libro en el que ests trabajando ya que podra dificultarte encontrar tu libro en el explorador de proyectos (lado izquierdo de tu pantalla, si no lo ves presiona Ctrl+R)

Una vez abierto el editor de Visual Basic nos vamos a Insertar->Modulo

En la ventana que se abre pegamos el cdigo 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 ejercicio hasta aqu, ya puedes ponerlo en todos tus libros de trabajo, buena suerte.Convertir nmeros a letras en Excel

Elconvertir nmeros a letras en Exceles una tarea utilizada por muchas personas y sin embargo la herramienta an no cuenta con una funcin que nos permita hacerlo con facilidad, por lo que es necesario crear una funcin definida por el usuario para lograr este objetivo.

Lo primero que debo decir es que no importa de qu lugar ests visitando esta pgina, al final de este artculo te mostrar cmo modificar la funcin para que muestre el nombre de la moneda de tu pas ya que de manera predeterminada la funcin fue hecha para mostrar Pesos que es la moneda de Mxico.

Funcin para convertir nmeros a letras en Excel

La funcin que he creado paraconvertir nmeros a letras en Excella he llamado CONVERTIRNUM y su sintaxis es muy simple porque tiene solamente dos argumentos:

Nmero(Obligatorio): Es el nmero que deseamos convertir a letras.

CentimosEnLetra(Opcional): Indica si deseamos tener la descripcin de los cntimos (decimales) en letra. Si se especifica el valor FALSO o simplemente se omite, la funcin mostrar los cntimos como un valor numrico.

Ejemplos para convertir nmeros a letras

IMPORTANTE: Antes de iniciar con los ejemplos debes descargar el libro:convertir-numeros-a-letras-en-excel.xlsm.

El ejemplo ms sencillo paraconvertir un nmero a letrases utilizando la funcin CONVERTIRNUM de la siguiente manera:

=CONVERTIRNUM(C4)Como puedes observar, en esta ocasin he omitido el segundo argumento de la funcin. Esto nos devolver la descripcin en texto del nmero contenido en la celda C4 y los centavos en valor numrico:

Si por el contrario, necesito la descripcin de los centavos en letras ser suficiente con indicar el valor VERDADERO para el segundo argumento de la funcin:

=CONVERTIRNUM(C8, VERDADERO)Observa cmo el texto del nmero ahora muestra los centavos tambin en letras:

Texto en maysculas

Si necesitas que el nmero en letras sea todo en maysculas, puedes utilizar la funcin de Excel MAYUSC para realizar la conversin.

Agregar texto adicional

Tambin es probable que necesites agregar algunos caracteres especiales al texto del nmero como pueden ser parntesis. Para ello podemos utilizar la funcin de Excel CONCATENAR para agregar dichos caracteres.

Para el caso especfico de Mxico, podemos agregar la leyenda M.N al final del texto as como la palabra SON al principio, en caso de que acostumbres utilizarla.

Aunque estos caracteres y palabras adicionales para Mxico podran estar incluidos dentro de la funcin, decid removerlos para tener un cdigo que pueda ser reutilizable por otros pases donde no se acostumbra este tipo de nomenclatura.

Configurar el nombre de moneda para otros pases

Como mencion al principio de este artculo, la funcin CONVERTIRNUM muestra de manera predeterminada la palabra Pesos y Centavos, pero a continuacin te mostrar como cambiar estas palabras para utilizar la moneda de otro pas.

Para iniciar con este cambio debes ir a la ficha Programador y pulsar el botn Visual Basic para abrir el Editor de Visual Basic y hacer doble clic sobre el Mdulo1:

Esto mostrar el cdigo de la funcin y debers poner especial atencin a una seccin que he marcado como Parmetros:

En esta seccin se deben realizar los cambios en los nombres de moneda. Por ejemplo, si deseo utilizar bolvares y cntimos (Venezuela) debo modificar el cdigo para que quede de la siguiente manera:

Al terminar solo debes asegurarte de guardar los cambios y finalmente cerrar el Editor de Visual Basic. Ahora la funcin ya est lista paraconvertir nmeros a letrasconsiderando el nombre de moneda especificado.

Consideraciones adicionales

Es importante que consideres que esta funcin podrconvertir nmeros a letras en Excelempezando desde el cero y hasta el nmero 1,999,999,999. Para cualquier nmero fuera de este rango la funcin devolver el mensaje ERROR: El nmero excede los lmites.

Si deseas utilizar este cdigo en otros libros solamente debes copiar el cdigo del Mdulo1 a tu propio libro de Excel. O tambin puedes copiar el cdigo alLibro de macros personalde manera que puedas utilizar automticamente la funcin en todos los libros sin la necesidad de copiarlo a cada uno de ellos.

El libro de macros personal en Excel

Cuando creamos una macro en Excel podemos guardarla en el libro actual o podemos guardarla en ellibro de macros personal. La ventaja de guardar una macro en ellibro de macros personales que nuestra macro estar disponible para cualquier libro.

El libro de macros personal

Ellibro de macros personales en realidad un archivo oculto llamadopersonal.xlsby que es cargado cada vez que iniciamos Excel. Si tienes Windows 7 podrs encontrar el archivo personal.xlsb en la siguiente carpeta:

C:\Usuarios\[Usuario]\AppData\Roaming\Microsoft\Excel\XLSTARTEn la ruta que observas arriba [Usuario] es el nombre de tu usuario en el equipo. Adems la carpeta AppData es una carpeta oculta por lo que no la encontrars directamente en el navegador de Windows a menos que habilites la vista de archivos ocultos.

Creacin del libro de macros personal

Ellibro de macros personalse crea la primera vez que se guarda una macro en l. Para hacerlo,crea una macroy especifica que deseas guardarla en elLibro de macros personal.

Cuando guardes el archivo Excel vers un mensaje preguntando si deseas guardar los cambios realizados allibro de macros personal, para lo cual debers pulsar el botn Guardar.

El libro de macros personal en el Editor de Visual Basic

Una vez que ellibro de macros personalha sido creado lo podrs ver dentro del Editor de Visual Basic:

Por debajo del nombre VBAProject (PERSONAL.XLSB) encontrars la carpeta Mdulos y dentro de ella encontrars todas las macros que se hayan guardado en ellibro de macros personalorganizadas en mdulos.

Si deseas eliminar algn mdulo solamente debers hacer clic derecho sobre l y seleccionar la opcin Quitar Mdulo.

NumLetras: Funcin para pasar (convertir) nmeros a letras

Temostramoscomo crear tu propiafuncinparaconvertirnmerosa letras, esto puede serte de mucha utilidad si usas Excel para imprimir facturas o reportes en los que debas ingresar un numero en letras.

NOTA: Puedes saltarte todos estos pasos e ir directo a descargarla hoja de Excelcon una macro para convertir los nmeros a letras, si lo deseas. Si quieres que esta funcin este siempre disponible en tu Excel, puedes descargar e instalar este complemento gratis

Primero ingresa a VBA presionando las teclas Alt+F11, e inserta unModulo(Si ya tienes un modulo no necesitas insertar uno nuevo)

Ahora selecciona tu modulo (Module1)

Y en la ventana derecha ingresa este texto:

1'Funcion para pasar numeros a letras

2FunctionNumLetras(ValorAsCurrency,OptionalMonedaSingularAsString="",OptionalMonedaPluralAsString="")AsString

3DimlyCantidadAsCurrency, lyCentavosAsCurrency, lnDigitoAsByte, lnPrimerDigitoAsByte, lnSegundoDigitoAsByte, lnTercerDigitoAsByte, lcBloqueAsString, lnNumeroBloquesAsByte, lnBloqueCero

4DimlaUnidadesAsVariant, laDecenasAsVariant, laCentenasAsVariant, IAsVariant'Si esta como Option Explicit

5DimValorEnteroAsLong

6Valor = Round(Valor, 2)

7lyCantidad = Int(Valor)

8ValorEntero = lyCantidad

9lyCentavos = (Valor - lyCantidad) * 100

10laUnidades = 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")

11laDecenas = Array("DIEZ","VEINTE","TREINTA","CUARENTA","CINCUENTA","SESENTA","SETENTA","OCHENTA","NOVENTA")

12laCentenas = Array("CIENTO","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS")

13lnNumeroBloques = 1

14

15Do

16lnPrimerDigito = 0

17lnSegundoDigito = 0

18lnTercerDigito = 0

19lcBloque =""

20lnBloqueCero = 0

21ForI = 1To3

22lnDigito = lyCantidadMod10

23IflnDigito 0Then

24SelectCaseI

25Case1

26lcBloque =" "& laUnidades(lnDigito - 1)

27lnPrimerDigito = lnDigito

28Case2

29IflnDigito