Macro para poder agrupar

Buendia expertos, quisiera que me ayudaran ara poder realizar esta macro tengo esta hoja2:
B                  C             D                          E                           F
Codigo       Nombre           Fecha                 Entrada           Salida
12                 Doce               12/03/11               1000<span style="white-space: pre;"> </span>
13                 Trece                                                                  500
12                Doce                 14/03/11               500
12                Doce                                                                   1200
13                 Trece                                             600
en donde dice fecha las casillas en blanco estan asi pq la fecha es la misma que la mas proxima de arriba 
a cada codigo le corresponde un nombre por lo que siempre van a sewr iguales
El punto es que deseo que me agrupe por codigo dejandolo de esta manera en la hoja3
A                     B                   C                D                  E                       F
                   Entrada              12              Doce                                  Salida      
12/03/11       1000                                                  14/03/11           1200
14/03/11       500
                    Entrada              13              Trece                                  Salida      
14/03/11       600                                                       12/03/11           500
De antemano muchas gracias expertos por tomarse la molestia de observar esta pregunta y espero que no lo tomen como una molestia mas.

1 Respuesta

Respuesta
1
Sub Copia_Clasifica()
    Sheets("Hoja2").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Hoja3").Select
    Cells.Select
    ActiveSheet.Paste
    Columns("A:E").Select
    Selection.Insert Shift:=xlToRight
    Range("I:I").Select
    Selection.Cut
    Range("A1").Select
    ActiveSheet.Paste
    Range("J:J").Select
    Selection.Cut
    Range("B1").Select
    ActiveSheet.Paste
    Range("G:H").Select
    Selection.Cut
    Range("C1").Select
    ActiveSheet.Paste
    Range("K:K").Select
    Selection.Cut
    Range("F1").Select
    ActiveSheet.Paste
    Range("G1").Formula = "=count(C:C)"
    a = Range("G1").Value
    Range("A1").Select
    b = ActiveCell.Row
    For i = 1 To a
     b = b + 1
    If Range("A" & b) = "" Then
    Range("A" & b).Value = Range("A" & b - 1).Value
    End If
    Next i
    Range("A:A").Select
    Selection.Copy
    Range("E1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 Columns("A:F").Select
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "C2:C1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "B2:B1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "A2:A1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja3").Sort
        .SetRange Columns("A:F")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("C3").Select
    b = ActiveCell.Row
    b = b - 1
    For i = 1 To a - 1
    b = b + 1
    If Range("C" & b).Value = Range("C" & b - 1).Value Then
    Else
    Rows(b).Select
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
    C = ActiveCell.Row
    Range("A" & C).Value = Range("A1").Value
    Range("B" & C).Value = Range("B1").Value
    Range("C" & C).Value = Range("C1").Value
    Range("D" & C).Value = Range("D1").Value
    Range("E" & C).Value = Range("E1").Value
    Range("F" & C).Value = Range("F1").Value
    End If
    Next i
End Sub
Hola creo que me lie un poco con esta macro, pero creo que hace lo que estas necesitando. No olvides finalizar la pregunta.
No quisiera molestarte pero no se si pudieras retocar tu macro por que no funciona adecuadamente; creo que yo tengo la culpa por no explicarme bien.
lo que queria era que me agrupara por codigo y nombre :
                          12              Doce
                  Entrada                                          alida 
12/03/11       1000                   14/03/11           1200 
14/03/11       500 
                             13              Trece 
                    Entrada                                        Salida       
14/03/11       600                       12/03/11           500
es decir que agrupe por codigo y luego ponga las entradas y salidas con su fecha 
Espero que no lo tomes como una molestia mas y sino como un reto . De todas maneras Gracias
Te comento que esta pagina es para ayudarnos en las dudas que tenemos, ya que cada uno de nosotros ha recibido tambien de esta pagina bastante ayuda, te paso lo que me pides, cualquier duda me avisas. Caso contrario no olvides finalizar la pregunta
Sub Copia_Clasifica()
    Sheets("Hoja2").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Hoja3").Select
    Cells.Select
    ActiveSheet.Paste
    Columns("A:E").Select
    Selection.Insert Shift:=xlToRight
    Range("I:I").Select
    Selection.Cut
    Range("A1").Select
    ActiveSheet.Paste
    Range("J:J").Select
    Selection.Cut
    Range("B1").Select
    ActiveSheet.Paste
    Range("G:H").Select
    Selection.Cut
    Range("C1").Select
    ActiveSheet.Paste
    Range("K:K").Select
    Selection.Cut
    Range("F1").Select
    ActiveSheet.Paste
    Range("G1").Formula = "=count(C:C)"
    a = Range("G1").Value
    Range("A1").Select
    b = ActiveCell.Row
    For i = 1 To a
     b = b + 1
    If Range("A" & b) = "" Then
    Range("A" & b).Value = Range("A" & b - 1).Value
    End If
    Next i
    Range("A:A").Select
    Selection.Copy
    Range("E1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 Columns("A:F").Select
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "C2:C1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "B2:B1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range( _
        "A2:A1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja3").Sort
        .SetRange Columns("A:F")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("B1").Value = Range("C3").Value
    Range("E1").Value = Range("D3").Value
    Range("C4").Select
    b = ActiveCell.Row
    b = b - 1
    For i = 1 To a - 1
    b = b + 1
    If Range("C" & b).Value = Range("C" & b - 1).Value Then
    Else
    Rows(b).Select
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
    c = ActiveCell.Row
    Range("A" & c + 2).Value = Range("A2").Value
    Range("B" & c + 2).Value = Range("B2").Value
    Range("E" & c + 2).Value = Range("E2").Value
    Range("F" & c + 2).Value = Range("F2").Value
    Range("B" & c + 1).Value = Range("C" & c + 3).Value
    Range("E" & c + 1).Value = Range("D" & c + 3).Value
    End If
    Next i
    Columns("C:D").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Range("E2").ClearContents
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas