Formula

16/09/2003 - 01:17 por juanca | Informe spam
El dia 12-09 Hector respondio una consulta de una suma con
un filtro. La respuesta de Hector fue la siguiente formula
matricial.
Alguien me puede ayudar a entenderla? De preferencia
Hector que es el papa de la criatura mas se que hay otros
que me pueden ayudar :D
=Suma(1*(Si(SubTotales(2,DesRef(c2:c100,Fila(c2:c100)-Min
(Fila(c2:c100)),,1)),c2:c100,0)=8))

Los puntos son:
-La formula sub totales devuelve solo un valor de falso o
verdadero, ok, el cual esta dado influenciado por el
segundo argumento; la funsion desref, y a su ves sobre el
segundo argumento de esta (fila(C2 ...Min), si analizo la
formula siempre el valor de este argumento es cero(hice
unas pruebas pero no se si siempre). Lo curioso del caso
es que se cambio dicho valor por cero la formula no
funciona. Creo que aqui esta mi problema!!!.
-Mi terquedad y obstinacion me obligan a preguntar cuando
la formula hace referencia a las celulas que quedan
despues del filtro si todas las referencias apuntan para
C2:C100.
-La igualdad a 8 o cualquier numero y la suma la entiendo.
Es decir pensaba que entendia las formulas matriciales...
 

Leer las respuestas

#1 Héctor Miguel
16/09/2003 - 10:41 | Informe spam
Hola, juanca !

... suma con un filtro ... formula matricial ... entenderla? [...]



==> tratare de explicar y espero que [aunque en saltos y 'revuelto'] el orden de los factores 'no altere el producto' ;)
1° para poder 'trabajar' la explicacion [sugiero] 'recortar' el rango a solo 'c2:c20' [o algo 'similar']
2° la parte de la formula '-Min(Fila(Rango))' [realmente] 'sale sobrando' puesto que 'resultara' SIEMPRE en...
el numero de fila 'mas bajo' del rango especificado [tambien sugiero] 'cambiarlo' a '-Fila(primer_celda_del_rango)'
3° la formula [modificada] 'queda' en: =Suma(1*(Si(SubTotales(2,DesRef(c2:c20,Fila(c2:c20)-Fila(c2),,1)),c2:c20,0)=8))

- ... subtotales devuelve solo ... falso o verdadero


==> aunque la funcion subtotales 'trabaja' con matrices, NO 'permite' que esas matrices puedan ser 'manipuladas' en formulas :(
si lo permitiera, seria 'suficiente' una formula [matricial tambien] como: =Suma(1*(SubTotales(2,C2:C20)=8))
o quizas un poco mas 'elaborada' como: =Suma(1*(Si(SubTotales(2,C2:C20)=8,SubTotales(2,C2:C20),0)))

- ... influenciado por el segundo argumento; la funcion desref ...


==> este es el 'secreto' ;) => para 'lograr' que subtotales 'devuelva' una matriz 'manipulable', el 2° argumento 'debe ser' DesRef
[es una tecnica que descubrio Laurent Longre alla por 1998, basado en un 'comportamiento no documentado' de DesRef]

- ... a su vez sobre el segundo argumento de esta (fila(C2 ...Min)
si analizo la formula siempre el valor de este argumento es cero (hice unas pruebas pero no se si siempre).


==> 'la parte' de la formula que siempre 'devuelve' cero es: '=Fila(C2:C20)-Fila(C2)' => formula 'modificada' < sin embargo, 'lo importante' NO ES ese cero que 'se ve' [como si fuera un 'valor final'] sino LA MATRIZ que 'resultá'
si 'usas' esa parte [o como formula 'unica' en una celda] y 'presionas' {F2}+{F9} 'veras' => LA MATRIZ 'resultante' <
Lo curioso del caso es que se cambio dicho valor por cero la formula no funciona [...]


==> se debe a que al 'sustituir' la formula [parcial] que 'devuelve' la matriz POR UN CERO, 'se pierde' el objetivo =>la matriz<:((

- ... cuando ... hace referencia a las celulas ... despues del filtro si todas ... apuntan para C2:C20.


==> con lo anterior debiera quedar claro que...
la 'manipulacion' de la matriz, 'combinada' con SubTotales [filtrada o no filtrada] y la 'condicionante' de 'cierto'
valor...
... es lo que 'hace que funcione' la formula ;)

[espero haber podido explicar de manera 'entendible'] ;)
_______
Saludos,
Héctor.
MS-MVP

Preguntas similares