hola, KL !
vamos partiendo de las siguientes tres premisas [si crees que es correcto]...
1) encontrar cual es [el numero de] la ultima fila dentro de un grupo de columnas especifico
2) re/definir el nombre que auto-establece excel para el rango que se habra de imprimir [area_de_impresion o print_area]
3) el rango de columnas [segun consulta de OP] es de tres... 'C', 'D' y 'E'
las propuestas [hasta ahora] han sido...
___
[hm] 1) encontrar la ultima fila y asignarla a un nombre mediante una formula matricial
[hm] 2) re/definir el nombre [area de impresion] usando la funcion 'desref' [con parametros mas 'flexibles']
___
[KL] 1) usar una formula NO matricial [que no ha podido ser 'definida/determinada/probada/...'
[KL] 2) re/definir el nombre [area de impresion] usando la funcion 'indice' [mas rapida pero... menos 'flexible']
[solo por 'facilidad']... dejo fuera de un analisis 'semi-exhaustivo' las formulas de mi propuesta 'original'
[ya KL te habras encargado de analizarlas] ;)
la primer propuesta de formula, que no se termino de probar para 'justificar' si era [o no] funcional/operable/etc. 'reporta' lo siguiente:
a) no se puede 'asigar' a un nombre_formula [ya esta comentado que es] por el numero de caracteres 'agregables' al definir el nombre
b) para que sea 'funcional'... es IMPRESCINDIBLE 'bajarla' a un rango_matriz de mismas_columnas_x_2_filas [o sea... 3 cols / 2 filas]
[es decir... aun recortandola y asignandola a un nombre SIN bajarla a un rango.... NUNCA va a funcionar] :-(
c) esta siendo 'reduntante sobre si misma' [probablemente es por eso que la has dejado por... 'descanse en paz'] -?-
SOLO se necesita la parte 'medular' de la formula que desarrollaste... BAJADA a un rango de 3_cols / 2_filas [digamos... 'F1:H2']
si seleccionas el rango de ejemplo e introduces la siguiente formula... terminando la edicion con ctrl+shift+enter...
=coincidir({9.99999999999999e+307\"zzzzzzzzzzzzzzz"},desref($c:$c,,columna($c:$e)-columna($c:$c)))
solo se necesitara una celda adicional para 'encontrar' cual es la mayor de las ultimas filas de las columnas 'C:E'
[que por omision... TAMBIEN debe ser introducida/editada como matricial... ctrl+shift+enter] <= OJO
op1: =max(si(eserror(f1:h2),,f1:h2))
op2: =max(si(esnumero(f1:h2),f1:h2))
d) el rango_matriz NO puede 'coincidir' con el inicio del rango 'columnas_a_monitorear'
es decir... si las columnas_a_monitorear son C, D y E el rango_matriz NO podria cambiarse de F1:H2 a... C1:E2 [columna_1 = C]
e) si alguna columna del rango_matriz 'cae dentro' de las columnas_a_monitorear [probablemente] va a ser un 'estorbo en la cuenta' -?-
[sobre todo si llegara a ser necesario detectar tambien cual es la primer celda 'ocupada' dentro de el grupo de columnas] -?-
era por eso mi comentario de que se necesita 'apartar' para el rango_matriz tantas columnas como columnas_a_monitorear
de donde tambien se desprende que podrian monitorearse 256 / 2 - 1 = 127 columnas
para 'evadir' las columnas 'sacrificables' [si fuera el caso de varias-muchas], invertir el rango_matriz columnas a filas y filas a columnas
[p.e.] en A1:B3 la formula: =coincidir({9.99999999999999e+307;"zzzzzzzzzzzzzzz"},desref($c:$c,,fila($1:$3)-1))
tomar en cuenta que mi sistema en matrices constantes separa fias por barra inversa '\' y columnas por punto y coma ';' <= OJO
ambas formas [rango_matriz ya sea por columnas o por filas] carecen de flexibilidad para ampliar/reducir las columnas_a_monitorear
[incluyendo a la propuesta de re/definicion del nombre} si los grupos de columnas habran de ser fijos... me parece que son 'perfectas'] ;)
existe la alternativa de buscar 'la ultima fila' [real] por macros... aunque no asegura que corresponda al grupo de columnas_a_monitorear :-(
espero que sea 'apreciable' que lo que estoy exponiendo como 'desventajas' de un procedimiento se convierte en 'ventajas' para el otro :D
hay mas 'tela de donde cortar'... pero este mensaje se ha salido de mis 'parametros' :DD
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
p.d. y puesto que [de todas formas] a mis -intentos de- tips, consejos [o como quieras llamarlos] los consideras 'sermones'...
[pues]... 'ahi te van'... mis respuestas a tus respuestas... o sea...
a continuacion hago un intento por explicar 'lo oculto' [segun yo] de la discusion que se ha originado por lo tocante a esta consulta ;)
[de pasadita...] no se porque te ha dado por sentirte 'agredido' por [algunas de] mis intervenciones -?-
te anticipo que [sin dudar] los convencionalismos, modismos y costumbres regionales estan tomando parte en los 'malos entendidos' :-(
no olvides que el castellano [como toda lengua 'romance'] es una lengua 'rica en significados' :D
tu como profesor de idiomas no ignoras lo anterior [p.e.] la expresion: camisiñas...
-> en mexico es una forma 'jocosa' de hacer referencia a una prenda de vestir [camisa, camiseta, 't-shirt', etc.]
-> en brasil es un vocabulo con el que se hace referencia a los preservativos plastificados [los condones] :))
si dentro de 'mi forma' de ser/escribir/... incluyo un 'expresionismo' [quizas]... 'exagerado' [o a veces molesto para 'otros']...
y algunas veces mis 'propuestas/respuestas' llevan algo de... 'enigmaticas' [buscando 'motivar' la imaginacion del lector] :DD
procurare 'medirme' [al menos cuando 'responda' a comentarios tuyos de una manera que pudiera parecer poco... 'impersonal'] :))
no puedo asegurarte que lo lograre... siempre :-(( lamentablemente [y como 'versa' una cancion bernacula de mi tierra... MEXICO]...
"no soy monedita de oro... pa' caerles bien a todos... asi naci o asi soy... si no me quieren... ni modo"
== == == == == ==
... hay quienes lo llaman conversacion espontanea... se que no eres... partidario de este tipo de interaccion ;-)
___
-> tambien hay quienes utilizan una 'lluvia de ideas' ;)
[solo me parece que no es este... 'el caso'... el lugar... ni la forma de 'llamar' a un 'brain-storm'... 'a raja-tabla'] :(
... me parecio un tema muy interesante... empece a buscar las posibilidades para mejorar las formulas, pero no hubo suerte.
... publique mis ideas para compartir los resultados de mi experimento y en parte mi frustracion por no conseguir el resultado
... creo que aun siendo un fracaso... podia ser interesante el flujo de mi pensamiento al intentar hacerlo.
... esperaba (ingenuamente) una critica constructiva de la formula... ideas sobre el por que de no funcionar... o como hacer que funcionara
... Hector Miguel suelta frases del tipo global basicamente tachando de innecesario este intento de encontrar una mejora a la solucion
... causa de la discusion y no... unas decimas de segundos ya que... no sabremos nunca cuantos segundos se habrian ganado
... (la primera formula no llego a nacer)... los mensajes tuyos que siguieron ya llevaban un caracter claro de sermones y... cosas obvias
... en estos casos tiendo a llevar la contraria casi siempre - me gusta el rol del abogado del diablo (ya conoces una mas de mi debilidades)
___
-> lo anterior [creo yo que] no dejan de ser meras apreciaciones [personales y subjetivas] -?-
1) [para mi] no es 'absoluto' el comentario que haces de que... 'no hubo suerte' [en tus intentos de encontrar alternativas]
[simplemente] a las pruebas que hicieron falta [probablemente] les 'robo tiempo' una 'necesidad/costumbre' por 'postear' cuanto antes :))
2) si [ingenuamente?...] esperabas 'criticas constructivas' del porque o como... [segun yo y hasta donde mis conocimientos alcanzan]...
a) el primer comentario que hago ES [precisamente] el 'por que' no funciona cuando intentaste asignarla a un nombre definido -no?-
b) con lo anterior, la solucion [o propuesta de posible solucion] estaba ya planteada/sembrada/anunciada/... [al menos, asi lo crei] -?-
[considero que a un 'excelomano' con tus capacidades, no es necesario 'llevarlo de la mano... hasta la consecucion de un fin'] ;)
3) para saber cuanto tiempo se ahorra entre una propuesta y otra... [simplemente] 'termina' de hacer las pruebas que sean necesarias :))
[de pasadita... compruebas si pueden considerarse como 'sacrificio' las 'restricciones' que se derivan de los rangos_matriz]
4) yo TAMPOCO descarte la posibilidad de 'mejorar' la propuesta inicial... si recuerdas un mensaje 'agregado' a mi primer respuesta...
-> "lo anterior es -solamente- mientras se puede encontrar la forma de 'adelgazar' y 'desmatricializar' la propuesta 'original' ;)"
5) si vas a jugar el papel de abogado [ya sea 'de los buenos' o... 'de los malos']... procura [y que no se te olvide]...
NO hagas preguntas... de las cuales... NO sepas 'la respuesta' :( [suena a paradoja ?... pues, asi es... 'entre abogados'] ;)
... estos dos casos son totalmente distintos y el ahorro de tiempo seria bastante mas significativo... "you have totally missed the point"
... la idea no era hacer una formula mas rapida porque si, sino conseguir la flexibilidad para no estar limitado dentro de 1500 x 4 o... filas
... que es cuando tu formula creo que empezaria a ser un peso notable para la aplicacion.
___
-> 'I don't think so'... 'time and savings'... no significa que sea 'generador de riqueza'... 'invertir enteros... para ahorrar fracciones' :D
dos formulas denominadas donde una lleva (habria llevado) el nombre de Print_Area, la diferencia radica en una de las formulas.
___
-> independientemente de cual procedimiento se utilice para 'detectar' cual es la 'ultima fila' en un grupo de columnas 'especifico'...
[y tambien -si no recuerdo mal-]... tu propuesta de formula ->=$C$4:INDICE($E:$E;Fila_n)<-
a) me parecio sumamente interesante, tanto... que la agregue a una coleccion de KL-trucos ;)
b) a pesar de lo anterior... [me parece que] 'cubren' areas/requerimientos/especificaciones/situaciones/... ->diferentes<-
[lo de las diferencias en 'coberturas' y demas temas relacionados -espero que- habra quedado +/- clarificado] -?-
c) la unica diferencia es... cual de las propuestas se elija para determinar la ultima fila...
[ya sea la propuesta de la formula matricial que... 'come-tiempo'... o 'bajar' una matriz a un rango, que... 'come-columnas'] :))
Las formulas matriciales en general son dificiles de entender y son desconocidas por la mayoria absoluta de los usuarios.
En esto de amigabilidad no veo mucha diferencia entre las dos formulas.
En el resto de los factores te concedo la razon, pero la palabra 'mucho' me parece un exageracion o mas bien una subjetividad total.
___
-> si la palabra 'mucho' [y el contexto bajo el que la utilizo] te parece una 'exageracion o subjetividad... total'...
a que 'te suena' tu expresion... "Las formulas matriciales... son desconocidas por la mayoria absoluta de los usuarios" -???- ;)
[ademas, estoy seguro que no 'aplica' el termino... 'dificil de entender', a la matricial propuesta... o si ?] :D
Post by Héctor Miguel3) se necesita 'sacrificar' una columna por cada columna a monitorear [para el rango-matriz de x_columnas por 2 filas]
[es decir]... de las 256 columnas de excel... deberas 'separar' la mitad para poder establecer el rango_matriz :-(
4) la alternativa para sacrificar -solamente- 2 columnas es... 'invertir' el rango_matriz a 2 columnas por x_filas ;)
... te agradeceria que me los expliques (se que lo has mencionado antes) porque no acabo de verles la razon.
Espero que no sea el hecho de que mi formula... devuelve la ultima fila de la primera columna del rango... y no la mayor de ...
[en todo momento he estado basandome en la suposicion de que la formula funciona tal como yo esperaba que funcionara] :-)
___
-> como lo comentas [y confirmas] en el parrafo anterior... te has estado 'basando'... ->en una suposicion<-
sobre la cual NO has llegado a 'concretar' una prueba :-(
NO es que tu propuesta no pueda devolver mas que la ultima fila de la primer columna en el rango -variable- espeificado en la formula...
[una vez mas]... solo hizo falta 'agotar' las pruebas ANTES de dar [o descartar] la formula por 'poco funcional'
[o despedirla con un: 'en paz descanse'] D
la exposicion inicial del presente, [espero] habra dejado claro cuales [considero] son 'sacrificios' y donde 'se pierde amigabilidad/etc.' ;)
y disculpa por no haber compartido con mas anticipacion los resultados de estas pruebas :(
[como he comentado antes]... a veces mis respuestas son... 'enigmaticas'... ->tratando de 'motivar' la imaginacion del lector<- :D