Dios Santo, de mi vida y de mi corazón... En mi vida había visto resolver una cosa tan compleja de otra forma igual de compleja, jajaja.
Quitando lo de que no se como has nombrado "cantones" a la matriz metida en el BUSCARV, y que la función INDIRECTO no la conocía, ahora parece tan sencillo que asusta. Muchas gracias por todo Ismael. Intentaré reproducir yo mismo esto en el archivo orinal, a ver si soy capaz. Una pregunta antes. ¿Por qué la columna auxiliar para el número del canton debe estar despues de la columna "Vanos"?. Un saludo :) El 3 de marzo de 2009 15:45, Ismael Fanlo <[email protected]> escribió: > Solucionado! > > Va adjunto. > > Aunque no tengo ni puta idea de lo que estás calculando ahí, he > intentado descomponer la lógica de la cosa. > > El fundamento de mi solución ha sido usar la tabla de los datos de los > apoyos, a la que he nombrado "cantones" (quizás debía ser "apoyos", > pero comencé buscando a que cantón correspondía cada apoyo y por eso > lo nombré así). > > A esta tabla le he añadido una columna que me permita ubicar a qué > cantón corresponde cada apoyo. > > Entonces la solución, para que las fórmulas te sirvan para _todas_ las > filas, se ha basado en trocear "los chorizos" en porciones, para > ensamblar todo al final. Las columnas auxiliares, las tripas de los > cálculos, las puedes ocultar a conveniencia. > > Primero mediante un BUSCARV() debemos calcular a que cantón > corresponde el apoyo actual y el apoyo anterior, pues los datos sólo > deben calcularse para apoyos dentro del mismo cantón. Por eso todo el > resto de fórmulas están dentro de un SI() que verifica tal cosa y, si > no se cumple, le mete la etiqueta "- - -". > > En plan de prueba, he verificado las primeras medidas angulares, con > la misma fórmula que tú, pero dentro de ese SI() que comentaba. Y he > visto que la cosa funcionaba. > > Luego, un cálculo tonto para saber en que fila están los datos que tú > tenías en fórmulas fijas, esos que a veces son fijos y a veces > cambian. Si hubo cambio de cantón se pone la etiqueta "- - -", de lo > contrario se toma el número de cantón incrementado en 2 (por la > posición de las celdas en el modelo). > > Eso es lo que permite en la siguiente columna determinar un rótulo con > la referencia al rango que habrá que sumar de la fila de datos fijos > correspondiente al cantón. Ahí, he usado la función SUMA(), mucho > mejor que el operador de suma para este caso. > > Este rótulo es el que paso a una función INDIRECTO() en la fórmula > final para que me efectúe el cálculo del numerador. > > El denominador suma las longitudes del cantón actual y el anterior, > que las obtengo también mediante funciones BUSCARV() > > Se podría meter en un "chorizo" alucinante, pero encuentro que la > lógica queda más clara así. Luego te basta con ocultar las columnas > para que la cosa quede limpia. > > No está todo resuelto, pues la última fila funciona mal, provocando > una división por cero, pero algo tenía que dejar para ti ¿no? :-) > > Bastará con meter estas fórmulas dentro de otro SI() que compruebe si > estamos en el apoyo 131. > > La verdad, me ha encantado ese problema, que era de examen superior. > Creo que hasta he tenido una erección y todo. :-D > > Un abrazo, > > > > > -- > Ismael Fanlo > El mejor buscador de alojamiento web: http://hosthostings.com > Ofimática y software libre: http://superalumnos.net > ¡Locos por Drupal!: http://drupalmania.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Un saludo, Guillermo Viciana.
