Ordenar tabla con macro
Necesito una macro para ordenar una tabla.
Buscando he encontrado una macro que hace lo que necesito pero cuando intento adaptarla a mi hoja no me funciona.
Lo que pretendo es ordenar una tabla. Cada columna es un campo diferente. En una celda de control selecciono de una lista desplegable la columna por la que quiero ordenar y en otra celda de control elijo si quiero ordenar ascendente o descendente. Una vez ejecutada la macro las filas de la tabla se ordenan según la columna elegida en la celda de control y según el sentido (ascendente o descendente) elegido.
Adjunto la macro que he encontrado.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False RangoTotal = B6:H & UsedRange.Rows.Count Letra = Array( B , C , D , E , F , G , H ) columna = H columna = Letra(Right(ActiveSheet.Range( H3 ), 1) - 1) Rango = columna & 7: & columna & UsedRange.Rows.Count If Target.Address = $H$3 Or Target.Address = $H$4 Then Range( B7:H62 ).Select ActiveWorkbook.Worksheets( Hoja1 ).Sort.SortFields.Clear If UCase(Left(Range( H4 ), 1)) = D Then ActiveWorkbook.Worksheets( Hoja1 ).Sort.SortFields.Add Key:=Range(Rango), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal Else ActiveWorkbook.Worksheets( Hoja1 ).Sort.SortFields.Add Key:=Range(Rango), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal End If With ActiveWorkbook.Worksheets( Hoja1 ).Sort .SetRange Range(RangoTotal) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If ActiveSheet.Range(Rango).Select End Sub
Sub Macro1() ' ' Macro1 Macro ' ' Range( B7:H62 ).Select ActiveWorkbook.Worksheets( Hoja1 ).Sort.SortFields.Clear ActiveWorkbook.Worksheets( Hoja1 ).Sort.SortFields.Add Key:=Range( E7:E62 ), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets( Hoja1 ).Sort .SetRange Range( B6:H62 ) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Estas son las macros que encontre y que no he sabido modificar. En el ejemplo se ordenaba una tabla B6:H67. En la celda H2 se elegia el nombre de la columna por la que se quiere ordenar y eb la celda H4 se elegia el sentido ascendente o descendente.
Yo pretende ordenar una tabla situada en una hoja que se llama FILTRO. La tabla ocupa las celdas A3:M50. La celda de control para elegir la columna por la que se ordena sera la B1 y la celda para elegir el orden la B2.