VBA для сортировки в Excel в дополнение к текущему коду для запуска на любом листе - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь добавить этот VBA из списка других команд, однако получаю ошибку.Пожалуйста, помогите с правильным синтаксисом для сортировки.спасибо.

сообщение об ошибке: ошибка во время выполнения «1004» ошибка приложения или объекта.

    Sub filter()
Dim N As Long
Dim wsName As String


For N = 1 To ThisWorkbook.Sheets.Count
    wsName = ThisWorkbook.Worksheets(N).Name

    If Len(wsName) = 3 Then

    Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=12, Criteria1:=">=365" _
        , Operator:=xlAnd
    Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=17, Criteria1:=">100" _
        , Operator:=xlAnd
    Sheets(wsName).Range("$A$1:$XFC$7606").AutoFilter Field:=20, SortOn:=xlSortOnValues, Order:=xlDescending _
        , Operator:=xlAnd
    With ActiveWorkbook.Worksheets("i_ULO").AutoFilter.sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


    Else
end if 
next n
end sub

После добавления этого кода ниже.Появилась новая ошибка.

Dim N As Long

Dim wsName As String

Для N = 1 To ThisWorkbook.Sheets.Count wsName = ThisWorkbook.Worksheets (N) .Name

If Len(wsName) = 3 Then
With .Cells(1, "A").CurrentRegion
     .Cells.sort Key1:=.Columns(20), Order1:=xlDescending, _
                 Orientation:=xlTopToBottom, Header:=xlYes
End With
End With

Ошибка компиляции

ссылка

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Попробуйте вместо этого:

Sub filter()

    Dim N As Long
    Dim wsName As String

    For N = 1 To ThisWorkbook.Sheets.Count
        wsName = ThisWorkbook.Worksheets(N).Name

        If Len(wsName) = 3 Then

            Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=12, Criteria1:=">=365" _
                , Operator:=xlAnd
            Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=17, Criteria1:=">100" _
                , Operator:=xlAnd
            Sheets(wsName).AutoFilter.Sort.SortFields.Add Key:=Range("T1:T7606"), SortOn:=xlSortOnValues, Order:=xlDescending

            With ActiveWorkbook.Worksheets("i_ULO").AutoFilter.Sort
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With

        End If

    Next N

End Sub
0 голосов
/ 04 декабря 2018

Этот код сортировки VBA можно использовать для сортировки таблицы данных активной рабочей таблицы, исходящей из A1 со столбцом T в качестве первичного ключа сортировки.

Dim N As Long 
Dim wsName As String 

For N = 1 To ThisWorkbook.Sheets.Count 
    wsName = ThisWorkbook.Worksheets(N).Name 
    If Len(wsName) = 3 Then 

        with ThisWorkbook.Worksheets(N)
            with .cells(1, "A").currentregion
                 .Cells.Sort Key1:=.Columns(20), Order1:=xldescending, _
                             Orientation:=xlTopToBottom, Header:=xlyes
            end with
        end with

    end if
next n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...