Búsqueda de datos en matriz y representar en otra hoja

Necesitaría que me ayudaseis a resolver un tema con excel.

Tengo una hoja de excel donde cada columna es un empleado, y en las filas tengo fechas (cada una repetida 6 veces, para indicar los diferentes establecimientos donde pueden trabajar los empleados). Los datos de la matriz son el horario y las horas a trabajar por cada empleado.

Y Necesito en otra hoja representar de manera diferentes mis datos. En las columnas hbarán las diferentes fechas, y en las filas los estalbecimientos (teniendo en cuenta que en cada establecimiento pueden haber hasta 6 empleados). Necesito que me indique los nombres de todos los empleados que cada día está asignado en cada establecimiento.

1 Respuesta

Respuesta
1

H o l a:

Podrías enviarme tu archivo y me explicas cómo pasar la información de una hoja a la otra hoja.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “nuria garcia” y el título de esta pregunta.

¡Gracias Dante!

Te he enviado archivo por mail para que lo puedas analizar.

H o  l a:

 Te anexo la macro

Sub Calen()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.StatusBar = False
    Dim fecha As Date
    Set h1 = Sheets("Botigues")
    Set h2 = Sheets("Calen")
    h2.UsedRange.Offset(2, 3).ClearContents
    c = 4
    u = 288 ' h1.Range("F" & Rows.Count).End(xlUp).Row
    For i = 103 To u '
        Application.StatusBar = "Procesando fecha: " & Format(h1.Cells(i, "F"), "dd/mm/yyyy")
        For j = Columns("J").Column To Columns("IP").Column Step 8
            jcol = j
            For n = 1 To 2
                If h1.Cells(i, jcol) > 0 Then
                    fecha = h1.Cells(i, "F")
                    dato = h1.Cells(i, "H")
                    nombre = h1.Cells(2, j)
                    Set b = h2.Rows(2).Find(fecha, lookat:=xlWhole, LookIn:=xlValues)
                    If Not b Is Nothing Then
                        col = b.Column
                        Set b = h2.Columns("B").Find(dato, lookat:=xlWhole)
                        If Not b Is Nothing Then
                            fil = b.Row
                            existe = False
                            Do While h2.Cells(fil, col) <> ""
                                If InStr(1, h2.Cells(fil, col), nombre) > 0 Then
                                    existe = True
                                    Exit Do
                                End If
                                fil = fil + 1
                            Loop
                            horas = Format(h1.Cells(i, jcol), "hh:mm") & "-" & Format(h1.Cells(i, jcol + 1), "hh:mm")
                            If existe Then
                                h2.Cells(fil, col) = h2.Cells(fil, col) & "/" & horas
                            Else
                                h2.Cells(fil, col) = h1.Cells(2, j) & " " & horas
                            End If
                        Else
                            'MsgBox "Revisar"
                        End If
                    Else
                        'MsgBox "revisar"
                    End If
                End If
                jcol = jcol + 2
            Next
        Next
        c = c + 1
    Next
    Application.ScreenUpdating = True
    Application.StatusBar = False
    MsgBox "Calendarios actualizado"
End Sub

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas