Macro para ordenar un rango variable

Tengo esto dela grabadora

Sub Macro10()
'
' Macro10 Macro
'
' Acceso directo: Ctrl+Mayus+L
'
Rows("9").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"J10:J69"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"U10:U69"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"V10:V69"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
.SetRange Range("A9:AE69")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Lo que necesito es que esta macro me ordene pero necesito que sea variable desde *10 hasta donde termine el rango

1 Respuesta

Respuesta
1

Adicione una instrucción para encontrar la ultima fila.

Sub Macro10()
Dim UltimaFila
UltimaFila = Range("A" & Rows.Count).End(xlUp).Row
Rows("9").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"J10:J" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"U10:U" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"V10:V" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
.SetRange Range("A9:AE" & UltimaFila)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Espero te sirva.

Feliz dia

Juan Carlos

Hola

Juan Carlos

esta perfecta tu ayuda, intente con los comandos que me enviaste agregar de bajo delo queme enviaste los siguiente e igualmente no se como poner ese rango variable

Range("L10").Select
ActiveCell.FormulaR1C1 = "=ROUND(RC[-2],0)"
Range("L10").Select
Selection.Copy
Range("J10").Select
Selection.End(xlDown).Select
Range("L34").Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("L33").Select
Selection.End(xlUp).Select
Range("L10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("J10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("L10").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=ROUND(RC[9],0)"
Range("L10").Select
Selection.Copy
Range("L11").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("L10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("U10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("L10").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=ROUND(RC[10],0)"
Range("L10").Select
Selection.Copy
Range("L11").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("L10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("V10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("L10").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=ROUND(RC[11],0)"
Range("L10").Select
Selection.Copy
Range("L11").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("L10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("W10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("L10").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub

espero me puedas ayudar

de antemano muchas gracias

Juan Carlos

En la pregunta inicial trabajas con ordenamiento y asi realizamos el código. Pero en la aclaración que me haces, ya no ordenas sino que manejas básicamente copiar, pegar y redondear.

Si te parece bien, enviame un correo a [email protected] con tu archivo de Excel y asi poder ayudarte con el código.

Feliz dia

Juan Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas