Сортировать столбец и скрыть строки без указанного текста в столбце с помощью макроса VBA в Excel - PullRequest
0 голосов
/ 02 мая 2018

Я хочу использовать макрос VBA, который будет «сортировать» столбец, но «скрывать» весь остальной текст.

Столбец заполняется трехбуквенным текстом, т.е. 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 голосов
/ 02 мая 2018

Как уже упоминалось, используйте 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
...