Seguimos trabajando con el modelo que suelo usar frecuentemente, ventas de productos en diferentes centros comerciales, provincias, y, fechas, pero en este caso, son las ventas del año 2021.
Queremos obtener un listado de los meses donde la ultima venta fue el último día del mes.
Lo primero que he calcular es el último día de cada mes, usare la función FIN.MES, que nos va a devolver el último día del mes de la fecha especificada, aunque, podemos adelantar o retrasar meses.
En la celda I3, escribo el signo igual, seguido de la función, y, abrimos un paréntesis.
=FIN.MES(
Como argumento fecha inicial, seleccionamos la columna fecha.
=FIN.MES(Table1[Fecha]
Y, como argumento meses, ponemos el valor cero, para que nos devuelva el ultimo día del mes de la fecha especificada.
Cerramos paréntesis, y, aceptamos.
=FIN.MES(Table1[Fecha];0)
Obtenemos un error VALOR.
Este error es debido a que la función FIN.MES, no la podemos usar de forma matricial, pero necesito usarla de forma matricial, por lo que voy a usar la función BYROW, donde como argumento array, selecciono la columna de fechas.
=BYROW(Table1[Fecha]
Como argumento función, ponemos la función LAMBDA, y, declaro una variable.
=BYROW(Table1[Fecha];LAMBDA(a;
Ahora, aplico la función FIN.MES a la variable declarada.
Cerramos paréntesis de FIN.MES, de LAMBDA, de BYROW, y, aceptamos.
=BYROW(Table1[Fecha];LAMBDA(a;FIN.MES(a;0)))
Obtenemos una matriz desbordada con el ultimo día del mes para cada fecha.
Me quedo con los valores únicos.
=UNICOS(BYROW(Table1[Fecha];LAMBDA(a;FIN.MES(a;0))))
Tenemos el ultimo día de cada mes.
La variable A declarada en la función LAMBDA, almacena la columna de fechas, entonces, voy a preguntar que, si el último día de mes de la variable A, es igual a la variable A, pues, con la función TEXTO, que me devuelva el nombre del mes, en caso contrario, que ponga un texto en blanco.
=UNICOS(BYROW(Table1[Fecha];LAMBDA(a;SI(FIN.MES(a;0)=a;TEXTO(a;"mmmm");""))))
Obtenemos una matriz desbordada con los meses cuya venta fue el último día del mes.
Pero, vemos que también obtenemos una celda en blanco, lo primero que voy a hacer es con la función LET, crear una variable, y, asignar la expresión anterior.
=LET(a;UNICOS(BYROW(Table1[Fecha];LAMBDA(a;SI(FIN.MES(a;0)=a;TEXTO(a;"mmmm");""))))
Ahora, como argumento calculo, voy a filtrar la variable A, siempre que dicha variable sea distinta a blanco.
=LET(a;UNICOS(BYROW(Table1[Fecha];LAMBDA(a;SI(FIN.MES(a;0)=a;TEXTO(a;"mmmm");""))));FILTRAR(a;a<>""))
Vemos que ya no aparece la celda en blanco.
Usare la función FILTRAR, donde como argumento array será la columna fecha.
=FILTRAR(Table1[Fecha];
Y, como argumento include, usare la función TEXTO, para obtener el nombre del mes de la columna fecha, y, lo igualo al valor de la celda I3, es decir, del primer mes.
Cierro paréntesis, y, acepto.
=FILTRAR(Table13[Fecha];TEXTO(Table13[Fecha];"mmmm")=I3)
En este caso, obtengo las ventas del mes de enero.
Me voy a quedar con la función MAX, con la fecha máxima.
=MAX(FILTRAR(Table1[Fecha];TEXTO(Table1[Fecha];"mmmm")=I3))
Obtenemos el ultimo día del mes de febrero.
Lo siguiente va a ser buscar esta fecha en la columna de fechas, y, que devuelva la columna de producto, para ello, usare la función BUSCARX.
Como primer argumento, valor buscado, será la expresión anterior.
=BUSCARX(MAX(FILTRAR(Table1[Fecha];TEXTO(Table1[Fecha];"mmmm")=I3))
Como argumento matriz buscada, seleccionamos la columna de fechas.
=BUSCARX(MAX(FILTRAR(Table1[Fecha];TEXTO(Table1[Fecha];"mmmm")=I3));Table1[Fecha]
Como argumento matriz devuelta, seleccionamos la columna de producto, cerramos paréntesis y aceptamos.
=BUSCARX(MAX(FILTRAR(Table1[Fecha];TEXTO(Table1[Fecha];"mmmm")=I3));Table1[Fecha];Table1[Producto])
Obtenemos el producto vendido el último día de febrero.
Arrastramos, y, tenemos el producto vendido el ultimo día de cada mes.
Lo siguiente es saber cual fue el producto que más se ha vendido en estos meses, donde voy a usar la función CONTAR.SI, donde como primer y segundo argumento, usare los productos que tenemos devueltos.
=CONTAR.SI(J3:J10;J3:J10)
Obtengo una matriz desbordada donde aparecen las veces que aparece cada producto, vemos que aspiradora aparece dos veces, TV 32 pulgadas aparece, también, dos veces.
Ahora, voy a preguntar con el condicional SI, que si el valor máximo de CONTAR.SI, es igual a uno de los valores devueltos pro CONTAR.SI, en ese caso, que me devuelva el valor de J3:J10, en caso contrario, que devuelva un texto en blanco.
Obtenemos una matriz desbordada con el producto más vendido.
Me quedo con el valor único con la función UNICOS.
=UNICOS(SI(MAX(CONTAR.SI(J3:J10;J3:J10))=CONTAR.SI(J3:J10;J3:J10);J3:J10;""))
Concateno con la función CONCAT, para quitar las celdas vacías.
=CONCAT(UNICOS(SI(MAX(CONTAR.SI(J3:J10;J3:J10))=CONTAR.SI(J3:J10;J3:J10);J3:J10;"")))
Ya tenemos el producto más vendido.
コメント