Resumen por años.

24/08/2009 - 21:33 por Julián | Informe spam
Necesito ayuda para resolver esta situación.
En una hoja de un libro tengo el histórico de la plantilla de mi empresa,
incluidas las bajas que se produjeron en cada momento.
El formato y los datos de la hoja son:
Número Nombre FechaIngreso FechaBaja
1 Nombre1 4/12/1968 30/06/2008
2 Nombre2 4/12/1968
3 Nombre3 1/1/1969 5/10/1998
4 Nombre4 1/11/1969 19/9/2005
Empieza en A1.
La fecha de baja del registro 2 no aparece porque todavía está en activo.
Así hasta 218 registros con distintas fechas de ingreso y de baja.
Para un estudio que estoy realizando necesito saber, para cada uno de los 42
años, desde 1968 hasta 2009, cuantos días trabajó la plantilla de la empresa
y con cuántos trabajadores se cerró cada uno de los años. El resultado me
gustaría que se presentara de la siguiente manera:
Año Días Empleados
1968 56 2
1969 1156 4
1970

2009


Saludos,
Julián.

Preguntas similare

Leer las respuestas

#1 pepe
24/08/2009 - 21:49 | Informe spam
Yo crearia unas columnas auxiliares (una por año) con un 1 o 0 indicando si
el trabajador estaba en activo ese año (esto es facil comparando el titulo
de la columna con los años de ingreso y baja), después sumas las columnas de
los años y ya tienes el número de trabajadores por años.


"Julián" escribió en el mensaje
news:
Necesito ayuda para resolver esta situación.
En una hoja de un libro tengo el histórico de la plantilla de mi empresa,
incluidas las bajas que se produjeron en cada momento.
El formato y los datos de la hoja son:
Número Nombre FechaIngreso FechaBaja
1 Nombre1 4/12/1968 30/06/2008
2 Nombre2 4/12/1968
3 Nombre3 1/1/1969 5/10/1998
4 Nombre4 1/11/1969 19/9/2005
Empieza en A1.
La fecha de baja del registro 2 no aparece porque todavía está en activo.
Así hasta 218 registros con distintas fechas de ingreso y de baja.
Para un estudio que estoy realizando necesito saber, para cada uno de los
42
años, desde 1968 hasta 2009, cuantos días trabajó la plantilla de la
empresa
y con cuántos trabajadores se cerró cada uno de los años. El resultado me
gustaría que se presentara de la siguiente manera:
Año Días Empleados
1968 56 2
1969 1156 4
1970
.
2009


Saludos,
Julián.
Respuesta Responder a este mensaje
#2 AnSanVal
25/08/2009 - 00:24 | Informe spam
Suponiendo tus datos en Hoja1!A1:C218:


1.- Define el rango C1:C218 con el nombre "hasta" (sin comillas) y en "Se refiere a:" escribe:

=Hoja1!$C$1:$C$218+HOY()*(Hoja1!$C$1:$C$218="").

2.- En (p.e.) H1:H42 rellena la serie 1968, 1969, 1970, ... 2009.

3.- En I1 escribe:

=SUMAPRODUCTO((AÑO($B$1:$B$218)<=H1)*(AÑO(HASTA)>=H1))

4.- En J1 escribe:

=SUMAPRODUCTO((AÑO(HASTA)>=H1)*((AÑO($B$1:$B$218)<=H1)*(HASTA-$B$1:$B$218)))

5.- Selecciona I1:J1 y haz doble clic en el punto de relleno (esquina inferior derecha).




Saludos: Antonio.

***************************************

"Julián" escribió en el mensaje
news:
Necesito ayuda para resolver esta situación.
En una hoja de un libro tengo el histórico de la plantilla de mi empresa,
incluidas las bajas que se produjeron en cada momento.
El formato y los datos de la hoja son:
Número Nombre FechaIngreso FechaBaja
1 Nombre1 4/12/1968 30/06/2008
2 Nombre2 4/12/1968
3 Nombre3 1/1/1969 5/10/1998
4 Nombre4 1/11/1969 19/9/2005
Empieza en A1.
La fecha de baja del registro 2 no aparece porque todavía está en activo.
Así hasta 218 registros con distintas fechas de ingreso y de baja.
Para un estudio que estoy realizando necesito saber, para cada uno de los 42
años, desde 1968 hasta 2009, cuantos días trabajó la plantilla de la empresa
y con cuántos trabajadores se cerró cada uno de los años. El resultado me
gustaría que se presentara de la siguiente manera:
Año Días Empleados
1968 56 2
1969 1156 4
1970
.
2009


Saludos,
Julián.
Respuesta Responder a este mensaje
#3 Julián
25/08/2009 - 20:34 | Informe spam
Muchas gracias por tu respuesta que resuelve la mitad de mi problema. El
número de trabajadores está bien calculado.
En el punto 4, salvo que está haciendo algo mal, la ejecución de lo que
indicas da el siguiente resultado; indico sólo los tres primeros años:
1968 2 29327
1969 4 53302
1970 8 91212
Haciendo los cálculos “a mano” el resultado es el siguiente:
1968 2 56
1969 4 1156
1970 8 2194
La diferencia está en que tu función calcula los días desde la fecha de
ingreso hasta el día del cálculo (hoy). Yo lo que necesito es el número de
días trabajados en cada uno de los años.
Si puedes te pido, por favor, que revises la función del punto 4 para que el
resultado sea el total de días trabajados por la plantilla en cada uno de los
años indicados.
Gracias.

Saludos,
Julián.


"AnSanVal" escribió:


Suponiendo tus datos en Hoja1!A1:C218:


1.- Define el rango C1:C218 con el nombre "hasta" (sin comillas) y en "Se refiere a:" escribe:

=Hoja1!$C$1:$C$218+HOY()*(Hoja1!$C$1:$C$218="").

2.- En (p.e.) H1:H42 rellena la serie 1968, 1969, 1970, ... 2009.

3.- En I1 escribe:

=SUMAPRODUCTO((AÑO($B$1:$B$218)<=H1)*(AÑO(HASTA)>=H1))

4.- En J1 escribe:

=SUMAPRODUCTO((AÑO(HASTA)>=H1)*((AÑO($B$1:$B$218)<=H1)*(HASTA-$B$1:$B$218)))

5.- Selecciona I1:J1 y haz doble clic en el punto de relleno (esquina inferior derecha).




Saludos: Antonio.

***************************************

"Julián" escribió en el mensaje
news:
> Necesito ayuda para resolver esta situación.
> En una hoja de un libro tengo el histórico de la plantilla de mi empresa,
> incluidas las bajas que se produjeron en cada momento.
> El formato y los datos de la hoja son:
> Número Nombre FechaIngreso FechaBaja
> 1 Nombre1 4/12/1968 30/06/2008
> 2 Nombre2 4/12/1968
> 3 Nombre3 1/1/1969 5/10/1998
> 4 Nombre4 1/11/1969 19/9/2005
> Empieza en A1.
> La fecha de baja del registro 2 no aparece porque todavía está en activo.
> Así hasta 218 registros con distintas fechas de ingreso y de baja.
> Para un estudio que estoy realizando necesito saber, para cada uno de los 42
> años, desde 1968 hasta 2009, cuantos días trabajó la plantilla de la empresa
> y con cuántos trabajadores se cerró cada uno de los años. El resultado me
> gustaría que se presentara de la siguiente manera:
> Año Días Empleados
> 1968 56 2
> 1969 1156 4
> 1970
> .
> 2009
>
>
> Saludos,
> Julián.



Respuesta Responder a este mensaje
#4 AnSanVal
25/08/2009 - 22:41 | Informe spam
Hola Julian.

Efectivamente, la fórmula que te ofrecí calcula los días transcurridos en todo el periodo y no los días transcurridos en
ese año para los trabajoderes existentes (fallo mio).




Pero... lo que no se hacer es; calcular los día trabajados. Aquí intervendrían: días trabajados a la semana (5 ó 6 ó
...), días festivos en la zona, vacaciones, bajas médicas, permisos especiales(bodas, nacimientos, defunciones), etc.
Son muchos los factores que pueden influir en que días fueron trabajados y que días no. Para conseguir esto sería
necesario que tubieras un campo en el que registraras realmente cuantos días trabajó cada uno de los empleados, pero no
con una fórmula general.




Si lo que pretendes es; calcular los días naturales transcurridos en ese periodo de tiempo, sería: fecha_final -
fecha_inicial + 1 (por empleado) y sumar todos los valores de los distintos empleados.




Si otro participante del foro no te da una solución buena antes que yo, procuraré mañana estudiar tu caso. Seguramente
la fórmula se alargará "algo" más :-(




Saludos: Antonio.

*******************************

"Julián" escribió en el mensaje
news:
Muchas gracias por tu respuesta que resuelve la mitad de mi problema. El
número de trabajadores está bien calculado.
En el punto 4, salvo que está haciendo algo mal, la ejecución de lo que
indicas da el siguiente resultado; indico sólo los tres primeros años:
1968 2 29327
1969 4 53302
1970 8 91212
Haciendo los cálculos "a mano" el resultado es el siguiente:
1968 2 56
1969 4 1156
1970 8 2194
La diferencia está en que tu función calcula los días desde la fecha de
ingreso hasta el día del cálculo (hoy). Yo lo que necesito es el número de
días trabajados en cada uno de los años.
Si puedes te pido, por favor, que revises la función del punto 4 para que el
resultado sea el total de días trabajados por la plantilla en cada uno de los
años indicados.
Gracias.

Saludos,
Julián.
Respuesta Responder a este mensaje
#5 AnSanVal
27/08/2009 - 15:45 | Informe spam
No he podido conseguir una fórmula medianamente "decente". :-(




He construido una solución mediante funciones VBA (comenta si te vale).




En un Módulo ordinario (Alt+F11 > menu Insertar):


Function Trabajadores(año As Integer)

Dim fila As Long, alta As Date, baja As Date

fila = 1

Do While Cells(fila, 1).Value > ""

alta = Cells(fila, 2).Value

baja = Cells(fila, 3).Value

If baja = 0 Then baja = Date

If año >= Year(alta) And año <= Year(baja) Then Trabajadores = Trabajadores + 1

fila = fila + 1

Loop

End Function


Function dias(año As Integer)

Dim fila As Long, alta As Date, baja As Date

fila = 1

Do While Cells(fila, 1).Value > ""

alta = Cells(fila, 2).Value

baja = Cells(fila, 3).Value

If baja = 0 Then baja = Date

If año = Year(alta) Then

If Year(alta) = Year(baja) Then

dias = dias + (baja - alta) + 1

GoTo 1

Else

dias = dias + (DateSerial(año, 12, 31) - alta) + 1

End If

End If

If año = Year(baja) Then

dias = dias + (baja - DateSerial(Year(baja), 1, 1)) + 1

End If

1

If año > Year(alta) And año < Year(baja) Then

dias = dias + (DateSerial(año, 12, 31) - DateSerial(año, 1, 1)) + 1

End If

fila = fila + 1

Loop

End Function





Ejemplo de llamada a las funciones en la hoja :

En [E1:E42] 1968, 1969, ... 2009

En [F1] =Trabajadores(E1) En [G1] =dias(E1)

...


Repite para el resto de años. Te basta seleccionar F1:G1 y doble clic en el punto de relleno (esquina inferior derecha
de E1).


Consigues lo mismo pero sin funciones, p.e. ejecutando el código desde un botón (o directamente), con el siguiente
código (En este caso escribe el resultado en la Hoja2):

En un Módulo ordinario:
Sub diasNat()
Dim año As Integer, fila1 As Integer, fila As Long
Dim alta As Date, baja As Date
Sheets("Hoja2").Range("A:C").ClearContents
Sheets("Hoja2").Range("A1").Value = "AÑO"
Sheets("Hoja2").Range("B1").Value = "PLANTILLA"
Sheets("Hoja2").Range("C1").Value = "DÍAS-NAT."
For año = 1968 To Year(Date)
fila1 = año - 1966: fila = 1
Sheets("Hoja2").Cells(fila1, 1).Value = año
Do While Cells(fila, 1).Value > ""
alta = Cells(fila, 2).Value
baja = Cells(fila, 3).Value
If baja = 0 Then baja = Date
If año = Year(alta) Then
If Year(alta) = Year(baja) Then
Sheets("Hoja2").Cells(fila1, 3).Value = Sheets("Hoja2"). _
Cells(fila1, 3).Value + (baja - alta) + 1
Sheets("Hoja2").Cells(fila1, 2).Value = _
Sheets("Hoja2").Cells(fila1, 2).Value + 1
GoTo 1
Else
Sheets("Hoja2").Cells(fila1, 3).Value = _
Sheets("Hoja2").Cells(fila1, 3).Value + _
(DateSerial(año, 12, 31) - alta) + 1
Sheets("Hoja2").Cells(fila1, 2).Value = _
Sheets("Hoja2").Cells(fila1, 2).Value + 1
End If
End If
If año = Year(baja) Then
Sheets("Hoja2").Cells(fila1, 3).Value = _
Sheets("Hoja2").Cells(fila1, 3).Value + _
(baja - DateSerial(Year(baja), 1, 1)) + 1
Sheets("Hoja2").Cells(fila1, 2).Value = _
Sheets("Hoja2").Cells(fila1, 2).Value + 1
End If
1
If año > Year(alta) And año < Year(baja) Then
Sheets("Hoja2").Cells(fila1, 3).Value = _
Sheets("Hoja2").Cells(fila1, 3).Value + _
(DateSerial(año, 12, 31) - DateSerial(año, 1, 1)) + 1
Sheets("Hoja2").Cells(fila1, 2).Value = _
Sheets("Hoja2").Cells(fila1, 2).Value + 1
End If
fila = fila + 1
Loop
Next año
End Sub


Tu eliges la solución que mejor te parezca (si te valen).


Saludos desde Tenerife: Antonio.
************************************************
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida