2016-07-19 3 views
2

В надежде, что этот новичок здесь может получить помощь при сортировке с использованием макроса, пожалуйста.Сортировка таблицы с использованием макроса

У меня есть таблица в диапазоне D: R для сортировки.

Во-первых, вся таблица должна быть отсортирован в порядке возрастания по столбцу Q.

Тогда же таблице упорядочиваются в порядке возрастания колонке P.

Наконец вся таблица должна принести желтые выделенные строки на столбец D вверху.

Моя текущая формула записана с использованием встроенного рекордера, и она не работает.

Может кто-нибудь предложить какие-либо предложения? Спасибо заранее!

'Sorting for easier read 
    'Check for filter, turn on if none exists 
    If Not ActiveSheet.AutoFilterMode Then 
     ActiveSheet.Range("D1:R1").AutoFilter 
    End If 
    'Sort in order of column Q 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Add Key:=Range(_ 
     "Q1:Q10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
     xlSortNormal 
    With ActiveWorkbook.Worksheets(4).AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
    End With 
    'Sort in order of column P 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Add Key:=Range(_ 
     "P1:P10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
     xlSortNormal 
    With ActiveWorkbook.Worksheets(4).AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
    End With 
    'Bring highlighted row to the top 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets(4).AutoFilter.Sort.SortFields.Add(Range("D:D" _ 
     ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _ 
     , 255, 0) 
    With ActiveWorkbook.Worksheets(4).AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
    End With 

ответ

0

Вот один, что я сделал, чтобы отсортировать столбец 52 по цвету yellow:

Sub SortOnDuplicates() 

ws.ListObjects("Table1").Range.AutoFilter _ 
    Field:=52, _ 
    Criteria1:=RGB(255, 255, 0), _ 
    Operator:=xlFilterCellColor 

End Sub 

Вот один для сортировки по возрастанию:

ws.ListObjects("Table1").Range.AutoFilter Field:=52 
With ws.ListObjects("Table1").Sort 
    'Last Name 
    .SortFields.Clear 
    .SortFields.Add _ 
     Key:=Range("Table1[[#All],[Last Name]]"), _ 
     SortOn:=xlSortOnValues, _ 
     Order:=xlAscending, _ 
     DataOption:=xlSortNormal 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
    'First Name 
    .SortFields.Clear 
    .SortFields.Add _ 
     Key:=Range("Table1[[#All],[First Name]]"), _ 
     SortOn:=xlSortOnValues, _ 
     Order:=xlAscending, _ 
     DataOption:=xlSortNormal 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

большое спасибо за Ваш ответ! Моя таблица может действительно варьироваться от 2 строк до 2000 строк, поэтому с индикатором Field: = 52, только что изменилось на 2000? Также с «Таблицей1» это общий, который просто автоматически подберет применимые данные? Наконец, мои данные сортировки ищут номера в целом, как бы я хотел заменить первый и последний раздел? Извините, что я такой noob. – kitarika

+0

Поле 52 - это столбец 52. Если все ваши значения находятся в истинной таблице, 2000 строк ничего для excel. –

Смежные вопросы