Recordemos que la función SUBTOTALES tiene la propiedad de realizar cálculos sin tomar en cuenta valores ocultos al aplicar Autofiltro (o con Ocultar filas usando el argumento 109 en lugar de 9 para SUMA, 101 en lugar 1 para PROMEDIO, etc).
Supongamos esta tabla de dos columnas: Categorías y Valores
La fórmula en la celda B12 es
=SUBTOTALES(1,B2:B10)
donde el argumento “1” indica que queremos calcular el promedio.
Ahora filtramos la lista para dejar visible sólo los valores de la categoría C
Podemos ver que el resultado es 3.67. Si no tomamos en cuenta los ceros, el resultado tendría que ser 5.50 (aclaremos que debemos tener un buen motivo para no tomar en cuenta los ceros, a diferencia de celdas vacías que no son tomadas en cuenta por la función).
Una solución es crear una columna auxiliar con la fórmula =SI(B2<>0,B2,"") en la columna C
En la celda C12 ponemos la fórmula con la función SUBTOTALES, que al filtrar dará el resultado esperado
Si no queremos usar una columna auxiliar, podemos crear esta fórmula, adaptada de una propuesta por Bob Phillips
=SUMAPRODUCTO(SUBTOTALES(9,DESREF(B2,FILA($B$2:$B$10)-2,,1))*($B$2:$B$10<>0))/
SUMAPRODUCTO(SUBTOTALES(3,DESREF(B2,FILA($B$2:$B$10)-2,,1))*($B$2:$B$10<>0))
Technorati Tags: MS Excel