Jump to content
Sign in to follow this  
elbucle

[CERRADO]Formula muy larga, anidamientos funcion si

Recommended Posts

Respuesta: Formula muy larga, anidamientos funcion si

Buenas de nuevo creo que te he encontrado la solucción, es que se me ha metido entre ceja y ceja y por suerte o desgracia soy un puro cabezon

comprueba y me comentas.

la formula seria:

=SI(Y(SIFECHA($J5;HOY();"M")>1;SIFECHA($J5;HOY();"M")<=(15*12));22;SI(Y(SIFECHA($J5;HOY();"M")>=(15*12)+1;SIFECHA($J5;HOY();"M")<=(19*12));23;SI(Y(SIFECHA($J5;HOY();"M")>(19*12)+1;SIFECHA($J5;HOY();"M")<=(24*12));24;SI(Y(SIFECHA($J5;HOY();"M")>(24*12)+1;SIFECHA($J5;HOY();"M")<=(45*12));25;0))))

un saludo

Nº DIAS VACACIONES Modificado - copia.zip

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

perdona he estado realizando más pruebeas y he visto que la formula tenia un pequeño error.

te coloco la corregida, si no me equivoco según mis pruebas esta si funciona

=SI(Y(SIFECHA($J5;HOY();"M")>1;SIFECHA($J5;HOY();" M")<=(15*12));22;SI(Y(SIFECHA($J5;HOY();"M")>=(15* 12)+1;SIFECHA($J5;HOY();"M")<=(19*12));23;SI(Y(SIF ECHA($J5;HOY();"M")>=(19*12)+1;SIFECHA($J5;HOY();"M ")<=(24*12));24;SI(Y(SIFECHA($J5;HOY();"M")>=(24*12 )+1;SIFECHA($J5;HOY();"M")<=(45*12));25;0))))

le faltaba igual en dos de las comparaciones

un saludo y ya me comentaras

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

logroastur, discúlpame pero eso no funciona como debería, ya que si en alguno de ellos, a día de hoy (24/10/2009) le pones que empezó el 25 ó 26/10/1989 (por ejemplo) te va a dar 24 cuando todavía no cumplió los 20 años al faltarle 1 ó 2 días por cumpllir. Con lo que deberían dar 23 todavía.

Yo resolví eso en el archivo adjunto de mi post anterior.

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Perdona pero no habia visto tu respuesta anterior, te comento que he conseguido reducir tu formula para que la puedas usar en solo dos celdas

en una de las celdas

=SI(HOY()<FECHA((AÑO($J$7)+15);MES($J$7);DIA($J$7));22;SI(Y(HOY()>=(FECHA(AÑO($J$7)+15;12;32));(HOY()<(FECHA(AÑO($J$7)+20;12;32))));23;SI(Y(HOY()>=(FECHA(AÑO($J$7)+20;12;32));(HOY()<(FECHA(AÑO($J$7)+25;12;32))));24;SI(Y(HOY()>=(FECHA(AÑO($J$7)+25;12;32));(HOY()<(FECHA(AÑO($J$7)+30;12;32))));25;SI(HOY()>=(FECHA(AÑO($J$7)+30;12;32));26;"NO")))))

en la otra celda

=SI((HOY()<(FECHA(AÑO($J$7)+25;12;32)));B263;SI(HOY()>=(FECHA(AÑO($J$7)+25;12;32));B264;"NO"))

bueno espero que te sirva la aportación y un coordial saludo

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Julibaga y Logroastur, gracias por el interés y el curro que os habéis pegado, es incrible.

Creo que de las dos maneras que habeis propuesto se obtiene exactamente lo que yo buscaba, aunque no en una sola celda, pero en cualquier caso me valdrá.

Con gente así, que hasta que no consiguen lo que se han propuesto no paran sin duda me iría al fin del mundo.

Gracias de verdad

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Julibaga y Logroastur, gracias por el interés y el curro que os habéis pegado, es incrible.

Creo que de las dos maneras que habeis propuesto se obtiene exactamente lo que yo buscaba, aunque no en una sola celda, pero en cualquier caso me valdrá.

Con gente así, que hasta que no consiguen lo que se han propuesto no paran sin duda me iría al fin del mundo.

Gracias de verdad

Eso es lo bueno de este foro, como veras en menos de 24hs ya tienes la solucion a una gran Pregunta como la que planteaste, y que tantos compañeros la tomaron como un desafio que al final se consiguio lo que se buscaba

Saludos a todos

Nicolas

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Hola Elbucle.

Pienso que si el derecho al disfrute de las vacaciones comienza al año siguiente del cumplimiento de la antigüedad requerida, el cálculo de esta antigüedad debería hacerse hasta el 31 de diciembre del año anterior al año actual. Así sabremos hoy los días de vacaciones que le corresponden disfrutar el presente año.

Va el ejemplo (no puedo subir el archivo)

En E6 la fecha de ingreso

En E7 días de antigüedad hasta 31-12-08(=FECHA(AÑO(HOY())-1;12;31)-E6

En H6 días contenidos en 15 años (-1 día), o sea =15*365-1

En H7 íd. en 15 años, o sea =15*365

En H8 íd. en 20 años; osea =20*365

En H9 íd. en 25 años, o sea =25*365

En H10 íd. en 30 años, o sea =30*365

Y por último, en E8 la fórmula:

=SI(E7=0;"";SI(E7<=H6;22;SI(Y(E7>=H7;E7<H8);23;SI(Y(E7>=H8;E7<H9);24;SI(Y(E7>=H9;E7<H10);25;SI(E7>=H10;26;""))))))

Salvo error u omisión

Saludos cordiales

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Sailepaty:

Creo que es muy buena tu fórmula. Tengo que estudiarla.

Pero yo sustituiría HOY() por FECHA(AÑO(HOY())-1;12;31 para así ajustar la antigüedad al 31 de diciembre del año anterior, según mi mensaje anterior.

¿Que opinas al respecto?

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

El derecho a las vacaciones empieza un dia después de haberse cumplido un año de antiguedad y este se rige for la fecha de comienzo en la empresa y no por año calendario. Por lo tanto no tienes porque forzar la fecha al 31 de diciembre.

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Veamos

El compañero Elbucle dice en su mensaje inicial: "Además el derecho se hace efectivo a partir del año natural siguiente al cumplimiento de los años de antigüedad señalados".

Por consiguiente, si en el momento actual queremos saber cuántos días tiene derecho a disfrutar ESTE AÑO un determinado empleado, hemos de saber si al término del año anterior cumplía la antigüedad requerida.

Un ejemplo: Un empleado ingresó en la empresa el 6-03-94 y queremos saber HOY cuántos días de vacación podrá disfrutar durante el AÑO ACTUAL.

Como quiera que el derecho al disfrute se retrotrae a la antigüedad consolidada el año anterior, la respuesta debería ser 22 DÍAS y no 23 DÍAS.

Si esto no es así, ruego argumentos sólidos que me convenzan.

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

?????????????

La pregunta es:

¿ Cuántos años cumplidos van desde 6-03-1994 hasta 31-12-2008 ?

Es la antigüedad acreditada a esta última fecha la que le dará derecho a disfrutar 22 días de vacaciones DURANTE EL AÑO 2009

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

La pregunta es: ¿ Cuántos años cumplidos van desde 6-03-1994 hasta 31-12-2008 ? Es la antigüedad acreditada a esta última fecha la que le dará derecho a disfrutar 22 días de vacaciones DURANTE EL AÑO 2009

Me quieres decir que en España una persona que ingreso el 31-12-1993 tiene derecho a 23 dias y una persona que ingreso el 01-01-1994 tiene derecho a 22 dias durante el año 2009?

Es la interpretación que le das a la pregunta o es lo que la ley de trabajo estipula en España?

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

¿ Quién dijo semejante cosa ?

Ambas personan acreditan 15 años completos a fecha 31-12-2008.

Por consiguiente les corresponde a ambos 23 días de vacación a disfrutar durante el año 2009.

No hay leyes laborales a tener en cuenta en este caso. Lo que sí hay que tener en cuenta es la condición que nos impone el compañero Elbucle en su pregunta inicial.

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

¿ Ambas personan acreditan 15 años completos a fecha 31-12-2008.

Cuantos años cumplidos hay entre 1/1/1994 a 31-12-2008?

Y cuantos dias de vacaciones tiene alguien que empezo a trabajar el 2/1/1994?

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

????

¿ Cuántos años cumplidos hay entre 06-03-1994 y 31-12-2008 ?

y ¿ cuántas vacaciones corresponden al que empezó a trabajar el 07-03-94?

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

¿Cuántos años cumplidos hay entre 06-03-1994 y 31-12-2008?

14

y ¿ cuántas vacaciones corresponden al que empezó a trabajar el 07-03-94?

De acuerdo a tu interpretación 22 días y de acuerdo a mi interpretación a partir del 07-03-2009 le corresponden 23

Pero siguiendo con tu interpretación una persona que empieza a trabajar el 31-12-2003 tiene derecho a 23 días de vacaciones durante todo el año 2009 y otra persona que empieza a trabajar el 1-1-2004 tiene derecho a 22 días de vacaciones durante todo el año 2009.

Motivo por el cual me cuesta trabajo creer que por un día de diferencia entre el inicio de labores una persona tenga que esperar un año completo para disfrutar el mismo tiempo de vacaciones.

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

En tu primer párrafo: Los 22 días que yo obtengo serán los que disfrutará en el año 2009.

Y los 23 días que tú obtienes serán los que disfrutará en el año 2010. Esto viene dado por la condición del compañero Elbucle que dice "...el derecho se ejercerá al año siguiente del cumplimiento de la antigüedad exigida..."

En el resto de tu mensaje dices que, según mi interpretación, una persona que ingresa el 31-12-2003 tiene derecho a 23 días durante el 2009 y que otra persona que ingresa el 1-1-2004 tiene derecho a 23 días durante el 2009.

Yo nunca he dicho eso. En este caso concreto que propones, ambas personas tienen derecho a 22 días de vacación.

Todo ello supeditado siempre a la tan mencionada condición.

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

¿ Quién dijo semejante cosa ?

Ambas personan acreditan 15 años completos a fecha 31-12-2008.

Por consiguiente les corresponde a ambos 23 días de vacación a disfrutar durante el año 2009.

En el resto de tu mensaje dices que, según mi interpretación, una persona que ingresa el 31-12-2003 tiene derecho a 23 días durante el 2009 y que otra persona que ingresa el 1-1-2004 tiene derecho a 22 días durante el 2009.

Yo nunca he dicho eso. En este caso concreto que propones, ambas personas tienen derecho a 22 días de vacación.

Dejando de lado la diferencia en la interpretación de la pregunta original y para comprenderte mejor, me puedes explicar y ejemplificar como llegas a la conclusión que a ambas personas les toca la misma cantidad de días?

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Del 31-12-1993 a 31-12-2008 son 5479 días = 15,01096 años (año de 365)

Del 01-01-1994 a 31-12-2008 son 5478 días = 15,00822 años (año de 365)

En ambos casos se han completado 15 años de antigúedad, luego les corresponde a ambos 23 días de vacación.

Se cuentan los días "reales" y los años de 365 días, que es lo usual en temas laborales.

La fórmula utilizada está en la pág. 4

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Formula muy larga, anidamientos funcion si

Estimado Fleming estas formulas fueron desarrolladas en VBA y tal ves tengas que habilitar los macros en tu P.C. o bien tal vez si utilizas otro libro tendrás que copiar la función en un modulo de tu propio libro

Si les parece util les dejo el codigo para que ustedes se desplacen mejor con estas funciones

Option Base 1

Option Explicit

Option Compare Text

Function CALCULANTI(Fechai As Date, Fechaf As Date)

Dim Anios, Meses, Dias As Integer

Dim FinMesAnterior As Date

Anios = Year(Fechaf) - Year(Fechai) - IIf(Fechaf >= DateSerial(Year(Fechaf), Month(Fechai), Day(Fechai)), 0, 1)

Meses = Month(Fechaf) - Month(Fechai) + IIf(Fechaf >= DateSerial(Year(Fechaf), Month(Fechai), Day(Fechai)), 0, 12) - IIf(Day(Fechaf) >= Day(Fechai), 0, 1)

FinMesAnterior = DateSerial(Year(Fechaf), Month(Fechaf), 1) - 1

Dias = Day(Fechaf) - Day(Fechai) + IIf(Day(Fechaf) >= Day(Fechai), 0, Day(FinMesAnterior))

ReDim V(1, 3)

V(1, 1) = Anios

V(1, 2) = Meses

V(1, 3) = Dias

CALCULANTI = V

End Function

Function ENTRE(Valor_Prueba, Valor_Inf, Valor_Sup)

Dim Ctrl As Boolean

Ctrl = False

If Valor_Prueba >= Valor_Inf And Valor_Prueba <= Valor_Sup Then

Ctrl = True

End If

ENTRE = Ctrl

End Function

Att. Douglas C. :D

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy