Fórmula Números a letras

32055

Alguna vez tuviste la necesidad de expresar montos en nuestra unidad monetaria para presentar informes o quizás al momento de hacer una factura, como bien sabemos Excel no puede cubrir nuestras necesidades al 100%, para ello existe programadores que nos facilitan la vida, Armando Montes programador vba en excel personalizo la función Num_Letras con la finalidad de expresar números en letras y a la vez estas acompañadas de la denominación de «Nuevos Soles».

Actualizado: Ahora puedes editar la función para trabajar con la moneda de tu país.

Instrucciones a seguir:

1.- Descargar el siguiente Archivo Función_Num_Letras.xla de preferencia en el escritorio.

2.- Ir al explorador de window, o también puede presionar la tecla windows + E, ir a Herramientas -> Opciones de Carpeta -> ver ->»Mostrar todos los archivos y carpetas ocultos», click en aplicar y luego en aceptar.

3.- Ir a C:\Documents and Settings\Administrador\Datos de programa\Microsoft\Complementos o en algunas versiones dice «AddIns».

4.- Copiamos el archivo descargado y lo pegamos aquí dentro de la carpeta «complementos» o en tal caso «AddIns».

5.- Excel 2007, abra un nuevo archivo, luego vaya al «Botón de Office», posteriormente a «Opciones de Excel» –> Complementos –>Complemento de Excel «ir»

6.-En la ventana que aparecerá Seleccionen Num_Letras asi como se muestra en la siguiente imagen:

1

7.- Excel 2003, abra un nuevo archivo, luego vaya «Herramientas»  –> Complementos, haga lo mismo que el paso 6.

8.- Y eso es todo, la función esta instalada ahora estará y permanecerá siempre en tu Excel, para usar la función basta con ir a:

54

Tambien desde Excel basta con teclear =num_letras()

Acontinuación te muestro como Editar La funcion para usarla con la moneda o denominacion de tu país. (Clic sobre el video para visualizarlo en pantalla completa)

112212

Video: 

 

Autor: Gustavo A.  Sebastiani Cépeda

Comentarios

44 COMENTARIOS

  1. ya puse el programa en mi hoja Excel y me funciona de maravilla, de verdad Fernando me has ayudado mucho, pero te queria preguntar algo??, yo facturo en monto de soles y dolares, no seria posible añadir algo a tu porgrama para que fuera optativo, es decir solo cambiar la ultima frase de «Nuevo soles a «Dolares Americanos» y viceversa.

    gracias de antemano por tu valiosa ayuda.

    si me podrias contestar a mi correo [email protected]

    Gabriel.

  2. Buen dia Fernando

    Tengo vista y la ruta que me das en el paso 3
    3.-Ir a C:Documents and SettingsAdministradorDatos de programaMicrosoftComplementos o en algunas versiones dice “AddIns”.

    no la tengo como tal, puedes indicarme donde pegar el archivo k descarge o desirme k opciones tengo
    Gracias

    Armando Rdz. Chavez
    Monterrey, N.L.

  3. hola Armando, aprecio tu valioso aporte y desde ahora este sera mi blog ya que el excel es mi programa favorito y se complementa con mi otra pasion: la contabilidad. hace un mes atras diseñe un programa de planillas para el regimen de construccion bajo el soporte de macros, lo diseñe pensando en los requerimientos del area de rr.hh de la empresa en donde trabajo, como entenderas para calcular esta planilla se debe tener en cuenta las categorias y las diversas bonificaciones que tiene los trabajadores bajo este regimen. me gustaria compartirlo en el blog, pero antes me gustaria que le des una revisada y le puedas aportar otras cosas, ya que si bien es cierto cubrio las expectativas de mi empresa, sigo creyendo que aun le faltan detalles que no puedo implementar xq aun no domino muy bien las macros-
    saludos cordiales-

    marco

  4. hola amigos:
    si el error que lanza de «mil» se puede corregir.
    estando en excel presionen alt +f11, luego busquen la palabra «mil» en la linea 119 (miren en la barra de herramientas Lin, 119 Col,17 (bueno la columna no es necesaria)

    y luego reemplacen esa linea por esta

    letras = letras & » » ‘ mil »

    parece inofensivo pero la comilla despues de los parentesis convierte al resto a la derecha en comentario y por lo tanto inofensivo es decir lo desabilitan

    si no les gusto solo abran y encierren el mil en con comillas como estaba antes y todo vuelve a la normalidad

  5. me olvidaba sorry antes de salir pulsen grabar

    sorry otra vez, al creador de esta macros mil disculpas por meterle mano.
    Esta en tus manos el crear nuevos programas y corregirlos, pero nosotros te ayudaremos a mejorarlo usandolo.

    gracias por este aporte. gracias mil

  6. Hola te felicito por tu aporte, la verdad es bueno pero como sabras cualquier programa antes de lanzarlo a su conocimiento al publico debe ser bien revisado, ya q este es uno de los mayores problemas en todas las empresas q manejan programas, no se porque pero siempre sus software estan diseñados a medias, te recomiendo revises adicionalmente a los que ya algunos colegas han mencionado ciertas inconsistencias el porque no salen los 200,000; 300,000; etc… seria bueno le des una chequeada derrepente encuentras algo mas y mejoras tu aporte… gracias y suerte!!

  7. Muchas gracias, esta macro me ha aliviado bastante el trabajo de generar recibos. Es lo que estaba buscando.

    Para aquellos que les sale #¡VALOR!, deben de ingresar el numero 1 o 2 como opción, el número «1» le pone las letras del tipo de moneda al final y el número 2 le quita.

    Saludos.

  8. Buenas Compañero, excelente toda tu explicacion y trabajo, pero debo estar aciendo algo mal ya que cuando escribo la cifra 100,50 me devuelve en letras CIEN CON 50/100 CENTIMOS, hasta aca todo va bien , el problema se presenta cuando pongo 100,00 y me devuelve CIEN sin aparecer «con xx/100 CENTIMOS» que hay que cambiar para que eso aparezca ya que es impresindible para la elaboracion de Cheques.

    mil gracias por todo tu apoyo

    Saludos Cordiales
    Danny Villar
    Caracas – Venezuela

  9. buenas tardes muchsa gracias por la info solo tengo una duda si me pueden ayudar al final de letras por ejemplo un mil docientos con 25/100
    que antes del con puede poner quetzales como procederia para que dijera asi un docientos queztales con 25/100
    en espera de su valiosa ayuda muchas gracias
    y muy bueno este programita para convertir numeros a letras

  10. Lo he probado y me parece genial tu aporte, la verdad que al comienzo me aparecia valor… pero leyendo los comentarios me salio :)… bueno he intendado ver el video .. pero no lo descarga en mi maquina… pero con la opciòn 2 que nos distes nos ayuda bastante ya que si al numero que hemos escrito le concatenamos la moneda que querramos o a elección en un area fuera de impresión nos devuelve ccualquier moneda..ejemplo:
    =num_letras(B32;2)&E32… en podemos tenerlo escrito(Dolares Americanos, soles lo que querramos y lo adiciona a la factura a nuestra eleccion, señalando la celda.

    Muchas gracias Gracias Sebastiani, la verdad que talvez ya lo sepan pero por ahi a alguien le pueda servir…..

  11. hola sebastian no me funciona será porque cuento con el excel 2010?? te comento que no encontre el archivo complementos mas bien «ADDins» y es aquí en donde coloqué el archivo descargaDO.

    la formula «Num_letras» me aparece como funcion pero cuando fijo la celda que quiero que se convierta me sale siempre el error muy conocido denominado:
    VALOR

  12. Tengo problema con el complemento, ya que al ejecutar la funciòn se ejecuta bien, pero al ser modificado la celda donde se encuentra el nùmero se bloquea todo el libro de excel perdiendo toda la informaciòn realizada, serà que solo se puede ejecutar una sola vez, ademas no me permite ser ejecutado en distintos archivos de excel.
    En espera de comentarios.

  13. Muchas gracias Sebastián, Genial aporte. Le he heccho algunas modificaciones, siguiendo tus instrucciones incluí el Euro, más abajo eliminé el «un» de «Mil» y puse en mayúscula «Ciento», ha sido un buen ejercicio. Ahora estoy tratando de incluir «dieciseís…dicinueve» y «veintiuno…veintinueve», pero me parece que requiero algo de ayuda.

    Gracias nuevamente

  14. Como no puedo adjuntar el archivo, anexo el código modificado que corrige la mayoría de los errores citados anteriormente.
    La forma de uso cambia ahora a:
    =num_letras( cantidad en numero , moneda [si se usa en este punto], conjuncion [si se usa], moneda [si se usa en este otro punto] ). ejemplo:

    =num_letras( cantidad en numero , «Pesos», «», «M.N.» )
    =num_letras( cantidad en numero , «», «y», «nuevos soles» )

    Éste es el nuevo código:
    ‘Autor de la modificacion: Gustavo A. Sebastiani Cépeda
    ‘ Trujillo – Peru
    [email protected] http://www.perucontable.com/excelcontable/formula-numeros-a-letras/
    ‘Depurado por Francisco García Trujillo – Morelia – México – Octubre 2011
    ‘errores conocidos aún pendientes:
    ‘cien millones (de) pesos
    ‘treinta y uno pesos
    ‘no admite decenas de miles de millones (más de 7 dígitos)
    ‘Uso para Perú: =num_letras( cantidad en numero )
    ‘Uso para México: =num_letras( cantidad en numero , «Pesos», «», «M.N.» )
    Function Num_Letras(Numero As Double, Optional Prefijo As String = «», Optional Conjuncion As String = «y», Optional Postfijo As String = «nuevos soles») As String
    Dim Letras As String
    Dim Decimales As Double
    Decimales = Numero – Int(Numero)
    Numero = Int(Numero)

    If Prefijo > «» Then
    Prefijo = Prefijo & » »
    End If

    If Conjuncion > «» Then
    Conjuncion = Conjuncion & » »
    End If

    If Postfijo > «» Then
    Postfijo = » » & Postfijo
    End If

    Dim Numeros(90) As String
    Numeros(0) = «Cero»
    Numeros(1) = «Uno»
    Numeros(2) = «Dos»
    Numeros(3) = «Tres»
    Numeros(4) = «Cuatro»
    Numeros(5) = «Cinco»
    Numeros(6) = «Seis»
    Numeros(7) = «Siete»
    Numeros(8) = «Ocho»
    Numeros(9) = «Nueve»
    Numeros(10) = «Diez»
    Numeros(11) = «Once»
    Numeros(12) = «Doce»
    Numeros(13) = «Trece»
    Numeros(14) = «Catorce»
    Numeros(15) = «Quince»
    Numeros(16) = «Dieciseis»
    Numeros(17) = «Diecisiete»
    Numeros(18) = «Dieciocho»
    Numeros(19) = «Diecinueve»
    Numeros(20) = «Veinte»
    Numeros(21) = «Veintiuno»
    Numeros(22) = «Veintidos»
    Numeros(23) = «Veintitres»
    Numeros(24) = «Veinticuatro»
    Numeros(25) = «Veinticinco»
    Numeros(26) = «Veintiseis»
    Numeros(27) = «Veintisiete»
    Numeros(28) = «Veintiocho»
    Numeros(29) = «Veintinueve»
    Numeros(30) = «Treinta»
    Numeros(40) = «Cuarenta»
    Numeros(50) = «Cincuenta»
    Numeros(60) = «Sesenta»
    Numeros(70) = «Setenta»
    Numeros(80) = «Ochenta»
    Numeros(90) = «Noventa»
    Do
    ‘*—> Millares de Millón
    If (Numero = 1000000000) Then
    If Int(Numero / 1000000000) = 1 Then
    Letras = Letras & » Un mil millones »
    Else
    Letras = Letras & Numeros(Int(Numero / 1000000000))
    Letras = Letras & » mil millones »
    End If
    Numero = Numero – (Int(Numero / 1000000000) * 1000000000)
    End If
    ‘*—> Centenas de Millón
    If (Numero = 100000000) Then
    If (Int(Numero / 100000000) = 1) And ((Numero – (Int(Numero / 100000000) * 100000000)) «», » de «, «»)
    Else
    Select Case Int(Numero / 100000000)
    Case 1
    Letras = Letras & «Ciento»
    Case 5
    Letras = Letras & «Quinientos»
    Case 7
    Letras = Letras & «Setecientos»
    Case 9
    Letras = Letras & «Novecientos»
    Case Else
    Letras = Letras & Numeros(Int(Numero / 100000000))
    End Select
    If (Int(Numero / 100000000) 1) And (Int(Numero / 100000000) 5) And (Int(Numero / 100000000) 7) And (Int(Numero / 100000000) 9) Then
    Letras = Letras & «cientos »
    Else
    Letras = Letras & » »
    End If
    End If
    Numero = Numero – (Int(Numero / 100000000) * 100000000)
    End If
    ‘*—> Decenas de Millón
    If (Numero = 10000000) Then
    If Int(Numero / 1000000) 1000000 Then
    Letras = Letras & » y »
    End If
    End If
    End If
    ‘*—> Unidades de Millón
    If (Numero = 1000000) Then
    If Int(Numero / 1000000) = 1 Then
    Letras = Letras & » Un millón »
    Else
    Letras = Letras & Numeros(Int(Numero / 1000000))
    Letras = Letras & » millones »
    End If
    Numero = Numero – (Int(Numero / 1000000) * 1000000)
    End If
    ‘*—> Centenas de Millar
    If (Numero = 100000) Then
    If (Int(Numero / 100000) = 1) And ((Numero – (Int(Numero / 100000) * 100000)) < 1000) Then
    Letras = Letras & "Cien mil "
    Else
    Select Case Int(Numero / 100000)
    Case 1
    Letras = Letras & "Ciento"
    Case 5
    Letras = Letras & "Quinientos"
    Case 7
    Letras = Letras & "Setecientos"
    Case 9
    Letras = Letras & "Novecientos"
    Case Else
    Letras = Letras & Numeros(Int(Numero / 100000))
    End Select
    If (Int(Numero / 100000) 1) And (Int(Numero / 100000) 5) And (Int(Numero / 100000) 7) And (Int(Numero / 100000) 9) Then
    Letras = Letras & «cientos mil »
    Else
    Letras = Letras & » mil »
    End If
    End If
    Numero = Numero – (Int(Numero / 100000) * 100000)
    End If
    ‘*—> Decenas de Millar
    If (Numero = 10000) Then
    If Int(Numero / 1000) 1000 Then
    Letras = Letras & » y »
    Else
    Letras = Letras & » mil »
    End If
    End If
    End If
    ‘*—> Unidades de Millar
    If (Numero = 1000) Then
    If Int(Numero / 1000) = 1 Then
    Letras = Letras & «un»
    Else
    Letras = Letras & Numeros(Int(Numero / 1000))
    End If
    Letras = Letras & » Mil »
    Numero = Numero – (Int(Numero / 1000) * 1000)
    End If
    ‘*—> Centenas
    If (Numero 99) Then
    If (Int(Numero / 100) = 1) And ((Numero – (Int(Numero / 100) * 100)) < 1) Then
    Letras = Letras & "Cien "
    Else
    Select Case Int(Numero / 100)
    Case 1
    Letras = Letras & "ciento"
    Case 5
    Letras = Letras & "quinientos"
    Case 7
    Letras = Letras & "setecientos"
    Case 9
    Letras = Letras & "novecientos"
    Case Else
    Letras = Letras & Numeros(Int(Numero / 100))
    End Select
    If (Int(Numero / 100) 1) And (Int(Numero / 100) 5) And (Int(Numero / 100) 7) And (Int(Numero / 100) 9) Then
    Letras = Letras & «cientos »
    Else
    Letras = Letras & » »
    End If
    End If
    Numero = Numero – (Int(Numero / 100) * 100)
    End If
    ‘*—> Decenas
    If (Numero 9) Then
    If Numero 0.99 Then
    Letras = Letras & » y »
    End If
    End If
    End If
    ‘*—> Unidades
    If (Numero 0.99) Then
    Letras = Letras & Numeros(Int(Numero)) & » »
    Numero = Numero – Int(Numero)
    End If
    Loop Until (Numero = 0)
    ‘*—> Decimales
    If (Decimales > 0) Then
    Letras = Letras & Prefijo & Conjuncion
    Letras = Letras & Format(Decimales * 100, «00») & «/100» & Postfijo
    Num_Letras = Letras
    Else

    Num_Letras = Letras & Prefijo & Conjuncion & «00/100» & Postfijo

    End If

    End Function

  15. amigo excelente aporte, me has facilitado mucho el trabajo, pero tengo un problemita o un detallito, modifique la linea 119 como dices quitando la palabra MIL, el problema es cuando hay una cifra por ejemplo 200.200 dice docientos docientos y lo mismo pasa cuando esta en 300.000, 400.000 etc.