1

我需要将表格从最大到最小排序为 Q 列。

代码没有给出错误,但也不起作用。它首先过滤得很好并且没有成功排序:

introws = Range("A1").End(xlDown).Row
ActiveSheet.Range("$A$1:$q$" & introws).AutoFilter Field:=17, Criteria1:=">4", Operator:=xlFilterValues
Range("$A$1:$q$" & introws).Sort Key1:=Range("q:q"), Order1:=xlDescending
Range("q:q").Sort (xlDescending)

两条线都不起作用,它只是保持未排序......如何写这个?

4

1 回答 1

0

使用 对范围值进行排序,需要按filter顺序应用特定的方法,它涉及clear sortfields>> ,以下是使用数据过滤器对范围进行简单排序:add keysort.apply

With Sheet1
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add2 Key:= _
    Range("B1"), SortOn:=xlSortOnValues, Order:=xlDescending
    .AutoFilter.Sort.Apply
End With

在此处输入图像描述

要在您的情况下应用排序方法,您可以尝试以下代码修改,它应该按预期工作,请对两种情况进行测试:

introws = Range("A1").End(xlDown).Row
ActiveSheet.Range("$A$1:$q$" & introws).AutoFilter Field:=17, Criteria1:=">4", Operator:=xlFilterValues

With ActiveSheet
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add2 Key:= _
    Range("Q1"), SortOn:=xlSortOnValues, Order:=xlDescending
    .AutoFilter.Sort.Apply
End With
于 2021-06-16T14:14:15.147 回答