Ordenar varios datos con rango variable

Tengo este código para ordenar una base de datos según varios criterios. Tengo que repetir esta acción todos los días pero mi base de datos va cambiando de tamaño por lo que el rango tiene que ser variable...

Este es el código que estoy usando pero me da el siguiente error: "La referencia de ordenación no es válida. Compruebe que está dentro de los datos que desea ordenar y que el primer cuadro ordenar por no es el mismo o está en blanco". ¿Alguien me puede ayudar para que me tome el rango correcto y me deje ordenar? Muchas gracias!

UltimaFila = Range("A" & Rows.Count).End(xlUp).Row

Sheets("Reports").Select
ActiveWorkbook.Worksheets("Reports").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Reports").Sort.SortFields.Add Key:=Range( _
"C2:C" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Reports").Sort.SortFields.Add Key:=Range( _
"AF2:AF" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Reports").Sort.SortFields.Add Key:=Range( _
"AG2:AG" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Reports").Sort
.SetRange Range("A2:A" & UltimaFila)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

1 respuesta

Respuesta
1

Nani, Buen dia!

El error se debe al rango para ordenar seleccionado.

Vos estas queriendo ordenar por las columnas C, AF y AG y la matriz a Ordenar es son es la columna "A", por lo tanto te tira error.

Te envio el codigo Debuggeado

Sub Macro1()
'
Set Reporte = Sheets("Reports")
HeaderRow = 2
UltimaFila = Reporte.Range("A" & Reporte.Rows.Count).End(xlUp).Row
UltimaColumna = Reporte.Cells(HeaderRow, Reporte.Columns.Count).End(xlToLeft).Column
Reporte.Activate
Reporte.Sort.SortFields.Clear
'Columnas para ordenar
Reporte.Sort.SortFields.Add Key:=Reporte.Range("C" & HeaderRow & ":C" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Reporte.Sort.SortFields.Add Key:=Reporte.Range("AF" & HeaderRow & ":AF" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Reporte.Sort.SortFields.Add Key:=Reporte.Range("AG" & HeaderRow & ":AG" & UltimaFila), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Reports").Sort
'Rengo de datos a ordenar
.SetRange Reporte.Range(Cells(HeaderRow, 1), Cells(UltimaFila, UltimaColumna))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Por favor recuerda valorar la respuesta!

Slds

Juan

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas