• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Macro para rotacion de turnos

Fercu60

New member
Esto intentando hacer una macro que recorra un rango variable de celdas y que cuando la ejecute empiece en la semana 1, continué con la 2 y así sucesivamente, todo esto dependiendo de la cantidad de semanas que tenga, en el ejemplo 6, pero podrían ser más.

Para que escriba para la primera persona la semana 1, luego 2, la 3, la 4, la 5 la 6 y como no hay más la 1 y empieza la secuencia.

Para la segunda persona empieza en la 2, la 3, la 4, la 5, la 6, la 1 y vuelve a la 2,...

Para la tercera empezaría en la 3, la 4, la 5, la 6, la 1, la 2 y vuelve a empezar en la 3

Con una macro que he encontrado por los foros

Sub Copiar_n_Veces()

Application.ScreenUpdating = False
Range("E6:K11").Copy [E17].Resize(, [C7] * [F17:L17].Count)

End Sub

He conseguido:


Me falto añadir que los ciclos, los obtengo de dividir las 53 semanas del año, entre las 6 semanas de rotaciones.
Repite las semanas hasta las 53 semanas de 1 año completo, pero siempre la misma semana cuando el resultado esperado debería de ser:



También necesitaría poder decirle para cuentas personas debería de hacerlo.
 

Adjuntos

Cacho R

Well-known member
Hola! Fercu60
Vas a tener que detallar varias cosas. A saber:
  • Entiendo que el siguiente es tu sistema de rotación de turnos:
1600138925393.png
  • Lo que no entiendo es por qué en la fila 17 de la hoja Hoja1 pusiste "puro turno matutino".
  • Otra cosa: imagino que tienes 6 grupos de trabajo y cada uno de ellos desarrolla la rotación comenzando en cada una de las 6 líneas que has expuesto de manera de cubrir -diariamente- 2M, 1T y 1N... ¿Eso es lo correcto?...
Saludos, Cacho R.
 

Fercu60

New member
Hola! Fercu60
Vas a tener que detallar varias cosas. A saber:
  • Entiendo que el siguiente es tu sistema de rotación de turnos:
  • Lo que no entiendo es por qué en la fila 17 de la hoja Hoja1 pusiste "puro turno matutino".
  • Otra cosa: imagino que tienes 6 grupos de trabajo y cada uno de ellos desarrolla la rotación comenzando en cada una de las 6 líneas que has expuesto de manera de cubrir -diariamente- 2M, 1T y 1N... ¿Eso es lo correcto?...
Saludos, Cacho R.
Buenos días Cacho

Referente a la fila 17 de la hoja1 , esa es una parte del problema.
Con respecto a los grupos si, en este momento podria ser asi 2M, 1T y 1N, pero se podria alargar, en vez de una rotación de 6 semanas podria ser de 9 o mas.
En la hoja1 (2), he puesto como deberia de quedar:
Para el primer agente empezando en la semana 1, despues la 2, la 3, la 4, la 5 y la 6, como no hay mas pues vuelva a la 1 .....
Para el segundo agente empieza en la 2, la 3, la 4, la 5, la 6 y la 1, y vuele a empezar.
Para el trecero, la 3, la 4, la 5, la 6, la 1, la 2 y vuelve a empezar
Y asi con el resto.

En el caso de tener mas agentes que semanas de rotación, se duplicarian las semanas del 1º, 2º etc.

Espero haberme explicado.

Saludos,
Fercu60
 

Fercu60

New member
Creo que lo siguiente puede servirte si te comprendí correctamente:
Buenas noches,
Gracias por tu rapida respuesta.
Aunque no he tenido tiempo de analizar detenidamente tu ejemplo, me ha resultado muy interesante.

Me falta estudiarlo para todo un año y con rotaciones mas largas, si no tienes inconveniente me gustaria analizarlo mas antes de dar por cerrado el tema.
Pero como ya te he indicado muchas gracias por tu interes y por una solucion tan interesante.

Saludos.
Fercu60
 

Cacho R

Well-known member
Me falta estudiarlo para todo un año y con rotaciones mas largas, si no tienes inconveniente me gustaria analizarlo mas antes de dar por cerrado el tema.
Me olvidé comentar que para ir "saltando" de mes a mes sólo tienes que cambiar la fecha de la celda C1. A partir de ello, los turnos se arman solos.

Saludos, Cacho R.

P.D.
Eso de "rotaciones mas largas" no te lo entiendo. O sea: el ÚNICO sistema de trabajo que has mostrado tiene una rotación de 42 días que se van sucediendo uno tras otro.

Entonces: ¿A qué le llamas rotación más larga?
 

Fercu60

New member
Me olvidé comentar que para ir "saltando" de mes a mes sólo tienes que cambiar la fecha de la celda C1. A partir de ello, los turnos se arman solos.

Saludos, Cacho R.

P.D.
Eso de "rotaciones mas largas" no te lo entiendo. O sea: el ÚNICO sistema de trabajo que has mostrado tiene una rotación de 42 días que se van sucediendo uno tras otro.

Entonces: ¿A qué le llamas rotación más larga?
Hola Cacho,
Entendi el cambio de fechas en la celda C1.
Respecto a las rotaciones mas largas, hay veces que un Dpto. lo forman 30 o mas agentes y solo uno o dos deben de estar de noches, con lo que se debe de alargar la secuencia para que no repitan y se junten demasiados en ese turno.

Es verdad que puse un ejemplo con seis semanas, ejemplo que es real y con turnicidad real. Pero para no hacerlo demasiado largo y engorroso

Para que te hagas una idea, trabajamos por temporadas que van desde:
Invierno 1 - de enero a marzo
Verano - de abril a octubre
Invierno 2 - de noviembre a diciembre
Temporadas que se publican antes del inicio de ellas.

Luego la operativa se complica un poco mas con vacaciones, bajas, etc.
Pero eso es otro tema.

Ya tengo hechas tablas para los turnos, pero todo a base de formulas muy largas y engorrosas (ingobernables), por eso pense en una macro que lanzara el año, o las temporadas. Pero tu solución sin ser esa macro ha sido realmente interesante, e ingeniosa.

Como soy nuevo en este foro me gustaria poder contactar contigo de nuevo, por si me atasco en este caso y no se si es posible?

De nuevo muchas gracias por tu colaboración.

Saludos,
Fernando
 

Cacho R

Well-known member
.
Mira la nueva versión que estoy incorporando en este mensaje, Fercu:
  • En lo conceptual es idéntica a la ya mostrada. Pero te hago notar las diferencias:
  • Las dos tablas de parámetros las he trasladado a otra hoja (allí nadie las debería "tocar").
  • Desde la fila 4 hacia abajo (hoja Calendario Laboral) antes era un rango común y ahora es una tabla: tbl_Calendario (la fila cabecera de esta tabla está oculta -fila 3- y no se utiliza para nada).
  • Si tienes que incorporar otra persona que haga el mismo sistema que Juan (G1) sólo:
    • Agregas una fila a la tabla (donde te plazca).
    • Escribes en la columna Grupo: G1
    • Y automáticamente te aparecerán las fórmulas tomando el valor correspondiente.
Nota "lo más fuerte" de esta versión: 3 personas que desarrollan tareas según H1, H2 y H3: ¿Qué es esto?...
  • Mira las últimas 21 filas de la tabla tbl_Sist (hoja Parámetros).
  • A ese sistema le puse el ID: INVENTADO. Sin embargo se trata del conocidísimo: 6x1, 6x1, 6x1.
  • En la columna Sistema puedes ver su desarrollo a lo largo de los 21 días.
  • Vamos a la otra tabla: tbl_Grupo.
    • En "Grupo" inventé 3 nombres: H1, H2 y H3.
    • El "ID" -obviamente- es INVENTADO.
    • La columna Período es una sencilla fórmula.
    • Y las fechas de inicio de cada grupo -también- difieren en una semana.
  • Queda claro -entonces- que en la tbl_Sist describes el sistema de trabajo mientras que en la tbl_Grupo estableces la fecha de inicio de cada grupo a los efectos de establecer la rotación de cada grupo de trabajo.
  • Y siempre fue así pero te lo destaco: lo que escribes en la columna Grupo es lo que -después- asocias a cada empleado.
Analízalo "con tranquilidad" y advertirás que "la única fórmula" que se utiliza en la hoja Calendario Laboral automatiza todo.

Saludos, Cacho R.
 

Adjuntos

Fercu60

New member
.
Mira la nueva versión que estoy incorporando en este mensaje, Fercu:
  • En lo conceptual es idéntica a la ya mostrada. Pero te hago notar las diferencias:
  • Las dos tablas de parámetros las he trasladado a otra hoja (allí nadie las debería "tocar").
  • Desde la fila 4 hacia abajo (hoja Calendario Laboral) antes era un rango común y ahora es una tabla: tbl_Calendario (la fila cabecera de esta tabla está oculta -fila 3- y no se utiliza para nada).
  • Si tienes que incorporar otra persona que haga el mismo sistema que Juan (G1) sólo:
    • Agregas una fila a la tabla (donde te plazca).
    • Escribes en la columna Grupo: G1
    • Y automáticamente te aparecerán las fórmulas tomando el valor correspondiente.
Nota "lo más fuerte" de esta versión: 3 personas que desarrollan tareas según H1, H2 y H3: ¿Qué es esto?...
  • Mira las últimas 21 filas de la tabla tbl_Sist (hoja Parámetros).
  • A ese sistema le puse el ID: INVENTADO. Sin embargo se trata del conocidísimo: 6x1, 6x1, 6x1.
  • En la columna Sistema puedes ver su desarrollo a lo largo de los 21 días.
  • Vamos a la otra tabla: tbl_Grupo.
    • En "Grupo" inventé 3 nombres: H1, H2 y H3.
    • El "ID" -obviamente- es INVENTADO.
    • La columna Período es una sencilla fórmula.
    • Y las fechas de inicio de cada grupo -también- difieren en una semana.
  • Queda claro -entonces- que en la tbl_Sist describes el sistema de trabajo mientras que en la tbl_Grupo estableces la fecha de inicio de cada grupo a los efectos de establecer la rotación de cada grupo de trabajo.
  • Y siempre fue así pero te lo destaco: lo que escribes en la columna Grupo es lo que -después- asocias a cada empleado.
Analízalo "con tranquilidad" y advertirás que "la única fórmula" que se utiliza en la hoja Calendario Laboral automatiza todo.

Saludos, Cacho R.
Hola Cacho,
Sencillamente espectacular.
Sobre todo por poder añadir a otras personas desarrollando otras funciones.

Ya le he hecho algunas modificaciones adaptándolas para mi caso en particular.
Las hojas Parámetros y Calendario Laboral quedan igual salvo el caso de esta ultima que la he alargado desde el 30 de Dic 2019, hasta 29 de Mar 2020. Por aquello de las temporadas que comente anteriormente, en este caso Inv1. De hecho este archivo se llamaría Inv1-2020 ya que el ejemplo esta hecho sobre el año 2020.

He añadido 3 Pestañas mas:
Programado, donde aparecen las vacaciones, los cambios de turno realizados por la empresa (por el motivo que sea vacaciones, enfermedad, etc., en determinadas ocasiones hay que cambiarle el turno a alguien)
Cambios, sirve para cuando los agentes intercambian sus horarios entre ellos, y cuando están de baja, en caso de volver a estar de alta pues eliminando esta causa, volvería a aparecer su turno.
Realizado, que es como queda finalmente el cuadrante, con la rotación, la programación y los cambios. Es decir es la suma de las otras 3. En el caso de que sean vacaciones ademas detrás de la V aparece el turno que le correspondería, ya que hay algunos turnos que conllevan abonos económicos, aun estando de vacaciones.

Te acompaño la hoja modificada para que puedas observar lo que detallo.

Te reitero mi gratitud. El resultado es excelente.

Saludos,
Fernando
 

Adjuntos

Arriba