Como imprimir mediante una macro solo celdas escritas?

11/09/2005 - 05:47 por jaraya | Informe spam
Deseo que mediante una macro asignada a un boton, inicie proceso de impresion
solo a columnas y filas con escrituras.Es decir como puedo hacer para que
automaticamente reconosca las filas y columnas y se establesca sola la area
de impresion.

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
13/09/2005 - 00:10 | Informe spam
hola, jaraya !

... es la Hoja 6 con el nombre de Stock y las columnas a imprimir... en la C4 hasta la E78 en adelante
... dentro de las columnas c,d y e se van agregando linaes.
anote tu formula pero debe haber error de escritura... escribirla con estos datos.



-> no comentas si la 'ultima fila' pudiera corresponder a la columna c, d o e -?-
[asi que]... voy a suponer que pudiera ser... en cualquiera de esas columnas :)
-> tampoco comentas si los datos que se van agregando son letras... numeros... o cualquiera -?-
[asi que]... me voy a evitar 'andar averiguando' y te sugiero usar un nombre +/- como sigue...

-> estando como 'activa' la hoja 6 ['Stock'] agrega/modifica los siguientes nombres...
[menu] insertar / nombre / definir...
a) nombre: Fila_n formula: =max(si($c$5:$e$1500>0,fila($c$5:$e$1500)))
si todo sale bien... excel pondra algo +/- como: =MAX(SI(Stock!$C$5:$E$1500>0,FILA(Stock!$C$5:$E$1500)))
b) EDITA el nombre que haya asignado al area de impresion [Área_de_impresión o... Print_area]
formula: =desref($c$4,,,fila_n-fila($c$4)+1,3)
si todo sale bien... excel pondra algo +/- como: ÞREF(Stock!$C$4,,,Fila_n-FILA(Stock!$C$4)+1,3)
-> toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#7 KL
13/09/2005 - 02:12 | Informe spam
Hola chicos,

"Héctor Miguel" wrote in message news:uKb5Ab%
a) nombre: Fila_n formula:
=max(si($c$5:$e$1500>0,fila($c$5:$e$1500)))



Estaba pensando en como hacer las formulas mas eficientes y, aunque sabia
del comportamiento extrano/irregular de las funciones INDICE, COINCIDIR y
BUSCARV en formulas matriciales, abrigaba la esperanza, pero no ha podido
ser :-o La siguiente formula solo funciona en la hoja, pero no dentro de un
nombre :-((

=MAX(SI(ESNUMERO(COINCIDIR({9,99999999999999E+307;"zzzzzzzzzzzzzzzzz"};DESREF($C:$C;;COLUMNA($C:$E)-COLUMNA($C:$C))));COINCIDIR({9,99999999999999E+307;"zzzzzzzzzzzzzzzzz"};DESREF($C:$C;;COLUMNA($C:$E)-COLUMNA($C:$C)))))

Aunque es mas larga, en realidad esta formula NO MATRICIAL habria sido mas
rapida que la propuesta por HM y habria permitido abarcar toda la hoja.
Bueno, seguiremos buscando :-)

b) EDITA el nombre que haya asignado al area de impresion
[Área_de_impresión o... Print_area]
formula: =desref($c$4,,,fila_n-fila($c$4)+1,3)



Esta si que me parece que podria optimizar un poco mediante:

=$C$4:INDICE($E:$E;Fila_n)

Saludos,
KL
Respuesta Responder a este mensaje
#8 Héctor Miguel
13/09/2005 - 04:50 | Informe spam
hola, KL !

a) nombre: Fila_n formula: =max(si($c$5:$e$1500>0,fila($c$5:$e$1500)))


... pensando en como hacer las formulas mas eficientes
... aunque sabia del comportamiento extrano/irregular de las funciones INDICE, COINCIDIR y BUSCARV en formulas matriciales
abrigaba la esperanza, pero no ha podido ser :-o
La siguiente formula solo funciona en la hoja, pero no dentro de un nombre :-(( [...]
... en realidad esta formula NO MATRICIAL habria sido mas rapida que la propuesta por HM y habria permitido abarcar toda la hoja. ... seguiremos buscando :-)

b) EDITA el nombre que haya asignado al area de impresion [Área_de_impresión o... Print_area]
formula: =desref($c$4,,,fila_n-fila($c$4)+1,3)


Esta si que me parece que podria optimizar un poco mediante:
=$C$4:INDICE($E:$E;Fila_n)



solo comentarios 'al margen' :DD

1) acerca de tu primer propuesta de cambio... [la formula no matricial mas 'rapida']...
a) la verdadera 'razon' por la que no la has podido asignar a un nombre... es por la longitud [caracteres] en la formula :-(
1. tal como la propones [castellanizada] tiene ya 218 caracteres MAS habria que agregar el signo '='
2. al 'pasarla' a nombre-definido... excel va a agregar el nombre de la hoja...
si suponemos que la hoja se llama 'hoja1'...
la longitud total de la formula [en castellano] seria ya de 255 caracteres... ->el limite<- :-(
si suponemos que excel es en ingles y la hoja se llama 'sheet1'...
si suponemos que la hoja se llama... -???- [o si suponemos que se le cambia de nombre]... -???-
b) algo debo estar interpretando mal :-(( no he logrado que me de 'el resultado que se busca' :-((
c) no le veo mucha importancia a la rapidez en una 'funcion' que se necesitara -solo- de manera 'previa' a una impresion -?-
[no creo equivocarme si te aseguro que]... mas tiempo te tomara 'decidir' si pulsas [o no] el boton de imprimir [o cancelar] ;)
2) acerca de tu segunda propuesta de cambio... [recortar los caracteres de la formula con la que se re/define el area de impresion]...
es muy 'atractiva' [tanto... que la he mandado a mi coleccion personal... si no te opones... obviamente] ;)
a pesar de lo anterior... [me parece que... 'cubren' areas/requerimientos/especificaciones/situaciones/... ->diferentes<-

saludos,
hector.
Respuesta Responder a este mensaje
#9 Héctor Miguel
13/09/2005 - 07:33 | Informe spam
hola [de nuevo], KL !

otros comentarios 'al margen' ;)

-> 'regresando' a tu primer propuesta de cambio [la formula mas 'rapida']...
'en realidad'... NO esta 'trabajando' sobre la -posible- 'matriz' de columnas :(
solo tiene 'cabida'... buscar cual es la ultima fila con datos EN la primer columna de la formula... 'C'
[por lo tanto] si solo se necesita buscar en esa primer columna...
[me parece que] no tiene sentido 'crecer' la formula [la matricial] en ~5 veces su tama#o 'propuesto'
-> =max(elegir(1+(contar(c:c)>0),0,coincidir(9.99999999999999e+307,c:c)),elegir(1+(contar.si(c:c,"*")>0),0,coincidir(repetir("z",255),c:c)))
o... si no tiene importancia que los si'es condicionales 'consumen' mas recursos que los si'es 'booleanos' [20 caracteres 'menos']...
-> =max(si(contar(c:c)>0,coincidir(9.99999999999999e+307,c:c)),si(contar.si(c:c,"*")>0,coincidir(repetir("z",255),c:c)))
o... si la cuenta/busqueda de la ultima fila [en cualquiera de las -posibles- columnas] se deja en una celda... [la formula matricial]...
-> =max(si(c5:e1500>0,fila(c5:e1500))) [solo 34 caracteres, si no tiene efectos colaterales usar referencias relativas]

lo anterior es -solamente- mientras se puede encontrar la forma de 'adelgazar' y 'desmatricializar' la propuesta 'original' ;)
aunque sigo pensando que en una formula para un 'evento' unico y no muy 'frecuente'... [imprimir o vista preliminar]...
la rapidez de calculo en ese aspecto... deja de ser... 'relevante' -?-

saludos,
hector.
Respuesta Responder a este mensaje
#10 KL
13/09/2005 - 08:02 | Informe spam
Hola HM,

"Héctor Miguel" wrote in message
news:
'en realidad'... NO esta 'trabajando' sobre la -posible- 'matriz' de
columnas :(
solo tiene 'cabida'... buscar cual es la ultima fila con datos EN la
primer columna de la formula... 'C'



Parece que tienes razon - no funciona (juraria que anoche me daba el
resultado buscado, pero igual lo he sonado :-) (wishful thinking)

[por lo tanto] si solo se necesita buscar en esa primer columna...
[me parece que] no tiene sentido 'crecer' la formula [la matricial] en
~5 veces su tama#o 'propuesto'
->
=max(elegir(1+(contar(c:c)>0),0,coincidir(9.99999999999999e+307,c:c)),elegir(1+(contar.si(c:c,"*")>0),0,coincidir(repetir("z",255),c:c)))
o... si no tiene importancia que los si'es condicionales 'consumen' mas
recursos que los si'es 'booleanos' [20 caracteres 'menos']...
->
=max(si(contar(c:c)>0,coincidir(9.99999999999999e+307,c:c)),si(contar.si(c:c,"*")>0,coincidir(repetir("z",255),c:c)))
o... si la cuenta/busqueda de la ultima fila [en cualquiera de
las -posibles- columnas] se deja en una celda... [la formula matricial]...
-> =max(si(c5:e1500>0,fila(c5:e1500))) [solo 34 caracteres, si no tiene
efectos colaterales usar referencias relativas]



Todo esto es bastante obvio y ademas como entenderas no era la idea :-)

lo anterior es -solamente- mientras se puede encontrar la forma de
'adelgazar' y 'desmatricializar' la propuesta 'original' ;)
aunque sigo pensando que en una formula para un 'evento' unico y no muy
'frecuente'... [imprimir o vista preliminar]...
la rapidez de calculo en ese aspecto... deja de ser... 'relevante' -?-



No entiendo muy bien que tiene que ver la frecuencia con la que se va a
imprimir/activar la vista previa con la rapidez de la formula - si la
formula va a recalcular independientemente de si imprimes o no, por lo que
afectaria todos los recalculos. Asi que, a diferencia de ti, estoy
convencido de que en este caso la rapidez y la volatilidad son importantes y
mas aun en libros cargados de formulas y cuando las areas de impresion andan
por decenas de miles de filas ;-)

Saludos,
KL
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida