VBA 根据两个不同的列进行排序,然后按值/颜色进行过滤

VBA 根据两个不同的列进行排序,然后按值/颜色进行过滤

我正在尝试运行一个宏

a) 按 E 列和 G 列的数字排序
b) 然后按 O 列排序

a) 我想一直将前 2 行保留在那里,并且它的标题在第 3 行中
我想要排序的实际数据从第 4 行开始
我写的那个工作得很好...我让它一直到 W2000,但我更希望它能够适应任何数据而不是随机的大值。

Sub Sort_E_Gt()
'
'
    ActiveWorkbook.Worksheets("TEST1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TEST1").Sort.SortFields.Add Key:=Range("E:E") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    ActiveWorkbook.Worksheets("TEST1").Sort.SortFields.Add Key:=Range("G:G") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("TEST1").Sort
        .SetRange Range("A3:W2000") '>> the part I wanna change so it doesn't have a range limit but instead the entire sheet
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        .Apply
    End With
End Sub

b) 然后,如果可能的话,我想按值(或者更好的单元格颜色)过滤掉“行 O”。

Sub NAFilter()
'
    Rows("3:3").Select
    Range("O3").Activate
    'Selection.AutoFilter
    Selection.AutoFilter Field:=18, Criteria1:="#N/A"
    Range(Selection, Selection.End(xlDown)).Select
End Sub

并确保在没有 #N/A 或彩色单元格的情况下仍能工作
(我的可以工作,但我知道它可以更好,而且我不确定是否可以将两个宏/想法合并为一个)

欢迎随意对其中一个宏做出贡献(如果您不确定如何单独在一个 VBA 中实现这两个想法。)谢谢!

相关内容