Saltar al contenido

Rotación de empleados, teniendo en cuenta las ausencias previstas.


Dustin

Recommended Posts

publicado

Buenas!
Por aquí de nuevo buscando sabiduría.

Lo que me gustaría aprender es como conseguir que cuando añado a un empleado en la columna (C) "Ausencias", que quite el nombre de la rotación de esa semana, y automáticamente recalcule el orden para las próximas semanas. Adjuntare un Excel muy sencillo con todos los casos posibles para dar contexto.
Ejemplo del Excel,
- En la semana 3, "C" y "D" no trabajaran en el departamento de Abrazar pandas (el fin de semana fue largo, no me queda mucha imaginación). Por ello en el momento en el que ingrese sus nombres en "Ausencias", salieron automáticamente de la semana 3, y se actualizo la rotación del resto de semanas.
- En las semanas 4 y 5, no hay ausencias en el departamento de Cuidar islas desiertas. Por lo tanto, no cambia nada.
- En la semana 6, el señor D esta ausente, pero tampoco le tocaba esa semana estar en el departamento de Inspector de colchones de hotel (bien pensado, esta de suerte). Por lo tanto, no cambia nada.
- En la semana 7, tenemos a "E" ausente del prestigioso departamento de Catador de cervezas.. sin alcohol. Y al igual que con la semana 3, saldrá su nombre de esa semana y se actualizara en orden en las próximas semanas, que llegaran hasta el final del año.

De los métodos arcaicos que he probado, nada termina de funcionar. Por lo que agradecería si pueden ayudarme de nuevo con este Excel.
Muchísimas gracias de antemano,

Libro2.xlsx

  • 3 weeks later...
publicado

Jelow,

 

Vengo con dos fórmula que igual te puede ayudar (aunque tienen sus puntos malos):

FÓRMULA EN PRIMER EMPLEADO DEL MES

=IF(IFERROR(VLOOKUP(Empleados!B5,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,Empleados!B5)))))

FÓRMULA EN EMPLEADOS DE LA MISMA SEMANA

=IF(G6=Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,Empleados!B5)))),IF(G6=Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,Empleados!B6)))),IF(G6=Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,Empleados!B7)))),IF(G6=Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,Empleados!B8)))),IF(G6=Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table2[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,Empleados!B9)))),Empleados!B5)))))

FÓRMULA EN PRIMER EMPLEADO DE LA SEMANA SIGUIENTE

=IF('Week 3'!I6=Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,Empleados!B5)))),IF('Week 3'!I6=Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,Empleados!B6)))),IF('Week 3'!I6=Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,Empleados!B7)))),IF('Week 3'!I6=Empleados!B8,IF(IFERROR(VLOOKUP(Empleados!B9,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,Empleados!B8)))),IF('Week 3'!I6=Empleados!B9,IF(IFERROR(VLOOKUP(Empleados!B5,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B5,IF(IFERROR(VLOOKUP(Empleados!B6,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B6,IF(IFERROR(VLOOKUP(Empleados!B7,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B7,IF(IFERROR(VLOOKUP(Empleados!B8,Table3[Ausencias],1,0),"NO ESTA")="NO ESTA",Empleados!B8,Empleados!B9)))),Empleados!B5)))))

TRADUCCIÓN:

  • IF = SI
  • IFERROR = SI.ERROR
  • VLOOKUP = BUSCARV

 

Puntos malos:

1.- Mediante fórmulas, lo que pides es un tanto complicado, ya que necesitas una serie de condicionales, que casi bien se pueden ir al infinito. (te recomendaría que le echaras un ojo a VBA e intentaras por ese lado, que sería más sencillo aunque también tiene su miga)

2.- La fórmula casi se hace ilegible y super larga...

3.- Yo he convertido los rangos de Ausencias y Empleados en Tablas, para que fuera más sencillo de hacer funcionar y referenciar los rangos.

 

Te adjunto el archivo, pero, como te comento, es complejo de aplicar y entender...

 

Espero te sirva 

 

 

Libro2.xlsb

publicado

hola Dustin (y Edad Media)

Armando una base de datos, podrías obtener mejores resultados..

(Tabla, Tabla Dinámica, Segmentación de Datos)

al agregar datos en la TABLA,  ejecutar desde la barra de Herramientas, FICHA DATOS/ ACTUALIZAR TODO.

 

Saludos,

Silvia

 

 

 

 

 

Agrupar (Sq) (1).xlsx

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.