top of page

Total hasta mes contable

El mes contable de esta empresa termina el último viernes del mes.


Por lo tanto, el próximo mes contable comienza el sábado siguiente a este último viernes del mes.

Por ejemplo: para el 23 de febrero, el último viernes es el 24 de febrero y el último viernes del 23 de enero es el 27 de enero de 23.


Por lo tanto, para el mes contable de febrero, el rango de fechas sería del 28 de enero al 24 de febrero de 23.

Hay una excepción a la regla anterior.

Enero siempre comenzará el 1 de enero y diciembre siempre terminará el 31 de diciembre.

Debemos de encontrar las ventas totales de todos los meses.


Tenemos una columna con los doce meses.

















Empecemos…


En la celda E2, usamos LET, creamos una variable, usamos la funcion SECUENCIA, omitimos el argumento filas, como argumento columnas, ponemos 12.


=LET(a;SECUENCIA(;12);a)


Probamos variable, obtenemos una matriz desbordada en horizontal desde el numero 1 al número 12.




Creamos otra variable, la llamamos calendario, usamos la funcion SECUENCIA, como argumento filas, ponemos 365, omitimos el argumento columnas, como argumento inicio, entre comillas dobles ponemos 01/01/2023.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");calendario)


Obtenemos un calendario desde el día 1 de enero de 2023 al día 31 de diciembre de 2023.





















Creamos otra variable, usamos la funcion TEXTO, como argumento valor, ponemos la variable “calendario”, como argumento formato, entre comillas dobles, ponemos “dddd”, y, vamos a obtener el día de la semana de cada fecha.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");dias)






















Creamos otra variable, preguntamos si el mes de la variable “calendario” es igual a uno de los valores de la variable “a”, que nos devuelva la variable “calendario”, en caso contrario, que devuelva blanco.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");b)


Obtenemos una matriz de 12 columnas, en cada columna tenemos las fechas de dicho mes.






















Creamos otra variable, preguntamos si el mes de la variable “calendario” es igual a la variable “a”, que nos devuelva la variable “días”, en caso contrario, que devuelva blanco.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");c)


Obtenemos los días de la semana para cada mes.





















Creamos otra variable, preguntamos si la variable “c” es igual a viernes, en ese caso, que nos devuelva la variable “calendario”, en caso contrario, que devuelva blanco.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");d)


Obtenemos las fechas que corresponden a viernes de cada mes.






















Creamos otra variable, la llamamos fechamaxima, usamos la funcion BYCOL, como argumento array, ponemos la variable “d”, ponemos LAMBDA, declaramos una variable, usamos la funcion MAX, y, como argumento ponemos la variable “x”.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamaxima)


Obtenemos la fecha del ultimo mes de cada mes en horizontal.




Creamos otra variable, la llamamos fechamas1, sumamos 1 a la variable fechamaxima, vamos a obtener la fecha donde debe de empezar a contar para el siguiente mes.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;fechamas1)




Tenemos la fecha donde tenemos el ultimo viernes de cada mes, en la variable fechamas1, como debe de empezar en el día siguiente, tenemos la fecha de comienzo.


Para el mes de enero debe de empezar desde el día 01/01/2023 hasta el ultimo viernes, es decir, hasta el 27/01/2023, para el mes de febrero, debe de empezar desde el día 28/01/2023 hasta el día 24/02/2023, así con el resto de los meses.


En la variable fechamas1, empieza en el día 28/01/2023, pero, debe de empezar en el día 01/01/2023, y, la última fecha, 30/12/2023, sobra.


Creamos otra variable, usamos la funcion APILARH, como argumento matriz1, entre comillas dobles, ponemos 01/01/2023, como argumento matriz2, ponemos la variable fechamas1.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;APILARH("01/01/2023";fechamas1);e)


Ya tenemos las fechas desde el 01/01/2023.




Pero, nos sobra la última fecha, antes de APILARH, usamos la funcion EXCLUIR, como argumento matriz, es la funcion APILARH, omitimos el argumento filas, como argumento columnas, ponemos -1.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;EXCLUIR(APILARH("01/01/2023";fechamas1);;-1);e)


Ya tenemos las fechas con las que tenemos que trabajar.




Creamos otra variable, usamos la funcion ENCOL, como argumento matriz, ponemos la variable “e”.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;EXCLUIR(APILARH("01/01/2023";fechamas1);;-1);f;ENCOL(e);f)


Tenemos las fechas en una columna, pero, vemos que todas las fechas están alineadas a la derecha, es decir, formato de número, cosa que es correcta, pero, la primera fecha, la que nosotros hemos puesto, esta alineada a la izquierda, quiere decir, que esta en formato de texto, pues, vamos a multiplicar la funcion ENCOL por 1.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;EXCLUIR(APILARH("01/01/2023";fechamas1);;-1);f;ENCOL(e)*1;f)


Ya tenemos todas las fechas correctas.
















Creamos otra variable, volvemos a usar ENCOL, como argumento matriz, ponemos la variable fechamaxima.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;EXCLUIR(APILARH("01/01/2023";fechamas1);;-1);f;ENCOL(e)*1;g;ENCOL(fechamaxima);g)


Tenemos las fechas hasta donde se debe de contar para cada mes.






















Ya tenemos donde empezar, y, donde acabar.

















Creamos otra variable, o, usamos el argumento calculo de LET, usamos la funcion MAP, como argumento array, ponemos la variable “f”, como argumento array2, ponemos la variable “g”, ponemos LAMBDA, creamos dos variables, como argumento calculo de LAMBDA, ponemos la función SUMA, como argumento numero1, usamos el condicional SI, como argumento prueba lógica, preguntamos si el rango A2:A114 es mayor o igual a la variable “x”, como argumento valor si verdadero, ponemos otro SI, como argumento prueba lógica, preguntamos si el rango A2:A114 es menor o igual a variable “y”, en ese caso, que nos devuelva el rango B2:B114, en caso contrario, que ponga blanco.


=LET(a;SECUENCIA(;12);calendario;SECUENCIA(365;;"1/1/2023");dias;TEXTO(calendario;"dddd");b;SI(MES(calendario)=a;calendario;"");c;SI(MES(calendario)=a;dias;"");d;SI(c="viernes";calendario;"");fechamaxima;BYCOL(d;LAMBDA(x;MAX(x)));fechamas1;fechamaxima+1;e;EXCLUIR(APILARH("01/01/2023";fechamas1);;-1);f;ENCOL(e)*1;g;ENCOL(fechamaxima);h;MAP(f;g;LAMBDA(x;y;SUMA(SI(A2:A114>=x;SI(A2:A114<=y;B2:B114;"")))));h)


Aceptamos, y, ya lo tenemos.




















Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page