top of page

Poner Y si dentro rango fechas

Tenemos el siguiente modelo:









Tenemos una columna con los nombres con los que vamos a trabajar.










Debemos de crear un modelo donde en una primera columna debe de aparecer el intervalo de fechas desde la fecha mínima hasta la fecha máxima de los nombres con los que vamos a trabajar.


En una segunda columna, tercera, cuarta, y, quinta, una por nombre, debe de aparecer Y si esta dentro del rango entre la fecha mínima y máxima de cada nombre, y, N si no lo está.


Como sigue:






















En la celda G2, usamos LET, creamos una variable, usamos la funcion ENFILA, como argumento matriz, seleccionamos el rango A2:A5, que son los nombres con los que vamos a trabajar.


Probamos variable.


=LET(a;ENFILA(A2:A5);a)


Tenemos los nombres con los que vamos a trabajar en horizontal.




Creamos otra variable, usamos la funcion BUSCARX, como argumento valor buscado, ponemos la variable “a”, como argumento matriz de búsqueda, seleccionamos el rango C2:C6, como argumento matriz devuelta, seleccionamos el rango D2:D6, como argumento si no se encuentra, ponemos blanco.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");b)


Tenemos las fechas de inicio para los nombres con los que vamos a trabajar, vemos que el nombre B no se encuentra dentro del modelo, por lo que nos devuelve blanco.





Creamos otra variable, es el mismo BUSCARX que hemos usado para la variable “b”, lo único que cambia es el argumento matriz devuelta, que es E2:E6.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");c)


Tenemos las fechas de fin en vertical de los nombres con los que vamos a trabajar.





Creamos otra variable, usamos la funcion APILARH, como argumento matriz1, ponemos la variable “b”, como argumento matriz2, ponemos la variable “c”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);d)


Creamos otra variable, usamos la funcion MIN, como argumento ponemos la variable “d”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);e)


Creamos otra variable, usamos la funcion MAX, como argumento ponemos la variable “d”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);f)


Creamos otra variable, restamos la variable “f” con la variable “e”, y sumamos 1.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;g)


Obtenemos 65.


Creamos otra variable, usamos la funcion SECUENCIA, como argumento filas, ponemos la variable “g”, omitimos el argumento columnas, como argumento inicio, ponemos la variable “e”.


Tenemos una matriz desbordada en vertical desde la mínima fecha hasta la fecha máxima.



















Creamos otra variable, usamos APILARH, como argumento matriz1, entre comillas dobles, ponemos Fechas, como argumento matriz2, ponemos la variable “a”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;h;SECUENCIA(g;;e);i;APILARH("Fechas";a);i)


Vamos a usar el argumento calculo de LET, usamos el condicional SI, como argumento prueba lógica, abrimos un paréntesis, ponemos la variable “h” comparamos con mayor o igual a la variable “b”, cerramos paréntesis, abrimos otro paréntesis, ponemos la variable “h” comparamos con menor o igual a la variable “c”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;h;SECUENCIA(g;;e); ;i;APILARH("Fechas";a);SI((h>=b)*(h<=c)


Como argumento valor si verdadero, entre comillas dobles, ponemos “Y”, como argumento valor si falso, entre comillas dobles, ponemos “N”.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;h;SECUENCIA(g;;e);i;APILARH("Fechas";a);i);SI((h>=b)*(h<=c);"Y";"N"))


Aceptamos, y, ya tenemos Y donde la fecha esta entre la fecha de inicio y de fin para cada nombre.

















Antes del condicional SI, ponemos la funcion APILARH, como argumento matriz1, ponemos la variable “h”, como argumento matriz2, es el condicional SI.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;h;SECUENCIA(g;;e);i;APILARH("Fechas";a);APILARH(h;SI((h>=b)*(h<=c);"Y";"N")))


Antes de APILARH, ponemos APILARV, como argumento matriz1, ponemos la variable “i”, como argumento matriz2, es la funcion APILARH.


=LET(a;ENFILA(A2:A5);b;BUSCARX(a;C2:C6;D2:D6;"");c;BUSCARX(a;C2:C6;E2:E6;"");d;APILARH(b;c);e;MIN(d);f;MAX(d);g;f-e+1;h;SECUENCIA(g;;e);i;APILARH("Fechas";a);APILARV(i;APILARH(h;SI((h>=b)*(h<=c);"Y";"N"))))


Aceptamos, y, ya lo tenemos.

















Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page