BYROW. Ventas mismo y distinto año
- Jaime Franco Jimenez

- 11 jul 2023
- 3 Min. de lectura
Para el siguiente ejemplo, tenemos una serie de ventas de productos, donde tenemos una fecha de pedido, y, una fecha de entrega.
El modelo esta en formato de tabla, y, se llama Ventas.

Queremos calcular las ventas cuando el pedido se pidió y entrego en el mismo año, después, queremos calcular las ventas que se entregaron en el siguiente año.
Lo primero que vamos a calcular son las ventas que se realizaron y entregaron en el mismo año, para ello, en la celda G3, vamos a preguntar si el año de la columna fecha pedido es igual al año de la columna fecha entrega, es decir, se realizado y se entrego el pedido en el mismo año.
=SI(AÑO(Ventas[Fecha pedido])=AÑO(Ventas[Fecha entrega])
En ese caso, que nos devuelva la columna ventas, en caso contrario, que nos devuelva un texto en blanco, y, cerramos paréntesis.
=SI(AÑO(Ventas[Fecha pedido])=AÑO(Ventas[Fecha entrega]);Ventas[Ventas];"")
Obtenemos una matriz desbordada con las ventas donde hay coincidencia, pero como queremos el total, después del signo igual usamos la función SUMA.
=SUMA(SI(AÑO(Ventas[Fecha pedido])=AÑO(Ventas[Fecha entrega]);Ventas[Ventas];""))
Aceptamos, y, tenemos las ventas que se han realizado, y, entregado en el mismo año.

Para las ventas que se han realizado en un año, y, has sido entregadas en otro año, la expresión es la misma, pero cambiamos el signo igual por diferente, o, indistinto (<>).


En la celda G7, nos vamos a traer los años únicos de las columnas fecha pedido, y, fecha entrega, para ello, vamos a usar la función APILARV, donde como argumento matriz1, es el año de la columna fecha pedido.
=APILARV(AÑO(Ventas[Fecha pedido])
Como argumento matriz2, son los años únicos de fecha entrega.
=APILARV(AÑO(Ventas[Fecha pedido]);AÑO(Ventas[Fecha entrega]))
Nos quedamos con los años únicos.
=UNICOS(APILARV(AÑO(Ventas[Fecha pedido]);AÑO(Ventas[Fecha entrega])))
Aceptamos.

Ahora, debemos de calcular las ventas pedidas y entregadas para cada año, siendo la suma de todos los años, el total obtenido en ventas mismo año, y, ventas distinto año.
En la celda H7, con la función APILARH, unimos fecha de pedido y fecha de entrega.
=APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega])
Usamos LET, creamos una variable, y, almacenamos la expresión anterior.
=LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega])
Como argumento calculo de LET, usamos la función BYROW, como argumento array es la variable “a”.
=LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a
Como argumento función, ponemos la función LAMBDA, como argumento parámetro, declaramos una variable, por ejemplo “x”, que va a almacenar la variable “a”.
=LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a;LAMBDA(x
Como argumento cálculo de LAMBDA, ponemos el operador lógico Y, como argumento valor logico1, ponemos la función AÑO, como argumento, usamos INDICE para que nos devuelva la primera columna, e, igualamos al valor de la celda G7.
=LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a;LAMBDA(x;Y(AÑO(INDICE(x;;1))=G7
Como argumento valor logico2 del operador lógico Y, nos traemos el año de la segunda columna de la variable “a”, e, igualamos al valor de la celda G7, es decir, que el año de fecha pedido y fecha entrega sean los mismos.
Cerramos paréntesis del operador lógico Y.
=LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a;LAMBDA(x;Y(AÑO(INDICE(x;;1))=G7;AÑO(INDICE(x;;2))=G7)
Obtenemos una matriz desbordada en vertical con VERDADERO donde hay coincidencia, y, FALSO donde no la hay.

Lo siguiente es preguntar si el resultado de la expresión anterior es igual a VERDADERO, que devuelva la columna de ventas, en caso contrario, que devuelva un texto en blanco.
=SI(LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a;LAMBDA(x;Y(AÑO(INDICE(x;;1))=G7;AÑO(INDICE(x;;2))=G7))));Ventas[Ventas];"")
Ahora, la matriz desbordada contiene las ventas donde era VERDADERO, y, blanco donde era FALSO, pero, como queremos el total, después del signo igual, ponemos la función SUMA.
=SUMA(SI(LET(a;APILARH(Ventas[Fecha pedido];Ventas[Fecha entrega]);BYROW(a;LAMBDA(x;Y(AÑO(INDICE(x;;1))=G7;AÑO(INDICE(x;;2))=G7))));Ventas[Ventas];""))
Aceptamos, y, tenemos las ventas pedidas, y, entregadas en el año 2019.

Arrastramos, y, tenemos las ventas para cada año, vemos que para el año 2022, no hubo pedidos.

Para el calculo de ventas para pedidos entregados en otro año, la expresión es la misma, lo único que debemos de cambiar es el signo igual en el argumento logico1, por distinto, o, indiferente.

Aceptamos, arrastramos, y, ya lo tenemos.

En la celda H11, realizamos un auto suma, y, en la celda I11, realizamos otra suma, vemos que son los mismos resultados obtenidos en ventas mismo año, y, ventas distinto año.

Miguel Angel Franco




Comentarios