¿como diseñar esta macro?

06/01/2006 - 23:38 por Ramón | Informe spam
Saludos a la comunidad
Debido a que tengo que poner una información generada en un archivo pdf a
excel para imprimirla en un formato, al copiarla en excel me pone los cuatro
datos juntos y yo necesito separarlos, por ejemplo, ya una vez copiados los
datos los pongo en la celda A1, BB0484 50 lavavajillas 88.75; ahora
necesito copiar BB0484 a la celda F11, 50 a la F12, lavavajillas a la G11 y
88.75 a la G15. Antes de copiar el 88.75 debo insertar espacios en blanco
entre este valor y lavavajillas ya que la descripción del producto puede ser
hasta de 35 caracteres. Si lo hago con el grabador de macros, me deja grabado
estos valores y cuando necesito tomar otros, siempre me aparecen los
iniciales.
Agradesco de antemano la valiosa ayuda

Ramón

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/01/2006 - 06:36 | Informe spam
hola, Ramón !

... ejemplo... en la celda A1, BB0484 50 lavavajillas 88.75
... necesito copiar BB0484 a la celda F11, 50 a la F12, lavavajillas a la G11 y 88.75 a la G15
Antes de copiar el 88.75 debo insertar espacios en blanco entre este valor y lavavajillas
ya que la descripcion del producto puede ser hasta de 35 caracteres.
... con el grabador de macros, me deja grabado estos valores y cuando necesito tomar otros [...]



no estoy seguro de si 'realmente' necesitas utilizar macros -?-
suponiendo que no... prueba con las siguientes formulas...
[F11]...
=izquierda(a1,hallar(" ",a1)-1)
[F12]...
=extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1," ","",1))-hallar(" ",a1))
[G11]...
=extrae(a1,hallar(" ",sustituir(a1," ","",1))+2,buscar(2,1/(extrae(a1,fila(indirecto("1:100")),1)=" "),fila(indirecto("1:100")))-hallar(" ",sustituir(a1," ","",1))-2)
[G15]...
=derecha(a1,largo(a1)-hallar("|",sustituir(a1," ","|",largo(a1)-largo(sustituir(a1," ","")))))

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
y si requieres que los resultados en 'F12' y 'G15' sean considerados como valores numericos...
-> agrega un doble-menos despues del signo '=' p.e. 'F12' =--extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1," ","",1))-hallar(" ",a1))

saludos,
hector.
Respuesta Responder a este mensaje
#2 Ramón
09/01/2006 - 19:50 | Informe spam
Hector Miguel, muchas gracias por las solución que me diste, fué excelente.
Solamente una pregunta para completar la clase que me diste:
¿Como interpreta la función hallar a "|"?

Gracias nuevamente

Ramón

"Héctor Miguel" escribió:

hola, Ramón !

> ... ejemplo... en la celda A1, BB0484 50 lavavajillas 88.75
> ... necesito copiar BB0484 a la celda F11, 50 a la F12, lavavajillas a la G11 y 88.75 a la G15
> Antes de copiar el 88.75 debo insertar espacios en blanco entre este valor y lavavajillas
> ya que la descripcion del producto puede ser hasta de 35 caracteres.
> ... con el grabador de macros, me deja grabado estos valores y cuando necesito tomar otros [...]

no estoy seguro de si 'realmente' necesitas utilizar macros -?-
suponiendo que no... prueba con las siguientes formulas...
[F11]...
=izquierda(a1,hallar(" ",a1)-1)
[F12]...
=extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1," ","",1))-hallar(" ",a1))
[G11]...
=extrae(a1,hallar(" ",sustituir(a1," ","",1))+2,buscar(2,1/(extrae(a1,fila(indirecto("1:100")),1)=" "),fila(indirecto("1:100")))-hallar(" ",sustituir(a1," ","",1))-2)
[G15]...
=derecha(a1,largo(a1)-hallar("|",sustituir(a1," ","|",largo(a1)-largo(sustituir(a1," ","")))))

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
y si requieres que los resultados en 'F12' y 'G15' sean considerados como valores numericos...
-> agrega un doble-menos despues del signo '=' p.e. 'F12' =--extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1," ","",1))-hallar(" ",a1))

saludos,
hector.



Respuesta Responder a este mensaje
#3 KL
09/01/2006 - 21:02 | Informe spam
Hola chicos,

Otra manera de hacerlo (mas corta e igual de eficiente, aunque emplea una formula matricial):

[F1] =IZQUIERDA(A1;HALLAR(" ";A1)-1)
31 Vs. 31 caracteres, 2 Vs. 2 llamadas de funciones

[F12] =IZQUIERDA(SUSTITUIR(A1;F11&" ";"");HALLAR(" ";SUSTITUIR(A1;F11&" ";""))-1)
75 Vs. 78 caracteres, 4 Vs. 5 llamadas de funciones

[G11] =EXTRAE(A1;LARGO(F11&F12)+3;LARGO(A1)-LARGO(F11&F12&G15)-3)
59 Vs. 166 caracteres, 4 Vs. 11 llamadas de funciones

[G15] {ÞRECHA(A1;COINCIDIR(" ";EXTRAE(A1;LARGO(A1)-FILA(INDIRECTO("1:"&LARGO(A1)));1);0))}
Esta de aqui es MATRICIAL por lo que se introduce mediante Ctrl+Shift+Enter, no solo Enter. La he cogido prestada de Bob Umlas:
http://www.emailoffice.com/excel/ar...umlas.html
84 Vs. 94 caracteres, 7 Vs. 7 llamadas de funciones

Total: 249 Vs. 369 caracteres, 17 Vs. 25 llamadas de funciones

Saludos,
KL


"Héctor Miguel" wrote in message news:
hola, Ramón !

... ejemplo... en la celda A1, BB0484 50 lavavajillas 88.75
... necesito copiar BB0484 a la celda F11, 50 a la F12, lavavajillas a la G11 y 88.75 a la G15
Antes de copiar el 88.75 debo insertar espacios en blanco entre este valor y lavavajillas
ya que la descripcion del producto puede ser hasta de 35 caracteres.
... con el grabador de macros, me deja grabado estos valores y cuando necesito tomar otros [...]



no estoy seguro de si 'realmente' necesitas utilizar macros -?-
suponiendo que no... prueba con las siguientes formulas...
[F11]...
=izquierda(a1,hallar(" ",a1)-1)
[F12]...
=extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1," ","",1))-hallar(" ",a1))
[G11]...
=extrae(a1,hallar(" ",sustituir(a1," ","",1))+2,buscar(2,1/(extrae(a1,fila(indirecto("1:100")),1)="
"),fila(indirecto("1:100")))-hallar(" ",sustituir(a1," ","",1))-2)
[G15]...
=derecha(a1,largo(a1)-hallar("|",sustituir(a1," ","|",largo(a1)-largo(sustituir(a1," ","")))))

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
y si requieres que los resultados en 'F12' y 'G15' sean considerados como valores numericos...
-> agrega un doble-menos despues del signo '=' p.e. 'F12' =--extrae(a1,hallar(" ",a1)+1,hallar(" ",sustituir(a1,"
","",1))-hallar(" ",a1))

saludos,
hector.

Respuesta Responder a este mensaje
#4 Héctor Miguel
10/01/2006 - 02:44 | Informe spam
hola, Ramón !

Solamente una pregunta para completar... Como interpreta la funcion hallar a "|"?



la funcion [externa] hallar... esta 'encontrando'...
-> el cambio que hace la funcion [interna] sustituir [al 'convertir' los espacios " " -> al caracter "|"] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#5 Héctor Miguel
10/01/2006 - 02:47 | Informe spam
hola, KL !

Otra manera de hacerlo (mas corta e igual de eficiente, aunque emplea una formula matricial):
[F12] =IZQUIERDA(SUSTITUIR(A1;F11&" ";"");HALLAR(" ";SUSTITUIR(A1;F11&" ";""))-1)
75 Vs. 78 caracteres, 4 Vs. 5 llamadas de funciones
[G11] =EXTRAE(A1;LARGO(F11&F12)+3;LARGO(A1)-LARGO(F11&F12&G15)-3)
59 Vs. 166 caracteres, 4 Vs. 11 llamadas de funciones



[en lo personal]... 'me quedo' con estas dos propuestas de cambio :))
[en lo personal]... la matricial, le habia descartado... -> por matricial :D

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida