Сортировать по значению сверху - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть электронная таблица, в которой указаны объект, жилой район и фамилия человека.

В нем около 8 объектов.Я хочу отсортировать по определенному объекту и поместить сверху на верхнюю часть таблицы.

Например, скажем, у меня есть 100 строк, где каждая строка обозначает определенный объект.Выберите Queens Facility в качестве критерия сортировки ячеек, и есть 10 строк с Queens Facility.Я хотел бы отсортировать все строки в Queens Facility по первым 10.

Вот код.Каковы другие критерии для размещения определенного выбранного объекта на вершине?

Sub SSSsort()

Dim lngRows As Long

lngRows = Range("AD65536").End(xlUp).Row

    With ActiveWorkbook.Worksheets("DumpTab").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1:A" & lngRows), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("B1:B" & lngRows), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("E1:E" & lngRows), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        '
        .SetRange Range("A1:AD" & lngRows)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Вот пример таблицы в EXCEL:

Sample Data

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я понял это, записав макрос:

'Filter Criteria based on Chosen Facility:
Sheets("DumpTab").Range("$A$1:$AX$8228").AutoFilter Field:=1, Criteria1:=Facility

'Sort based on housing unit:
Sheets("DumpTab").Range("$A$1:$AX$8228").AutoFilter Field:=2, Criteria1:=HousingUnit

Все, что вам нужно сделать, это сложить две строки вместе, и вы отсортируете по 2 критериям.

0 голосов
/ 16 ноября 2018

Необходимо указать свойство CustomOrder метода SortFields.Add.

Например, если вашими объектами были «Объект Jacks», «Queens Facility», «Kings Facility» и «Aces Facility», и объект был в столбце D, то вы можете использовать этот код для сортировки в таком порядке:

.SortFields.Add Key:=Range("D1:D" & lngRows), SortOn:=xlSortOnValues, Order:=xlAscending, _
    CustomOrder:="Jacks Facility,Queens Facility,Kings Facility,Aces Facility", _
    DataOption:=xlSortNormal

(функция Join позволит легко свернуть массив в текстовый список, если необходимо)

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