Repartir turnos en dias de la semana
- Jaime Franco Jimenez

- 20 jul 2023
- 2 Min. de lectura
El siguiente ejemplo, lo encontré en el canal de Excel Hecho Fácil, que respondía a un comentario de un usuario, que es el siguiente:

El lo planteo de la siguiente manera:

Nosotros vamos a resolver el problema, pero, lo haremos de otra manera.
Empecemos…
Al valor de la celda B1, que son los turnos a repartir, en este caso, he puesto el valor de 9, le vamos a restar 6, que son los dias de trabajo.
Usamos LET, creamos una variable, y, almacenamos la resta.
=LET(a;B1-6
Como argumento cálculo de LET, preguntamos con el condicional SI que si la variable “a” es diferente a blanco.
=LET(a;B1-6;SI(a<>0
Como argumento valor si verdadero, usamos la función APILARV, como argumento matriz1, usamos la función SECUENCIA, como argumento filas es la variable “a”, omitimos el argumento columnas, como argumento inicio, ponemos 1, como argumento paso, ponemos 0, cerramos paréntesis, y, sumamos 1.
=LET(a;B1-6;SI(a<>0;APILARV(SECUENCIA(a;;1;0)+1
Si ponemos la función SECUENCIA en una celda aparte, obtenemos una matriz desbordada en vertical de tres filas, cada fila con el valor de 2, la resta de 9 menos 6, nos devuelve 3, que son los turnos para completar con el valor de 2, el resto debe de rellenarse con el valor de 1.

Volvemos a la expresión anterior.
=LET(a;B1-6;SI(a<>0;APILARV(SECUENCIA(a;;1;0)+1
Punto y coma, como argumento matriz2, volvemos a usar la función SECUENCIA, como argumento filas, al valor de 6 le restamos el valor de la variable “a”, el resultado son los dias a rellenar con el valor 1, omitimos el argumento columnas, como argumento inicio, ponemos 1, como argumento paso, ponemos 0, cerramos paréntesis de SECUENCIA y de APILARV.
=LET(a;B1-6;SI(a<>0;APILARV(SECUENCIA(a;;1;0)+1;SECUENCIA(6-a;;1;0))
Punto y coma, como argumento valor si falso, es decir, que el resultado de la resta es 0, pues, debe de poner 1 en cada día, por lo que volvemos a usar la función SECUENCIA, como argumento filas, ponemos 6, omitimos el argumento columnas, como argumento inicio, ponemos 1, como argumento paso, ponemos 0, cerramos paréntesis de SECUENCIA, del condicional SI y de LET.
=LET(a;B1-6;SI(a<>0;APILARV(SECUENCIA(a;;1;0)+1;SECUENCIA(6-a;;1;0));SECUENCIA(6;;1;0)))
Aceptamos, y, tenemos una matriz desbordada en vertical de seis, para este caso, donde el numero de turnos a repartir es de 9, vemos que, para lunes, martes, y, miércoles le asigna dos turnos, para el resto 1 turno.

Si ponemos 6 turnos, vemos que asigna 1 turno a cada día.

Si ponemos 10 turnos, vemos que para los dias lunes, martes, miércoles, y, jueves le asigna el valor de 2, para viernes y sábado, le asigna el valor de 1.
Pues, ya tenemos resuelto el ejercicio de Excel Hecho Fácil, pero, resuelto de otra manera, porque ya sabemos que en Excel mismo se puede realizar de diferentes formas.
Miguel Angel Franco




Comentarios