我有任务列表,其中每个任务都被指定为一个优先的1-6在col,其中6是“完成”。每个任务都有一个任务请求日期。
下面的代码按优先级对列表进行排序,将已完成的任务放在底部。
Sub mcr_Sort_by_Status()
'
' Sort by stattus
'
'Turn off screen updating so macro working/flashing does not show
Application.ScreenUpdating = False
Range("A7:K5000").Select
ActiveWorkbook.Worksheets("Tasks").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tasks").Sort.SortFields.Add Key:=Range("A8:A5000"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tasks").Sort
.SetRange Range("A7:K5000")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B7").Select
End Sub但是对于其他任务,我想按日期与最新的顶部排序,但我想不出如何以编程的方式进行排序。
发布于 2018-09-21 10:36:03
将优先级排序为主键一次,然后在第二次排序操作中重新调整范围并将日期排序为主键。
我假设你的日期在B栏。
Sub mcr_Sort_by_Status()
With workSheets("Sheet1")
with .Range(.cells(7, "A"), .cells(.rows.count, "A").end(xlup).offset(0, 10))
.Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlyes
with .resize(application.match(6, .columns(1), 0)-1, .columns.count)
.Cells.Sort Key1:=.Columns(2), Order1:=xldescending, _
Orientation:=xlTopToBottom, Header:=xlyes
end with
end with
End With
end subhttps://stackoverflow.com/questions/52441400
复制相似问题