Unificar formulas condicionales en una sola

Estoy calculando días de vacaciones con un calendario a base de formulas que funciona bien, el calendario tiene los 7 días de la semana, el sábado esta oculto, pero ahí esta, las columnas de domingo a sábado son de la columna L a la columna R y en las filas partiendo del día es de la fila 4 a la fila 10.

Lo que necesito es que partiendo de este calendario pueda calcular el día que la persona tiene que presentarse a laborar, es decir una persona terminar sus vacaciones el 07/07/2015 debe presentarse el 08/07/2015,

El inconveniente está cuando su ultimo día de vacaciones es día viernes, ejemplo termina el 10/07/2015 debe presentarse el 13/07/2015, entonces usando este formato donde ingreso la fecha de inicio y la fecha final, calcula cuantos días en total y en la ultima columna me indica cuando debe volver, utilizando la formula

 =si(eserror(indice(l5:q10; coincidir(d16;q5:q10;0);6)+3); indice(l5:p10; coincidir(d16;p5:p10;0);5)+1;indice(l5:q10; coincidir(d16;q5:q10;0);6)+3)

Me da exactamente lo que necesito pero únicamente para dos días dependiendo que rango utilice en la función coincidir, lo que necesito es ampliar los argumentos de esta formula para que pueda incluir los restantes tres días de la semana, si las pongo por separado, seleccionando los días que hacen falta, funciona perfectamente, el problemas es que tengo que unir las tres formulas en una sola celda para que devuelva el valor de un solo día y no tenga que utilizar tres celdas para saber cuando debe volver una persona de vacaciones.

Cualquier ayuda es bienvenida

1 respuesta

Respuesta
1

Por lo que he podido entender lo que quieres es que si la fecha de acabar las vacaciones cae en viernes, ponga la fecha de vuelta al trabajo en lunes y si no sea el día siguiente. Si es así, pon en la celda de fecha de retorno esta función.

=SI(DiaSemana(A1)=5;A1+3;A1+1) ' Por ser viernes.

La función DiaSemana has de ponerla en un módulo, si nó excel no la va a encontrar

Public Function DiaSemana(Fecha) As Integer
    DiaSemana = CInt(Weekday(Fecha, vbMonday))
End Function

¡Gracias! excelente respuesta, justo lo que necesitaba. gracias 

Aprovechando la oportunidad tengo otra consulta:

El calculo de vacaciones lo hago a partir de la fecha de ingreso de una persona a la empresa, hasta el 31 de diciembre de ese año, luego son 20 días hábiles por año, es decir de enero a diciembre; para el calculo inicial utilizo la formula =SI($G$4<=S5;(S5-$G$4)*20/365;"0") G4 es donde coloco la fecha de ingreso a la empresa y S5 es donde coloque por ejemplo 31/12/2015, y funciona correctamente, luego en el formato ingreso de que fecha a que fecha una persona desea tomar vacaciones:

este nuevo inconveniente esta en que una persona por lo regular no toma todos los días de vacaciones en una sola fecha, normalmente los toma intercalados a veces solamente un día a la vez, 

lo que necesito es que a partir de la fecha en que termina las vacaciones(del formato de arriba) ejemplo "AL 08/05/2012" vaya restando los días que tiene por año y que en la primera columna "PERIODO" coloque a que año pertenece dependiendo la fecha de ingreso a la empresa, entonces si una persona ingreso en junio de 2012 tiene 10 días de vacaciones y decide tomar 5 días en dos fechas diferentes, me indique que ambas fechas pertenecen al año 2012, y si en lugar de esto toma los diez días en una sola fecha lo mismo, esto significa que el año 2013 tiene 20 días de vacaciones pero durante ese año no tomo ninguno de esos días, por lo tanto a partir de enero de 2014 inicio con 20 días adicionales, lo que necesito entonces es que comience a restar de los 20 dias de 2013 y vaya descontando hasta terminar esos días y luego inicie con los 20 de 2014, colocando a que periodo pertenecen.

Espero haberme explicado adecuadamente y si fuera posible tu ayuda con alguna formula anidad o alguna función para resolver este inconveniente.

gracias.

Para averiguar el total de días que tiene la persona pon esto

' =si(Año(G4)=(El año que pones en la columna PERIODO);SI($G$4<=S5;(S5-$G$4)*20/365;"0") ;20)

Lo de El año que pones en la columna PERIODO es ese 2012 que hay a la izquierda del 8 en la 2a tabla que has puesto.

Si el año coincide con el actual, significa que ha empezado este año por tanto calcula las vacaciones, si los años son diferentes son 20 días.

Para averiguar las vacaciones acumuladas. Si la tabla queda así

TABLA 1

Trabajador Fechas días vacaciones

Pepito           Del  01/04/2015 al 05/04/2015                      4

Pepito           Del  05/08/2015 al 15/08/2015                      10

Luego

TABLA 2

Trabajador Periodo Días por año días gozados Días disponibles

Pepito             2015            **                         xxx                     6

El ** es la fórmula que he puesto más arriba

Para el xxx. No se si tendrás las tablas como te lo he puesto yo, lo que pondría es.

=sumar.si.conjunto(

Rango de todos los días de vacaciones(columna días vacaciones de la TABLA1);

Rango de los trabajadores ( columna trabajador de TABLA 1);

Seleccionas nombre del trabajador, en el ejemplo Pepito de la TABLA 2;

Rango de los periodos de la TABLA 2;

Seleccionas el año que quieres averiguar los días disponibles, supongo que el actual

'Estos 2 últimos los pongo por que no se si en tu TABLA 2 tienes solo lo de este año o tienes datos de varios años atrás.

Para que te hagas una idea de todo esto, te pongo un ejemplo

                   A             B                C

1 Trabajador Año Días de vacaciones

2 Pepito 2012 4

3 Pepito 2012 6

4 Pepito 2013 6

5 Pepito 2013 4

6 Pepito 2013 10

Quieres averiguar lo acumulado de días

A B C

8     Pepito    2012  =SUMAR.SI.CONJUNTO($C$2:$C$6;$A$2:$A$6;$A8;$B$2:$B$6;$B8)

9     Pepito    2013 =SUMAR.SI.CONJUNTO($C$2:$C$6;$A$2:$A$6;$A9;$B$2:$B$6;$B9)

Si te lías mucho, mi mail es [email protected], para que me mandes el libro y te lo hago

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas