![]() |
Pasar de números a letras en Excel Información sacada de http://www.galeon.com/ortihuela/trucosexcel.htm Ya que mediante el formato de Excel no es posible, la solución puede ser crear un módulo de Visual Basic que nos realice el trabajo. Afortunadamente, Microsoft nos ofrece otra alternativa en su página web del área de descarga de Excel. Se trata de utilizar una función llamada Recibo, que se encuentra en una librería dinámica y que puede llamarse desde Excel definiendo una función. Veamos los pasos a seguir: 1. Descargamos a nuestro disco duro el archivo E10467.EXE de la dirección http://www.microsoft.com/spain/suppo...les/E10467.EXE (Ya no va esa dirección. Está disponible como adjunto de este archivo) 2. El archivo E10467.EXE contiene dos archivos empaquetados: DLLTCAST.DLL y E10467.DOC. El primero es la librería dinámica que contiene la función Recibo y el segundo es un archivo de Word con las instrucciones para utilizar en Excel la función. Ejecutamos el archivo E10467.EXE y copiamos el archivo DLLTCAST.DLL a la carpeta c:\windows\system de nuestro disco duro. 3. Arrancamos Excel y en un nuevo libro o en el que necesitemos utilizar la conversión de números a letras, insertamos un nuevo módulo de Visual Basic. En Excel 2000 mediante el menú Herramientas--Macro--Editor de Visual Basic y a continuación ejecutando en este editor el comando Insertar--Módulo. 4. Escribimos el código siguiente en el módulo: Código: Declare Sub Recibo Lib "dlltcast.dll" (cifra As Long, ByVal texto As String)En el archivo de Word E10467.DOC podemos ver la forma de utilizar la función desde cualquier hoja de cálculo sin tener que definirla nuevamente. |
Buen dato. El link no funciona |
Y no se ve el archivo que dejé adjunto en el mensaje? Voy a hver si lo habilitan... |
Cita:
|
Convertir numeros a letras en Excel 2000 Hola Amigo Soy Chileno, use tu codigo a la perfeccion, pero , aca no escribimos de la forma de ustedes los numeros, por ejemplo : $ 1.590.- En España son : un mil quinientas noventa En chile son : un mil quinientos noventa Te fijas que la terminacion de " quinientas " no es igual a la chilena , bueno en tu codigo es el problema que tengo, tendras el codigo que me sirve ? te lo agradeceria. Mi nombre es Andres Salinas |
Cita:
|
CHIDO pa´los que hablan castellano Hey, Es Muy Buen "truco", Lastima Que Las Cantidades Salen Castellanizadas... Por Ejemplo: 2536 Sale Como: Dos Mil Quinientas Treinta Y Seis. Pero Pa´ Los Que Hablan Español Latino Seria: Dos Mil Quinietos Treinta Y Seis. Pero Es Bueno Bye. |
Bueno..., abre la macro y modifica el texto en las líneas que lo requieran, le cambias la "a" por la "o" y agregas la "n" faltante en "Quinietos" Saludos... |
Como le hago para modificar el macro, y agregar 00/100 M.N. que es la terminacion para expresar una cifra en letras en mi pais mexico, ejemplo: $1526.15 "Un mil quinientos veintiseis pesos 15/100 M.N." Gracias!!! |
Ya hice todo lo decia en los pasos pero cuando ejecuto la funcion me salta un aviso que dice #¡VALOR!. QUe tengo que hacer para que Funcione?? Muchas Gracias :-) :arriba: |
pensaba subir el archivo con un ejemplo pero como anexo el archivo Aqui les dejo el archivo en excel con lo antes mencionado.... cien pesos 10/100 mn espero les serva saludos... |
Números con decimales Cita:
Por ejemplo: 154.22 te dirá: Son pesos: ciento cincuenta y cuatro con veintidós centavos. 1·En la casilla B3 escribí un número cualquiera. Configurala para que tenga solo dos decimales. 2·En la C3 poné "=ENTERO(B3)" sin las comillas por supuesto. 3·En la D3 poné "=(B3-C3)*100" 4·En la E3 poné "Son pesos:" 5· En la F3 poné "=letras(C3)" 6· En la G3 poné "con" 7· En la H3 poné "=letras(D3)" 8· En la I3 poné "centavos" 9· Ajustá los anchos de columnas, y ocultá las columnas C y D. 10· Listo. Espero que te funcione. |
Para el que no quiere instalar dll; delarara la funcion en un Módulo nuevo... Herramientas > Macro> Editor de Visual Basic // Insertar Módulo Cita:
LO que no he logrado es que en la misma función coloque xxx pesos; pero eso lo tengo solucionado de la siguiente manera: =num_letras(b1)&" pesos" |
Hola! Porque sigo las instrucciones, y hago todo a la perfeccion y cuando le pongo =letra(B1) me pone: #¿nombre? Gracias!! |
Porque no tienes la funcion |
Cita:
hay un problema para cuando escribo 2.500.000 y 2.000.500 el cual no coloca la palabra mil en el primer caso, me podrían ayudar ? Muchas gracias Ejemplo 2000500 Son pesos: dos millones quinientos 2500000 Son pesos: dos millones quinientos |
mejorado y corregido Function num_letras(Numero As Double) As String Dim Letras As String Dim HuboCentavos As Boolean Dim Decimales As Double Decimales = Numero - Int(Numero) Numero = Int(Numero) 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) = "DIESCISEIS" Numeros(17) = "DIESCISIETE" Numeros(18) = "DIESCIOCHO" Numeros(19) = "DIESCINUEVE" 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 '*---> Centenas de Millón If (Numero < 1000000000) And (Numero >= 100000000) Then If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then Letras = Letras & "cien millones " 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 < 100000000) And (Numero >= 10000000) Then If Int(Numero / 1000000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000000)) Letras = Letras & " MILLONES " Numero = Numero - (Int(Numero / 1000000) * 1000000) Else Letras = Letras & Numeros(Int(Numero / 10000000) * 10) Numero = Numero - (Int(Numero / 10000000) * 10000000) If Numero > 1000000 Then Letras = Letras & " y " End If End If End If '*---> Unidades de Millón If (Numero < 10000000) And (Numero >= 1000000) Then If Int(Numero / 1000000) = 1 Then Letras = Letras & " UN MILLON " 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 < 1000000) And (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 " Else Letras = Letras & " " End If End If Numero = Numero - (Int(Numero / 100000) * 100000) End If '*---> Decenas de Millar If (Numero < 100000) And (Numero >= 10000) Then If Int(Numero / 1000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000)) Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) Else Letras = Letras & Numeros(Int(Numero / 10000) * 10) Numero = Numero - (Int((Numero / 10000)) * 10000) If Numero > 1000 Then Letras = Letras & " Y " Else Letras = Letras & " MIL " End If End If End If '*---> Unidades de Millar If (Numero < 10000) And (Numero >= 1000) Then If Int(Numero / 1000) = 1 Then Letras = Letras & " " Else Letras = Letras & Numeros(Int(Numero / 1000)) End If Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) End If '*---> Centenas If (Numero < 1000) And (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 < 100) And (Numero > 9) Then If Numero < 31 Then Letras = Letras & Numeros(Int(Numero)) Numero = Numero - Int(Numero) Else Letras = Letras & Numeros(Int((Numero / 10)) * 10) Numero = Numero - (Int((Numero / 10)) * 10) If Numero > 0.99 Then Letras = Letras & " Y " End If End If End If '*---> Unidades If (Numero < 10) And (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 & " PESOS " Letras = Letras & Format(Decimales * 100, "00") & "/100 M.N." End If num_letras = Letras End Function |
Cita:
Hola Use tu codigo y si pongo 500000 Me pone QUINIENTOS PESOS 00/100 MN enves de QUINIENTOS MIL PESOS.. por otra parte como le puedo hacer para que se guarde el modulo y no lo tenga que insertar cada vez que abro exel. Gracias Saludos |
Hola visita la siguiente web en el encontraras un ejemplo....ya practico... saludos... www.myweb.k25.net |
es facil fijate: -en una celda le sacas el entero a tu cantidad y se la restas al mismo, cosa que te quedas con el decimal solamente. -en otra celda hacer lo sgte a la celda del decimal :=CONCATENAR(" y 00/",TEXTO(E40,"00")) eto te dara " y 00/cantidad " -en otra celda ya tienes logicamente la funcion =letras(numeros) - bueno ya tienes todo.. en la celda final donde arrojaras las letras pondras lo sgte: =CONCATENAR(B40,F40," Nuevos Soles") - En tu caso reemplazaras Nuevos Soles por tu moneda de tu pais.. - y para finalizar las celdas anteriores las formatearas en colo balnco el texto para que no se vean. Es Todo. Alejandro M. |
buen truco compa slaudos |
Numero A Texto HOLA: BAJE EL MACRO, LO INSTALE DE ACUERDO A LAS INSTRUCCIONES PERO NO FUNCIONA, YO TENGO EL 2000 EN INGLES, ALGUIEN PODRÍA INDICARME, CASI PASO POR PASO COMO INSTALARLO YA QUE ME MARCA UN ERROR Y ME DICE QUE TENGO QUE CAMBIAR LA SEGUIRDAD DEL MACRO Y ACEPTARLO, (COSA QUE YA HICE), SIN EMBARGO CUANDO PONGO LA FORMULA ME SALE #NAME? SI ALGUIEN FUERA TAN AMABLE DE AYUDARME, HE ESTADO INTENTANDO TODO LO QUE ME INDICA EL EXCEL Y NO LOGRO QUE EL NUMERO SE CONVIERTA EN TEXTO, MI CORREO ES [email protected]:si: |
Asumo que la macro la has colocado en un módulo Visual Basic (en la hoja de Excel >Herramientas>Macro>Editor de VB). 1.- En la celda que deseas que aparezcan el texto, escribe "=num_letras(H2)" ; sin las comillas. 2.- En la celda H2, escribe el valor numérico que deseas convertir. num_letras es el nombre de la función. H2 es la celda de la que la función tomará el valor para convertirlo. Saludos.... |
|
duda para euros tengo un problema y es q e modificado vuestro macro para euros pero lo centimos de euros me los sigue poniendo en numeros, me haria alguien el favor de decirme q falta para ponerlos en letras,es q me e kedao bloqeao este es el macro: Function num_letras(Numero As Double) As String Dim Letras As String Dim HuboCentavos As Boolean Dim Decimales As Double Decimales = Numero - Int(Numero) Numero = Int(Numero) 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 '*---> Centenas de Millón If (Numero < 1000000000) And (Numero >= 100000000) Then If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then Letras = Letras & "cien millones " 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 < 100000000) And (Numero >= 10000000) Then If Int(Numero / 1000000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000000)) Letras = Letras & " MILLONES " Numero = Numero - (Int(Numero / 1000000) * 1000000) Else Letras = Letras & Numeros(Int(Numero / 10000000) * 10) Numero = Numero - (Int(Numero / 10000000) * 10000000) If Numero > 1000000 Then Letras = Letras & " y " End If End If End If '*---> Unidades de Millón If (Numero < 10000000) And (Numero >= 1000000) Then If Int(Numero / 1000000) = 1 Then Letras = Letras & " UN MILLON " 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 < 1000000) And (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 " Else Letras = Letras & " " End If End If Numero = Numero - (Int(Numero / 100000) * 100000) End If '*---> Decenas de Millar If (Numero < 100000) And (Numero >= 10000) Then If Int(Numero / 1000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000)) Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) Else Letras = Letras & Numeros(Int(Numero / 10000) * 10) Numero = Numero - (Int((Numero / 10000)) * 10000) If Numero > 1000 Then Letras = Letras & " Y " Else Letras = Letras & " MIL " End If End If End If '*---> Unidades de Millar If (Numero < 10000) And (Numero >= 1000) Then If Int(Numero / 1000) = 1 Then Letras = Letras & " " Else Letras = Letras & Numeros(Int(Numero / 1000)) End If Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) End If '*---> Centenas If (Numero < 1000) And (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 < 100) And (Numero > 9) Then If Numero < 31 Then Letras = Letras & Numeros(Int(Numero)) Numero = Numero - Int(Numero) Else Letras = Letras & Numeros(Int((Numero / 10)) * 10) Numero = Numero - (Int((Numero / 10)) * 10) If Numero > 0.99 Then Letras = Letras & " Y " End If End If End If '*---> Unidades If (Numero < 10) And (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 & " CON " Letras = Letras & Format(Decimales * 100, "00") & " €" End If num_letras = Letras End Function |
Gracias amigo Cita:
Alberto |
Re: Pasar de números a letras en Excel Revise el programa y si, como alguien habia puesto antes, cuanto se colocan centenas de millar, solo pone las centenas, por ejemplo: 500000: quinientos Ya modifique el código para que no pase, ahora pueden utilizar el siguiente, solo que yo puse unidad de "kilogramos" por que es la utilice, si quieren cambiar, solo se van al final y cambiar el texto o lo eliminan: Function num_letras(Numero As Double) As String Dim Letras As String Dim HuboCentavos As Boolean Dim Decimales As Double Decimales = Numero - Int(Numero) Numero = Int(Numero) Dim Numeros(90) As String Numeros(0) = "cero" Numeros(1) = "un" 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) = "veintiun" 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 '*---> Centenas de Millón If (Numero < 1000000000) And (Numero >= 100000000) Then If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then Letras = Letras & "cien millones " 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 < 100000000) And (Numero >= 10000000) Then If Int(Numero / 1000000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000000)) Letras = Letras & " millones " Numero = Numero - (Int(Numero / 1000000) * 1000000) Else Letras = Letras & Numeros(Int(Numero / 10000000) * 10) Numero = Numero - (Int(Numero / 10000000) * 10000000) If Numero > 1000000 Then Letras = Letras & " y " End If End If End If '*---> Unidades de Millón If (Numero < 10000000) And (Numero >= 1000000) Then If Int(Numero / 1000000) = 1 Then Letras = Letras & " un millon " 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 < 1000000) And (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 " Else Letras = Letras & " " End If If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then Letras = Letras & " " Else Select Case (Numero / 100000) Case 2 Letras = Letras & " mil " Case 3 Letras = Letras & " mil " Case 4 Letras = Letras & " mil " Case 5 Letras = Letras & " mil " Case 6 Letras = Letras & " mil " Case 7 Letras = Letras & " mil " Case 8 Letras = Letras & " mil " Case 9 Letras = Letras & " mil " End Select End If If (Numero > 100000) And (Int(Numero / 1000) <> (Numero / 1000)) And ((Int((Int(Numero / 1000)) / 100)) = ((Int(Numero / 1000)) / 100)) Then Letras = Letras & " mil " End If End If Numero = Numero - (Int(Numero / 100000) * 100000) End If '*---> Decenas de Millar If (Numero < 100000) And (Numero >= 10000) Then If Int(Numero / 1000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000)) Letras = Letras & " mil " Numero = Numero - (Int(Numero / 1000) * 1000) Else Letras = Letras & Numeros(Int(Numero / 10000) * 10) Numero = Numero - (Int((Numero / 10000)) * 10000) If Numero > 1000 Then Letras = Letras & " y " Else Letras = Letras & " mil " End If End If End If '*---> Unidades de Millar If (Numero < 10000) And (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 < 1000) And (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 < 100) And (Numero > 9) Then If Numero < 31 Then Letras = Letras & Numeros(Int(Numero)) Numero = Numero - Int(Numero) Else Letras = Letras & Numeros(Int((Numero / 10)) * 10) Numero = Numero - (Int((Numero / 10)) * 10) If Numero > 0.99 Then Letras = Letras & " y " End If End If End If '*---> Unidades If (Numero < 10) And (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 & " kilogramos " End If num_letras = Letras End Function |
Re: Pasar de números a letras en Excel Recargado y remasterizado, con cuatro diferentes monedas: Saludos! 'Funciones para convertir de números a letras 'Llamada : Letras(Número,Formato) - Formato 1-Pesos, 2-Dólares, 3-Euros, 4 Francos Suizos 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 & "UN" 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", "VEINTE", "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 < 10 Then cad2 = cad2 & Unidades(num2, num2) Else cad2 = cad2 & Decenas(num2, num2 Mod 10) End If End If Cientos = cad2 End Function Function Miles(num4) If (num4 >= 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 If mon = 2 Then letras = "(" & cantlm & " DOLARES " & cents1 & "/100 U.S.D.)" Else If mon = 3 Then letras = "(" & cantlm & " EUROS " & cents1 & "/100 €)" Else letras = "(" & cantlm & " FRANCOS SUIZOS " & cents1 & "/100 CHF)" End If End If End If End Function |
Re: Pasar de números a letras en Excel buena tarde gracias por los tips de convertir numeros a letras en excel ya logre bajar la macro para convertir numeros a letras pero en mi caso soy de guatemala pongo esta cantidad Q1500.20 en letras me pone mil quinientos pero omite los centavos... gracias de antemano por su ayuda talvez alguien puede ayudarme saludos |
Re: Pasar de números a letras en Excel Revive éste hilo...muy visto por cierto... Normalmente los centavos no aparecen en texto, en México se usa que después del texto, los centavos aparecen como "20/100 M.N."; sí en Guatemala usan texto habrá que modificar la macro para los centavos aparezcan en texto. Inténtalo; lo principal ya está mensajes arriba.... Saludos.... |
Re: Pasar de números a letras en Excel hola a todos, he realizado los pasos que indican pero me sale error, alguien podria decirme paso a paso como debo de realizar el procedimiento para que me salga una cantidad de numeros a letras en excel por favor, se lo agradecere mucho, saludos. |
Re: Pasar de números a letras en Excel ¿Ya leíste TODO el hilo? ¿Qué error te regresa? ¿Ya escribiste la función? Saludos... |
Re: Pasar de números a letras en Excel [Hola Miago ya hice todo el procedimiento y me funciona pero cuando cierro la hora y la vuelvo a abrirr me sale eror como que no me reconoce la formula, como hago para tenerlo fijo y utilizarlo como funcion de excel gracias |
Re: Pasar de números a letras en Excel [Hola Amigo ya hice todo el procedimiento y me funciona pero cuando cierro la hoja y la vuelvo a abrir me sale error como que no me reconoce la formula, como hago para tenerlo fijo y utilizarlo como funcion de excel gracias |
Re: Pasar de números a letras en Excel Con la hoja de Excel abierta; abre el editor de VB, selecciona Insertar Módulo; pegas la macro; guardas la macro con el nombre que desees. Cierras el editor. En la celda en la que aplicarás la función; usa el nombre de la macro en la fórmula para convertir los números a texto. Salva (guarda) la hoja y en la siguiente apertura debe reconocer la fórmula y la función. Saludos... |
Re: Pasar de números a letras en Excel bueno primero knada agradezco al brother kpudo hacer el string y para los que siguen con el problema de los cientos de miles solo modfique unas cosillas, de hecho casi nada, espero y es y les funcion como ami y gracias nuevamente al brother juan luis. Function num_letras(Numero As Double) As String Dim Letras As String Dim HuboCentavos As Boolean Dim Decimales As Double Decimales = Numero - Int(Numero) Numero = Int(Numero) 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) = "DIESCISEIS" Numeros(17) = "DIESCISIETE" Numeros(18) = "DIESCIOCHO" Numeros(19) = "DIESCINUEVE" 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 '*---> Centenas de Millón If (Numero < 1000000000) And (Numero >= 100000000) Then If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then Letras = Letras & "cien millones " 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 < 100000000) And (Numero >= 10000000) Then If Int(Numero / 1000000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000000)) Letras = Letras & " MILLONES " Numero = Numero - (Int(Numero / 1000000) * 1000000) Else Letras = Letras & Numeros(Int(Numero / 10000000) * 10) Numero = Numero - (Int(Numero / 10000000) * 10000000) If Numero > 1000000 Then Letras = Letras & " y " End If End If End If '*---> Unidades de Millón If (Numero < 10000000) And (Numero >= 1000000) Then If Int(Numero / 1000000) = 1 Then Letras = Letras & " UN MILLON " 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 < 1000000) And (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 MIL" Case 7 Letras = Letras & "SETECIENTOS MIL" Case 9 Letras = Letras & "NOVECIENTOS MIL" 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 & " " End If End If Numero = Numero - (Int(Numero / 100000) * 100000) End If '*---> Decenas de Millar If (Numero < 100000) And (Numero >= 10000) Then If Int(Numero / 1000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000)) Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) Else Letras = Letras & Numeros(Int(Numero / 10000) * 10) Numero = Numero - (Int((Numero / 10000)) * 10000) If Numero > 1000 Then Letras = Letras & " Y " Else Letras = Letras & " MIL " End If End If End If '*---> Unidades de Millar If (Numero < 10000) And (Numero >= 1000) Then If Int(Numero / 1000) = 1 Then Letras = Letras & " " Else Letras = Letras & Numeros(Int(Numero / 1000)) End If Letras = Letras & " MIL " Numero = Numero - (Int(Numero / 1000) * 1000) End If '*---> Centenas If (Numero < 1000) And (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 < 100) And (Numero > 9) Then If Numero < 31 Then Letras = Letras & Numeros(Int(Numero)) Numero = Numero - Int(Numero) Else Letras = Letras & Numeros(Int((Numero / 10)) * 10) Numero = Numero - (Int((Numero / 10)) * 10) If Numero > 0.99 Then Letras = Letras & " Y " End If End If End If '*---> Unidades If (Numero < 10) And (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 & " PESOS " Letras = Letras & Format(Decimales * 100, "00") & "/100 M.N." End If num_letras = Letras End Function |
Gracias Por La Macro... Gracias Por La Ayuda Me Esta Siendo De Gran Utilidad En Mi Trabajo... Pero Como Le Hago Para Que La Utilice En Otros Libros De Excel? Sin Esta Copiando En Cada Uno. Por Su Ayuda Graias.. |
Re: Pasar de números a letras en Excel Opcion 1: Conviertelo en complemento (xla) y despues activalo en HERRAMIENTAS - COMPLEMENTOS Opcion 2: Guardalo en el libro Personal.xls Abraham |
Re: Pasar de números a letras en Excel Cita:
|
Re: Pasar de números a letras en Excel Pega la macro en un modulo "normal". guardalo el libro con el nombre que desees, ahora, en "guardar como", elige "Complemento de microsoft excel", y listo. Anda a HERRAMIENTAS - COMPLEMENTOS, activalo y ya Abraham |
Re: mejorado y corregido Cita:
|
Re: Pasar de números a letras en Excel Este es el que mejor me funciono, Gracias |
Re: Pasar de números a letras en Excel Cita:
|
Respuesta: Pasar de números a letras en Excel disculpen la intro.. pero copie el ultimo codigo y lo adapte para q sea en Moneda Nacional ( Nuevos Soles ) .. aqui existen algunas correciones. 'Funciones para convertir de números a letras 'Llamada : Letras(Número,Formato) - Formato 1-N.S., 2-Dólares, 3-Euros, 4 Francos Suizos 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, 1) End If Else If res = 0 Then Cad1 = Cad1 & "E" Else Cad1 = Cad1 & "I" Cad1 = Cad1 & Unidades(num1 Mod 10, 1) 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 < 10 Then cad2 = cad2 & Unidades(num2, num2) Else cad2 = cad2 & Decenas(num2, num2 Mod 10) End If End If Cientos = cad2 End Function Function Miles(num4) If (num4 >= 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 & " con " & cents1 & "/100 NUEVOS SOLES)" Else If mon = 2 Then letras = "(" & cantlm & " con " & cents1 & "/100 DOLARES AMERICANOS)" Else If mon = 3 Then letras = "(" & cantlm & " con " & cents1 & "/100 EUROS)" Else letras = "(" & cantlm & " con " & cents1 & "/100 CHF)" End If End If End If End Function Y gracias a todos los colaboradores... |
ayuda urgente hola quisiera que alguien me ayude sobre este tema porque hago todo lo correcto pero cuando cierro el archivo y lo vuelvo a abrir me sale error |
Respuesta: Pasar de números a letras en Excel Bienvenid@... Dices que haces lo correcto.... ¿Como escribes la función? ¿Qué error es? |
Necesito ayuda cuando cierro e libro de excel y luego lo vuelvo a abrir se borra todo.... por favor alguien me diga que puedo hacer |
Respuesta: Pasar de números a letras en Excel Cita:
|
agradecimiento y un pequeño ajuste al excelente codigo de pedreti :arriba:EL AJUSTE AL FINAL NOS PERMITE SIMPLEMENTE LLAMAR LA FUNCION ASI : =num_letras(D13) Y ASI LA MISMA FUNCION LE AGREGA LA PALABRA PESOS Y CENTAVOS EN LOS CASOS REQUERIDOS EJ. 100 = CIEN PESOS O 100, 01 = CIEN PESOS CON UN CENTAVO :aplauso: Function num_letras(Numero As Double) As String Dim Letras As String Dim HuboCentavos As Boolean Dim Decimales As Double Decimales = Numero - Int(Numero) Numero = Int(Numero) 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(20) = "veinte" Numeros(30) = "treinta" Numeros(40) = "cuarenta" Numeros(50) = "cincuenta" Numeros(60) = "sesenta" Numeros(70) = "setenta" Numeros(80) = "ochenta" Numeros(90) = "noventa" Do '*---> Centenas de Millón If (Numero < 1000000000) And (Numero >= 100000000) Then If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then Letras = Letras & "cien millones " 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 < 100000000) And (Numero >= 10000000) Then If Int(Numero / 1000000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000000)) Letras = Letras & " millones " Numero = Numero - (Int(Numero / 1000000) * 1000000) Else Letras = Letras & Numeros(Int(Numero / 10000000) * 10) Numero = Numero - (Int(Numero / 10000000) * 10000000) If Numero > 1000000 Then Letras = Letras & " y " End If End If End If '*---> Unidades de Millón If (Numero < 10000000) And (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 < 1000000) And (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 " Else Letras = Letras & " " End If End If Numero = Numero - (Int(Numero / 100000) * 100000) End If '*---> Decenas de Millar If (Numero < 100000) And (Numero >= 10000) Then If Int(Numero / 1000) < 16 Then Letras = Letras & Numeros(Int(Numero / 1000)) Letras = Letras & " mil " Numero = Numero - (Int(Numero / 1000) * 1000) Else Letras = Letras & Numeros(Int(Numero / 10000) * 10) Numero = Numero - (Int((Numero / 10000)) * 10000) If Numero > 1000 Then Letras = Letras & " y " Else Letras = Letras & " mil " End If End If End If '*---> Unidades de Millar If (Numero < 10000) And (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 < 1000) And (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 < 100) And (Numero > 9) Then If Numero < 16 Then Letras = Letras & Numeros(Int(Numero)) Numero = Numero - Int(Numero) Else Letras = Letras & Numeros(Int((Numero / 10)) * 10) Numero = Numero - (Int((Numero / 10)) * 10) If Numero > 0.99 Then Letras = Letras & " y " End If End If End If '*---> Unidades If (Numero < 10) And (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 & " pesos con " Letras = Letras & Format(Decimales * 100, "00") & " centavos" Else Letras = Letras & " pesos " End If num_letras = Letras End Function |
Respuesta: Pasar de números a letras en Excel antes que nada queria agradecer por las listas con ejemplos, son de gran utilidad y sirven de mucho. este ultimo codigo sigue teniendo problemas con los 500000 (quinientos) y los 2500000 que pone dos millones quinientos igual que si fuese 2000500. lastima que no se tanto, sino hubiese hecho el intento de corregirlo, si alguien puede corregirlo se lo voy a agradecer. |
| La zona horaria es GMT -6. Ahora son las 01:24. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.