Algunos días atrás un lector me consultaba sobre la forma de trabajar sobre listados de fechas repetidas.
En concreto quería obtener cantidades vendidas máximas, mínimas o medias teniendo presente las ventas repetidas en los mismos días.
Veamos nuestro listado de ventas:
En la tabla tenemos nuestras ventas detalladas.. y de manera manual, a modo de ejemplo, en la columna E, he dispuesto los datos sobre los que realmente deseamos trabajar...
Obviamente, la columna E desaparecerá ;-)
Queremos trabajar ahora sobre las ventas de cada uno de los tres años...
Empezamos calculando la media de ventas por día del año 2017 en la celda K3:
=PROMEDIO(SI(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))>0;SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))))
(ejecutada matricialmente presionando Ctrl+Mayusc+Enter)
Lo interesante de esta fórmula (y de las siguientes) es el uso de
FILA(INDIRECTO($I3&":"&$J3))
para obtener una secuencia de 365 fechas desde la fecha de la celda I3: 1/1/2017 hasta la fecha de J3: 31/12/2017...
Luego matricialmente se obtiene la suma acumulada de las ventas de nuestra tabla origen por cada día.
Será sobre esta matriz sobre la que realizaremos cálculos posteriores.
Si nos fijamos en ese vector de valores, hay 365 cantidades... apareciendo los valores acumulados por día.
Además, finalmente, puedes comprobar el resultado (si eres desconfiado) seleccionado el rango E2:E17 y viendo cuál es su promedio en la barra de estado...
De forma similar calcularemos la cantidad máxima acumulada por día dentro del año.
Para ello en la celda L3 añadimos la fórmula matricial:
=MAX(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3))))
Y por último, de manera similar, calcularemos la cantidad menor de unidades vendida por día en un mismo año en la celda M3:
=MIN(SI(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))>0;SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))))
(siempre ejecutada matricialmente)
MUY interesante del uso de la función FILA con INDIRECTO, aprovechándonos del tratamiento de las fechas como números para conseguir obtener nuestros cálculos por año...
En concreto quería obtener cantidades vendidas máximas, mínimas o medias teniendo presente las ventas repetidas en los mismos días.
Veamos nuestro listado de ventas:
En la tabla tenemos nuestras ventas detalladas.. y de manera manual, a modo de ejemplo, en la columna E, he dispuesto los datos sobre los que realmente deseamos trabajar...
Obviamente, la columna E desaparecerá ;-)
Queremos trabajar ahora sobre las ventas de cada uno de los tres años...
Empezamos calculando la media de ventas por día del año 2017 en la celda K3:
=PROMEDIO(SI(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))>0;SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))))
(ejecutada matricialmente presionando Ctrl+Mayusc+Enter)
Lo interesante de esta fórmula (y de las siguientes) es el uso de
FILA(INDIRECTO($I3&":"&$J3))
para obtener una secuencia de 365 fechas desde la fecha de la celda I3: 1/1/2017 hasta la fecha de J3: 31/12/2017...
Luego matricialmente se obtiene la suma acumulada de las ventas de nuestra tabla origen por cada día.
Será sobre esta matriz sobre la que realizaremos cálculos posteriores.
Si nos fijamos en ese vector de valores, hay 365 cantidades... apareciendo los valores acumulados por día.
Además, finalmente, puedes comprobar el resultado (si eres desconfiado) seleccionado el rango E2:E17 y viendo cuál es su promedio en la barra de estado...
De forma similar calcularemos la cantidad máxima acumulada por día dentro del año.
Para ello en la celda L3 añadimos la fórmula matricial:
=MAX(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3))))
Y por último, de manera similar, calcularemos la cantidad menor de unidades vendida por día en un mismo año en la celda M3:
=MIN(SI(SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))>0;SUMAR.SI.CONJUNTO(TblVentas[Unidades];TblVentas[Fechas];FILA(INDIRECTO($I3&":"&$J3)))))
(siempre ejecutada matricialmente)
MUY interesante del uso de la función FILA con INDIRECTO, aprovechándonos del tratamiento de las fechas como números para conseguir obtener nuestros cálculos por año...
Muy potente!!
ResponderEliminarGracias por el trabajo.
Sin duda...
EliminarGracias Iván!