Como ordenar columna de rango variable

Grabe una macro y no se como hacer el rango variable en al parte donde dice
SetRange range ("A1:M17")
La macro grabada es esta:
Sub Ordenar_responsable2()
'
' Ordenar_reponsable2 Macro
Columns("I:I").Select
ActiveWorkbook.Worksheets("BASEGENE").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BASEGENE").Sort.SortFields.Add Key:=Range("I1").End(xlDown), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BASEGENE").Sort
.SetRange Range("A1:M17")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub
{"lat":19.6471142871063,"lng":-99.3349456787109}
3

3 respuestas

Respuesta
1
Q+ Latoso,
Prueba cambiendo tu código por este otro:
Sub Ordenar()
'
' Ordenar Macro
' Macro grabada el 03/09/2008 por Richard Chacón
Range("A1:I2900").Sort Key1:=Range("I2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select
End Sub
Antes que nada muchas gracias por tu respuesta y amplios reconocimientos a ti y a esta página, por otro lado
La tabla que utilizo va del rango A1 a M1, y observo que el rango que tiene el código es de A1:I2900, lo que sucede que combino el código que te di con otras macros que tienen el mismo código fijo .set range range(A1:M17), por lo que tu código me marca error y ademas se manejan varias hojas, ¿se podría modificar el código que te di en la parte puntualizada, y aplicar ese cambio a las demás macros?
Q+ Latoso,
Prueba con este código:
Sub Ordenar()
'
' Macro1 Macro
' Macro grabada el 05/09/2008 por Richard Chacón
ActiveCell.Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Respuesta

Sub Ordenar_Rangovariable()

Range("E19").Select
Range(Selection, Selection.End(xlDown)).Select

ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Add Key:=Range(Selection, Selection.End(xlDown)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja2").Sort
.SetRange Range(Selection, Selection.End(xlDown))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("E19").Select
End Sub

Respuesta

Pruebe esta macro, funciona para cualquier hoja ordenando la informacion en forma ascendente tomando como referencia la columna i

Sub ordenar()
Set h = Worksheets("basegene")
Set datos = Range("a1").CurrentRegion
With datos
    columna = Range("i1").Column
    .Sort key1:=h.Range(.Columns(columna).Address), order1:=xlAscending
End With
End Sub

Una disculpa a la macro anterior le hice un cambio que no se reflejo al momento de subirla, esta es la amcro que ocupas

Sub ordenar()
Set h = Worksheets(ActiveSheet.Name)
Set datos = Range("a1").CurrentRegion
With datos
    columna = Range("i1").Column
    .Sort key1:=h.Range(.Columns(columna).Address), order1:=xlAscending
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas