【发布时间】:2022-01-18 05:42:57
【问题描述】:
我有一个从顶部向下几行的数据数组。我有工作的 VBA 代码,它将数据与 Range 绑定并将其存储在变量中。然后调整大小以包含标题行,清除过滤器,然后根据所选范围将其添加回来。
那时我想每 3 行对数据进行排序
我使用 Cells.Find 查找我想要的列标题,然后将行和列排序为变量。我将 1 添加到 Column 变量并将其存储为下一个排序的变量...
我已经测试了每个排序命令,它们独立工作,但我无法让它们以组合顺序工作 Date:,然后是 Priority:然后是 Status:。
提前感谢您的帮助。
Cells.Find(What:="Due:", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Dim DueRowNumber As Long
Dim DueColumnNumber As Long
DueRowNumber = ActiveCell.Row
DueColumnNumber = ActiveCell.Column
Dim PriorityRowNumber As Long
Dim PriorityColumnNumber As Long
PriorityRowNumber = ActiveCell.Row
PriorityColumnNumber = ActiveCell.Column + 1
Dim StatusRowNumber As Long
Dim StatusColumnNumber As Long
StatusRowNumber = ActiveCell.Row
StatusColumnNumber = ActiveCell.Column + 2
ActiveWorkbook.Worksheets("Action Items").AutoFilter.Sort.SortFields.Add Key _
:=Cells(DueRowNumber, DueColumnNumber), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortTextAsNumbers
ActiveWorkbook.Worksheets("Action Items").AutoFilter.Sort.SortFields.Add Key _
:=Cells(PriorityRowNumber, PriorityColumnNumber), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="High,High-Med,Med,Med-Low,Low", _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Action Items").AutoFilter.Sort.SortFields.Add Key _
:=Cells(StatusRowNumber, StatusColumnNumber), SortOn:=xlSortOnValues, Order:=xlDescending, _
CustomOrder:="Late,In Work,Not Started,On Hold,Completed", _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Action Items").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
【问题讨论】:
标签: excel vba sorting autofilter custom-lists