Office - Días trabajados en excel

 
Vista:

Días trabajados en excel

Publicado por Marcos (3 intervenciones) el 30/11/2005 19:08:07
Hola a todos!!

Tengo el siguiente problema: En una hoja de excel tengo los registros de las horas de trabajo de cada día de la siguiente forma:

FECHA | HORA INICIO | HORA FIN
02/11/2005 | 9:00 | 14:00
02/11/2005 | 16:00 | 19:00
03/11/2005 | 9:00 | 14:00
03/11/2005 | 16:00 | 19:00
04/11/2005 | 9:00 | 14:00
04/11/2005 | 16:00 | 19:00
07/11/2005 | 9:00 | 14:00
07/11/2005 | 16:00 | 19:00
08/11/2005 | 9:00 | 14:00
08/11/2005 | 16:00 | 19:00

Necesaría saber cuántos días se ha trabajado en el mes 11. Si separo la fecha en tres columnas DIA, MES y AÑO y luego utilizo la función CONTAR.SI sobre la columna MES, en este caso me salen 10 mientras que realmente tengo 5.

Alguno de vosotros se ha encontrado con un problema similar?? Alguna idea que me pudiera ayudar??

Gracias por adelantado por vuestras respuestas.

Saludos

---MARCOS----
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Días trabajados en excel

Publicado por _frany_ (42 intervenciones) el 30/11/2005 21:47:16
Hombre tal como lo planteas , una solucion muy sencilla seria dividir entre dos, pero imagino que habra dias que tan solo se trabaja en horario de mañana verdad?

la verdad si lo planteas asi casi mas facil seria alicar un macro que te cuente los dias del mes , y que en caso que sean dobles lo divida entre dos cada uno , luego que te de el resutado.

Yo tenia hecha una macro para contar nombres de personas teniendo como datos de entrada el nombre y el apellido en celdas distintas, lo mismo adaptando un poco te podria servir.

Saludos.

Francisco Naranjo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días trabajados en excel

Publicado por Marcos (3 intervenciones) el 02/12/2005 10:06:39
Muchas gracias por la respuesta, la verdad es que la solución de la macro y ala había contemplado, el problema es que de programación en office no ando muy bien aunque sea muy parecido o casi igual al Visual Basic 6.

Si pudieras pasarme el código de esa macro que me comentas estaría bien para ir empezando a familiarizarme con ellas.

Gracias de todas formas

----MARCOS----
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días trabajados en excel

Publicado por _frany_ (42 intervenciones) el 02/12/2005 16:34:22
Te paso la macro que tengo

que en realidad la hice para sumar el saldo de personas con nombre y apellido y lueo la adapte para que contara el numero de personas

para que funcione correctamente tienes que poner el cursor en la celda inicial a contar
es decir sin tienes a1,b1,c1 tendrias que ponerte en a1 y activar la macro, ella te crea una hoja de resumen sin borrar ni hacer nada en la hoja actual.

si tienes problemas me avisas.

Saludos



Sub contador()
Application.ScreenUpdating = False

mihoja = ActiveSheet.Name 'guarda mi hoja inicial de trabajo
nueva_hoja2
'crea una hoja temporal mediante el procedimiento
Sheets.Add
ActiveSheet.Name = "temporal"

Sheets(mihoja).Activate ' activa mi hoja inicial de trabajo

fila = ActiveCell.Row

fila = fila - 1
filai = fila
Columna = ActiveCell.Column

'copiar la hoja en una temporal
Cells.Select
Selection.Copy
Sheets("temporal").Paste
Cells(fila + 1, Columna).Select
Sheets("temporal").Activate

'ordena las filas por apellido
Cells(fila + 1, Columna + 1).Select
Selection.Sort Key1:=Cells(fila + 1, Columna + 1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

'ordena las filas por nombre
Cells(fila + 1, Columna).Select
Selection.Sort Key1:=Cells(fila + 1, Columna), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Dim n

Do
fila = fila + 1
valor = Cells(fila, Columna).Value
If valor = "" Then Exit Do
nvalores = nvalores + 1

Loop

n = nvalores
ReDim nombre(n)
ReDim apellido(n)
ReDim saldo(n + 1)
ReDim ncompleto(n + 1)
ReDim valore(n)

n = 0
For n = 1 To nvalores

nombre(n) = Cells(filai + n, Columna)
apellido(n) = Cells(filai + n, Columna + 1)
saldo(n) = 1
ncompleto(n) = nombre(n) + apellido(n)
Next n

fila = 0
Do Until fila = nvalores
DATO = DATO + 1

Do
fila = fila + 1
valore(DATO) = saldo(fila) + valore(DATO)
If ncompleto(fila) <> ncompleto(fila + 1) Then Exit Do
Loop

filanuevo = filanuevo + 1
nombre_celda = nombre(fila)
apellido_celda = apellido(fila)
saldo_celda = valore(DATO)
Sheets("resumen").Cells(filanuevo, 1).Value = nombre_celda
Sheets("resumen").Cells(filanuevo, 2).Value = apellido_celda
Sheets("resumen").Cells(filanuevo, 3).Value = saldo_celda

Loop
Sheets("resumen").Activate
Cells(1, 1).Activate

'borra el temporal
Application.DisplayAlerts = False
Worksheets("temporal").Delete
Application.DisplayAlerts = True

End Sub

Sub nueva_hoja2()

Dim hoja As Worksheet
Dim xlLibro As Excel.Workbook
Set xlLibro = ActiveWorkbook
For Each hoja In xlLibro.Worksheets
If hoja.Name = "Resumen" Then GoTo existe

Next
no_existe:
Sheets.Add
ActiveSheet.Name = "Resumen"

existe:

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar