Re: Como imprimir mediante una macro solo celdas escritas?

13/09/2005 - 12:23 por KL | Informe spam
Por cierto, comentar que las funciones INDICE, COINCIDIR y BUSCARV tienen un
comportamiento increible dentro de las formulas matriciales (tema que al
parecer Alan Beban y Harlan Grove llevan discutiendo durante anos:
http://tinyurl.com/8sdot ).

La formula:
=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)))))

obviamente no funciona como se esperaba aunque

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

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

devuelven matrices, cosa que no se comprueba mediante F9 en la barra de
formulas, pero SI introduciondolas en un rango de 3 celdas de ancho y 2 de
alto mediante Ctrl+Shift+Enter

Este mismo comportamiento se puede observar en BUSCARV cuando el 1o
argumento es una matriz o en INDICE cuando el 2o y/o 3o argumentos son
matrices.

Saludos,
KL



"KL" <NOSPAMlapink2000@PLEASEhotmail.com> wrote in message news:...

Hola HM,

En primer lugar decirte que es una situacion muy curiosa la mia, ya que se
podria decir que estoy defendiendo una formula que no funciona :-) Bueno,
no exactamente, pongamos que mas bien estoy discutiendo cuestiones
generales.


[creo que] podrias darle 'un poco de credito' al excel :)) ya que este
re/calcula [o trata de re/calcular] de manera 'inteligente'
[SOLO] cuando las referencias 'dependientes/precedentes' han sufrido
cambios o modificaciones ;)
lo cual -considero- NO significa que se la vaya a pasar re/calculando el
modelo 'completo' [SI NO hubo 'necesidad de'...] ;)



!Y tanto! le estoy dando mucho credito a Excel, no lo dudes (y si no, por
que estaria yo aqui???). Estaba respondiendo a tu planteamiento
generalizado y no analizando la formula concreta. En este caso es lo que
dices, pero, tal como te he mencionado antes, esto depende de la formula
o mas bien de las funciones que uses (o sea de la inteligencia del que
crea la formula y no tanto de la de Excel). Sabes de sobra que hay
funciones del tipo AHORA, HOY, INDIRECTO [y una que otra mas] que son
volatiles siempre y recalcularan en cada recalculo que se produzca y no
solo al cambiar algo en los rangos implicados.


[ademas] si -consideras que- la rapidez y volatilidad son de primordial
importancia...
1) la funcion desref/offset es de las volatiles que MAS consumo de
recursos 'demanda' :-(
tu propuesta de cambio1 la utiliza dos veces [mientras que la
propuesta matricial ninguna] ;)



En todo caso no es la que mas y una de las razones por la que me la carge
en la segunda formula era evitar su volatilidad. En el caso de la primera
formula (la fracasada) me parecio un 'trade-off' muy justificado de la
volatilidad por la rapidez.


2) no crees que es mas 'sano' delimitar un numero de filas... en lugar de
'poner' a excel a 'detectar en TODAS' [columnas completas] -?-



Pues va a ser que no :-) Si te fijas, mi formula, aunque posiblemente lo
haga con mayor frecuencia, realiza 37 operaciones (contando cada una de
las operaciones binarias de COINCIDIR como una, ya que tardan
practicamente lo mismo) mientras que la tuya unas 2991. ?Que tal asi?


3) y por si piensas 'recriminarme' que 'mi' propuesta tambien usa la
funcion desref/offset [al re/definir el nombre 'print_area']...
te recuerdo que [yo] considero que con el cambio que propones para
esta parte [aunque cubren areas y situaciones distintas]...
[y si no dispones otra cosa]... le has agregado la ventaja de
'prescindir' del uso de dicha 'volatilidad' ;)



Tres cosas:
1) Ya te lo 'habia recriminado', antes de que te hubieras dado cuenta, por
el simple hecho de cargarmela en mi formula alternativa ;-)
2) No consigo entender el comentario "aunque cubren areas y situaciones
distintas" ya que por lo que veo ambas formulas devuelven el mismo
resultado.
3) Si vuelves a anlizar lo que has escrito en tu ultimo mensaje,
seguramente veras que es una apologia de la importancia de la rapidez y
baja volatilidad en el caso discutido y una negacion casi total de tu
frase:

"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] ;)"


definitivamente... estoy seguro que OP tendra mas alternativas para
seleccionar la que mejor acomode a sus necesidades ;)



Pues creo que de momento solo tiene tu solucion (con mi alternativa de la
segunda formula)

Saludos,
KL


 

Leer las respuestas

#1 Héctor Miguel
13/09/2005 - 17:26 | Informe spam
hola, KL !

... INDICE, COINCIDIR y BUSCARV tienen un comportamiento increible dentro de las formulas matriciales
... Alan Beban y Harlan Grove llevan discutiendo durante ... http://tinyurl.com/8sdot ).



conozco 'esta' discusion [y una que otra mas] entre HG y 'otros' ;)

La formula:
=MAX(SI(ESNUMERO(COINCIDIR({9,99999999999999E+307;"zzzzzzzzzzzzzzzzz"} [...]
obviamente no funciona como se esperaba aunque
tanto
COINCIDIR({9,99999999999999E+307;"zzzzzzzzzzzzzzzzz"};DESREF($C:$C;;COLUMNA($C:$E)-COLUMNA($C:$C))))
como
ESNUMERO(COINCIDIR({9,99999999999999E+307;"zzzzzzzzzzzzzzzzz"};DESREF($C:$C;;COLUMNA($C:$E)-COLUMNA($C:$C))))
devuelven matrices... introduciondolas en un rango de 3 celdas de ancho y 2 de alto mediante Ctrl+Shift+Enter [...]



[ahora soy yo que...] no entiendo si lo anterior que comentas 'aporta' algo 'en favor' de tu propuesta de cambio1 -?-
si bien es cierto que existen formulas mas 'rapidas' [por el simple hecho de que no se requiere introducirlas con ctrl-shift-enter]
no siempre significa que NO sean 'formulas matriciales' [es decir... de cualquier forma SI estan 'trabajando' matricialmente] ;)
ademas de que NO siempre son 'aprovechables' [como el caso que mencionas] SI es requisito 'bajarlas' a un rango de n_filas/columnas :-(
[p.e. si comentaste que 'esperabas' poder 'abarcar' toda la hoja... esto significa 'reducirla' por mitad para poder 'bajar' la formula ???]

en fin... si ya has visto que [de momento] la matricial es la unica forma/formula 'a la rapida' de encontrar la ultima fila en varias columnas... ;)

saludos,
hector.

Preguntas similares