jueves, 10 de junio de 2010

Promedio condicionado sin ceros.

En un correo pedía ayuda un usuario; en concreto quería calcular un promedio condicionado a un elemento de unos valores, pero sin tener en cuenta aquellos registros con valor cero.

...Tengo que hacer una prevision no consecutiva; por ejemplo
lunes 1
martes 2
miércoles 3
jueves 4
viernes 5
lunes 0
martes 0
miércoles 0
jueves 0
viernes 0
lunes 0
martes 3
miércoles 4
jueves 5
viernes 6

pero mi duda es cómo automatizar todo para cuando es cero no me lo cuente?,
por ejemplo para los lunes hay 2 ceros k solo me cuente 1 y me promedie entre 1 no entre 3 en este caso.como lo hago?????????...



Lo que planteamos entonces es calcular el promedio de un día de la semana dado, pero sólo de aquellos lunes cuyo valor es distinto a cero.
Sea este nuestro listado de valores:

Promedio condicionado sin ceros.


Para buscar una solución válida emplearé funciones ya conocidas:
SUMAR.SI.CONJUNTO y CONTAR.SI.CONJUNTO.
En principio son soluciones sólo válidas para Excel 2007, pero en los enlaces propuestos se explica convenientemente la forma de realizar la misma operación, con funciones matriciales, apra Excel 2003.
En primer lugar sumaremos todos aquellos registros que cumplan las condiciones de corresponder al 'lunes' y además ser distinto a cero:
=SUMAR.SI.CONJUNTO($B$1:$B$15;$A$1:$A$15;$D2;$B$1:$B$15;"<>0")

Promedio condicionado sin ceros.



Después contamos el número de registros que cumplen las misma condiciones:
=CONTAR.SI.CONJUNTO($A$1:$A$15;$D2;$B$1:$B$15;"<>0")

Promedio condicionado sin ceros.
hac click en la imagen



Para calcular el promedio final sólo dividimos un resultado entre otro. En nuestro ejemplo, como sólo teníamos un 'lunes' con valor diferente a cero, nuestro promedio es 1.

Obviamente podíamos haber empleado directamente la función PROMEDIO.SI.CONJUNTO:
=PROMEDIO.SI.CONJUNTO($B$1:$B$15;$A$1:$A$15;$D2;$B$1:$B$15;"<>0")
pero a veces conviene no olvidar el uso de nuestras funciones...
;-)

1 comentario: