Grupos de Google ya no admite nuevas publicaciones ni suscripciones de Usenet. El contenido anterior sigue siendo visible.

Re: numeros a letras sin macros

Visto 3.175 veces
Saltar al primer mensaje no leído

sin esto-@colacao.es Quber

no leída,
9 oct 2005, 17:03:059/10/05
a
 
Está muy bien, ¿como lo hiciste? ¿concatenando texto?
¿Faltan los decimales?
saludos

KM ** Ve

no leída,
10 oct 2005, 5:20:4410/10/05
a
hola es muy bueno pero el libro esta Bloqiado como hacer para aplicar esta formula a otro libro.
Gracias
<Willi@m> escribió en el mensaje news:OsWtx3Gz...@tk2msftngp13.phx.gbl...
Mira este a ver como te parece? y me cuentas. Chao.
        Willi@am
 
 
gracias gonzalo a mi me intersa me podrias enviar el archivo a
ir...@losaltos.edu.mx

"gonzalo chable" wrote:

> quiero enviarles un archivo para convertir numeros a letras sin usar macros,
> pero no encontré como anexarlo, datos del autor en el documento, si a al
> guien la interesa envie un correo a gonzal...@hotmail.com

Willi@m

no leída,
10 oct 2005, 8:27:0210/10/05
a
Hola Quber, me alegra que te haya gustado, si, lo hice concatenando texto, como es una pregunta recurrente en este grupo, el sábado me dio por hacer una pequeña fórmula para ello y me salió esta:
 
=SI(LARGO(A6)<3;"";ELEGIR(IZQUIERDA(DERECHA(A6;3);1)+1;"";SI(DERECHA(A6;2)="00";"CIEN ";"CIENTO ");"DOSCIENTOS ";"TRESCIENTOS ";"CUATROCIENTOS ";"QUINIENTOS ";"SEISCIENTOS ";"SETECIENTOS ";"OCHOCIENTOS ";"NOVECIENTOS "))&SI(O(VALOR(DERECHA(A6;2))<10;VALOR(DERECHA(A6;2))>19);"";SI(VALOR(DERECHA(A6;1))>5;"DIECI";ELEGIR(VALOR(DERECHA(A6;1))+1;"DIEZ ";"ONCE ";"DOCE ";"TRECE ";"CATORCE ";"QUINCE ")))&SI(VALOR(DERECHA(A6;2))<20;"";ELEGIR(IZQUIERDA(DERECHA(A6;2);1)-1;SI(DERECHA(A6;1)="0";"VEINTE ";"VEINTI");"TREINTA ";"CUARENTA ";"CINCUENTA ";"SESENTA ";"SETENTA ";"OCHENTA ";"NOVENTA "))&SI(Y(VALOR(DERECHA(A6;2))>30;DERECHA(A6;1)>"0");"Y ";"")&SI(O(VALOR(DERECHA(A6;2))<10;VALOR(DERECHA(A6;2))>15);ELEGIR(DERECHA(A6;1)+1;"";"UN ";"DOS ";"TRES ";"CUATRO ";"CINCO ";"SEIS ";"SIETE ";"OCHO ";"NUEVE ");"")
 
Esta me devuelve el texto de un grupo de tres cifras, luego es cuestión de concatenarlo, en estos días que tenga un poco de tiempo te implemento los decimales; ojala alguien me ayude a acortar la fórmula un poco, Chao.
 
    Willi@m
 
 

Willi@m

no leída,
10 oct 2005, 11:34:0710/10/05
a
Hola, KM ** Ve, el libro no está bloqueado, la hoja está protegida pero no tiene contraseña, la puedes desproteger a voluntad.
    Para aplicar la fórmula a otro libro, vamos a suponer que tienes el número en la celda "A1", lo que tienes que hacer es dividir el número en grupos de tres cifras con estas fórmulas:
 
Celda "A2" => GrupoBillones =ENTERO((A1-ENTERO(A1/1E+15)*1E+15)/1E+12)
Celda "A3" => GrupoMilMillones =ENTERO((A1-ENTERO(A1/1E+12)*1E+12)/1E+9)
Celda "A4" => GrupoMillones =ENTERO((A1-ENTERO(A1/1E+9)*1E+9)/1E+6)
Celda "A5" => GrupoMiles =ENTERO((A1-ENTERO(A1/1E+6)*1E+6)/1E+3)
Celda "A6" => GrupoUnidades =ENTERO((A1-ENTERO(A1/1E+3)*1E+3)/1E+0)
 
y aplicarle esta fórmula a cada grupo; para eso pegas esta fórmula en la celda "A7" y la arrastras hasta la celda "A11":
 
Celda "A7" => TxtBillones =SI(LARGO(A2)<3;"";ELEGIR(IZQUIERDA(DERECHA(A2;3);1)+1;"";SI(DERECHA(A2;2)="00";"CIEN ";"CIENTO ");"DOSCIENTOS ";"TRESCIENTOS ";"CUATROCIENTOS ";"QUINIENTOS ";"SEISCIENTOS ";"SETECIENTOS ";"OCHOCIENTOS ";"NOVECIENTOS "))&SI(O(VALOR(DERECHA(A2;2))<10;VALOR(DERECHA(A2;2))>19);"";SI(VALOR(DERECHA(A2;1))>5;"DIECI";ELEGIR(VALOR(DERECHA(A2;1))+1;"DIEZ ";"ONCE ";"DOCE ";"TRECE ";"CATORCE ";"QUINCE ")))&SI(VALOR(DERECHA(A2;2))<20;"";ELEGIR(IZQUIERDA(DERECHA(A2;2);1)-1;SI(DERECHA(A2;1)="0";"VEINTE ";"VEINTI");"TREINTA ";"CUARENTA ";"CINCUENTA ";"SESENTA ";"SETENTA ";"OCHENTA ";"NOVENTA "))&SI(Y(VALOR(DERECHA(A2;2))>30;DERECHA(A2;1)>"0");"Y ";"")&SI(O(VALOR(DERECHA(A2;2))<10;VALOR(DERECHA(A2;2))>15);ELEGIR(DERECHA(A2;1)+1;"";"UN ";"DOS ";"TRES ";"CUATRO ";"CINCO ";"SEIS ";"SIETE ";"OCHO ";"NUEVE ");"")
 
Luego concatenas los resultados con una fórmula como esta:
 
Celda "XX" => TextoNúmero =A7&SI(A7="";"";"BILLONES ")&A8&SI(A8="";"";"MIL ")&A9&SI(A9="";"";"MILLONES ")&A10&SI(A10="";"";"MIL ")&A11
 
Esta es la forma difícil, si prefieres puedes optar por este otro procedimiento que es menos engorroso:
Primero Creas un nuevo libro, luego te vas al editor de VB y le agregas un Módulo normal y en él pegas estas líneas de código, ojo con los saltos de línea añadidos en el correo:
 
Sub ActivarTextoNúmero()
'
' ActivarTextoNúmero Macro
' Macro creada el 08/10/2005 por William Posada C. (Siem Ltda.)
'
Dim Nro As String, Matr, Unidad, i As Integer, a
'
  Matr = Array("Unidades", "Miles", "Millones", "MilMillones", "Billones")
  Unidad = Array("", "MIL", "MILLONES", "MIL", "BILLONES")
  Nro = Application.InputBox("Seleccione la celda donde está el número que desea en texto:", "Selecionar Número", Selection.Address)
  For i = 4 To 0 Step -1
    ActiveSheet.Names.Add Name:=Matr(i), RefersTo:= _
      "=INT((" & Nro & "-INT(" & Nro & "/" & 10 ^ (3 * i + 3) & ")*" & 10 ^ (3 * i + 3) & ")/" & 10 ^ (3 * i) & ")", Visible:=False
    ActiveSheet.Names.Add Name:="c" & Matr(i), RefersTo:= _
      "=IF(LEN(" & Matr(i) & ")<3,"""",CHOOSE(LEFT(RIGHT(" & Matr(i) & ",3),1)+1,"""",IF(RIGHT(" & Matr(i) & ",2)=""00"",""CIEN "",""CIENTO ""),""DOSCIENTOS "",""TRESCIENTOS "",""CUATROCIENTOS "",""QUINIENTOS "",""SEISCIENTOS "",""SETECIENTOS "",""OCHOCIENTOS "",""NOVECIENTOS ""))", Visible:=False
    ActiveSheet.Names.Add Name:="t" & Matr(i), RefersTo:= _
      "=IF(OR(VALUE(RIGHT(" & Matr(i) & ",2))<10,VALUE(RIGHT(" & Matr(i) & ",2))>19),"""",IF(VALUE(RIGHT(" & Matr(i) & ",1))>5,""DIECI"",CHOOSE(VALUE(RIGHT(" & Matr(i) & ",1))+1,""DIEZ "",""ONCE "",""DOCE "",""TRECE "",""CATORCE "",""QUINCE "")))", Visible:=False
    ActiveSheet.Names.Add Name:="d" & Matr(i), RefersTo:= _
      "=IF(VALUE(RIGHT(" & Matr(i) & ",2))<20,"""",CHOOSE(LEFT(RIGHT(" & Matr(i) & ",2),1)-1,IF(RIGHT(" & Matr(i) & ",1)=""0"",""VEINTE "",""VEINTI""),""TREINTA "",""CUARENTA "",""CINCUENTA "",""SESENTA "",""SETENTA "",""OCHENTA "",""NOVENTA ""))", Visible:=False
    ActiveSheet.Names.Add Name:="y" & Matr(i), RefersTo:= _
      "=IF(AND(VALUE(RIGHT(" & Matr(i) & ",2))>30,RIGHT(" & Matr(i) & ",1)>""0""),""Y "","""")", Visible:=False
    ActiveSheet.Names.Add Name:="u" & Matr(i), RefersTo:= _
      "=IF(OR(VALUE(RIGHT(" & Matr(i) & ",2))<10,VALUE(RIGHT(" & Matr(i) & ",2))>15),CHOOSE(RIGHT(" & Matr(i) & ",1)+1,"""",""UN "",""DOS "",""TRES "",""CUATRO "",""CINCO "",""SEIS "",""SIETE "",""OCHO "",""NUEVE ""),"""")", Visible:=False
    ActiveSheet.Names.Add Name:="Txt" & Matr(i), RefersTo:= _
      "=c" & Matr(i) & "&t" & Matr(i) & "&d" & Matr(i) & "&y" & Matr(i) & "&u" & Matr(i) & "&IF(" & Matr(i) & "=0,"""",""" & Unidad(i) & " "")", Visible:=False
  Next
  ActiveSheet.Names.Add Name:="TextoNúmero", RefersTo:= _
    "=TxtBillones&TxtMilMillones&TxtMillones&TxtMiles&TxtUnidades", Visible:=False
 
End Sub
 
Cierras el editor de VB, activas la hoja donde quieres tener la fórmula y ejecutas la macro "ActivarTextoNúmero" y sigues las instrucciones, después de ejecutar dicha macro, puedes utilizar la fórmula "=TextoNúmero" en cualquier celda de esa hoja.
Hay que ejecutar la macro en cada hoja que se quiera utilizar la fórmula y solo se puede convertir un número en cada hoja.
Nótese que la macro no tiene que estar en el mismo libro donde se va a usar la fórmula, por lo que puedes borrar el libro donde pusiste la macro sin ningún problema y el libro donde está la formula queda sin macros.
 
PD. Si quieres ver un listado de todas las fórmulas en el libro, ejecuta esta macro:
 
Private Sub Fórmulas()
'
' FórmulasMacro
' Macro creada el 08/10/2005 por William Posada C. (Siem Ltda.)
'
Dim Nombre As Name
'
  For Each Nombre In Names
    Nombre.Visible = True
  Next
    Selection.ListNames
End Sub
Espero haber despejado las dudas, si se queda algo en el tintero me comentas, Chao.
    Willi@m
 
 

sin esto-@colacao.es Quber

no leída,
10 oct 2005, 18:19:2310/10/05
a
Muchas gracias, yo utilizaba otra fórmula, pero esta está muy bien, por lo distinta que es.
<Willi@m> escribió en el mensaje news:%23NyVsCb...@TK2MSFTNGP09.phx.gbl...

Willi@m

no leída,
11 oct 2005, 16:55:0711/10/05
a
Gracias Héctor Miguel por revisar la fórmula, como verás es un ensayo en un rato libre, pero me animas a depurarla, lo que haré en cuanto pueda, me has dado unas buenas ideas que aprovecharé, Chao.
    Willi@m
 
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje news:ObnPEDjz...@TK2MSFTNGP12.phx.gbl...
hola, chicos !

-> el primer adjunto de William [me parecio que] era muy 'rigido'
    [referencias fijas, constantes y absolutas en los nombres a la celda 'A1' de 'la hoja'] :(
-> las formulas que desarrolla en el sguiente intento [creo] son mas 'amigables'
    [se parecen mas a los sistemas antiguos de traducciones de numero a letra] :))
    [aunque en la 'generacion' por codigo de los nombres y formulas continua la 'rigidez'] :(
-> tiene unas 'lagunas' como en el caso de miles de milones SIN 'millones' o singular/plural
    [no creo que se trate de situaciones 'comunes' pero mas vale tenerlo y no necesitarlo, que...] ;)
-> adjunto un archivo con dos versiones [la de william y la antigua]
    solo empleo nombres en las matrices 'constantes' y 'semi-variables' para poder usar unidades de 'medicion'
    como pudieran ser monedas femeninas o masculinas y hasta 'compuestas' [solo de dos palabras]

[creo que] solo es una pena que el adjunto no lo podra obtener quien entra a los foros por la interfase web <\°|°/>

saludos,
hector.


Héctor Miguel

no leída,
11 oct 2005, 17:14:0511/10/05
a
hola. William !

> Gracias... por revisar la formula... me animas a depurarla... buenas ideas que aprovechare

lo que pasa es que soy un 'apasionado del tema' desde hace unos cuantos... 'meses' [mas de 200] :))
me agradara si compartes las depuraciones que vayas haciendo ;)

saludos,
hector.


Willi@m

no leída,
11 oct 2005, 17:24:5111/10/05
a
Claro que lo haré, inclusive tengo una función que hice hace mucho tiempo que es bastante general, en cuanto pueda la posteo.
Yo también soy apasionado en el tema y no entiendo porque no la han incluido en el Excel, excepto una chapuzada que después quitaron.
Nos seguimos viendo cuando disponga de algún rato libre, Chao.
    Willi@m
 
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje news:uLkJ5iq...@TK2MSFTNGP15.phx.gbl...

Héctor Miguel

no leída,
4 dic 2005, 1:19:074/12/05
a
hola, Gabriel !

> Descargue el archivo, encontre un numero en la celda A1... la celda A2 muestra ca cantidad de la celda A1 en... texto.
> Quite las protecciones y me encontre que en la celda A2 dice "=TextoNumero", pero donte estan las formulas
> no encontre celdas nombradas ni nada parecido como para copiarlas a otra hoja.
> Mejor dicho no entiendo lo que hizo...

creo que le tocaria al creador del libro explicarte los pasos que siguio [WP es frecuente mas no constante... asi que]
tomandome la libertad de exponer lo que el mismo ha expuesto en otros mensajes... 'te platico'... :D

-> se trata de nombres asignados NO a celdas/rangos... sino a ->formulas<-
-> las puedes 'revisar' desde [menu] insertar / nombre / definir...
-> si los nombres estan ocultos... puedes mostrarlos siguiendo los pasos:
a) ve al editor de vba -> atajo = {Alt} + {F11}
b) abre la ventana de inmediato -> atajo = {Ctrl} + G
c) copia/pega la siguiente linea [y pulsas enter al final]...
for each n in names: n.visible=true: next

-> [comentario 'aparte']... 'tal como estan' los nombres... [creo que] no podras copiarlos a otra hoja :-(
a menos que hagas una copia de la hoja [o vuelvas a 'crear' TODOS los nombres en la 'nueva' hoja] :D
solo toma en consideracion que se trata de nombres-formula donde es importante que celda esta activa al crearlos <= OJO
[y probablemente]... te sera mas conveniente 'retirar' la referencia a la hoja y dejar SOLO el caracter '!' [antes de una referencia de celda]

saludos,
hector.

p.d. parece que 'vienes del futuro' :)) o... tu sistema trae adelantadas la fecha y la hora ;)


Gabriel Raigosa

no leída,
4 dic 2005, 9:23:304/12/05
a
Saludos Hector:

Muy agradecido por su clara su explicación.

Mientas mas estudio "Excel mas cuenta me doy que menos se", no tenia ni idea
que se podía nombra una fórmula. Cada día le encuentro mas cosas a este
programa, muchos me dicen que me ponga a aprender acces y yo estudio y
practico con el Excel a diario.

Hoy aprendí algo nuevo, además de que regrese del 15 de diciembre a la época
actual (tenia la fecha adelantada, algunas veces lo hago, pruebas con
funciones de fecha y hora).

Gabriel Raigosa


0 mensajes nuevos