使用Excel中的VBA宏对列中的列和隐藏行进行排序,而不使用列中的指定文本

时间:2018-05-02 10:14:01

标签: excel vba excel-vba sorting hide

我希望使用VBA宏,它将排序'列但是“隐藏”#39;所有其他文字。

该列填充了三个字母的文本,即MFA,KDB,OPA等......

这是我目前找到的代码:

Sub SortByName()

    With ActiveSheet
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.Range("V:V"), _
                             SortOn:=xlSortOnValues, _
                             Order:=xlAscending, _
                             CustomOrder:="MFA", _
                             DataOption:=xlSortNormal
        .Sort.SetRange .Range("A:AA")
        .Sort.Header = xlYes
        .Sort.MatchCase = False
        .Sort.Orientation = xlTopToBottom
        .Sort.SortMethod = xlPinYin
        .Sort.Apply
    End With
End Sub

此代码效果很好,但它不会隐藏不受欢迎的行,其中的文字不是' MFA'

非常感谢:)

1 个答案:

答案 0 :(得分:0)

如上所述,使用AutoFilter隐藏不包含'MFA'

的行
Option Explicit

Public Sub SortByName()

    Dim ws As Worksheet

    Set ws = ActiveSheet

    With ws

        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.Range("V:V"), _
                             SortOn:=xlSortOnValues, _
                             Order:=xlAscending, _
                             CustomOrder:="MFA", _
                             DataOption:=xlSortNormal
        .Sort.SetRange .Range("A:AA")
        .Sort.Header = xlYes
        .Sort.MatchCase = False
        .Sort.Orientation = xlTopToBottom
        .Sort.SortMethod = xlPinYin
        .Sort.Apply

        .UsedRange.Columns("V").AutoFilter Field:=1, Criteria1:="MFA"
        'Or: .Range("A:AA").AutoFilter Field:=22, Criteria1:="MFA"

    End With

End Sub