首页
学习
活动
专区
圈层
工具
发布

分拣宏
EN

Stack Overflow用户
提问于 2018-09-21 10:09:39
回答 1查看 54关注 0票数 1

我有任务列表,其中每个任务都被指定为一个优先的1-6在col,其中6是“完成”。每个任务都有一个任务请求日期。

下面的代码按优先级对列表进行排序,将已完成的任务放在底部。

代码语言:javascript
复制
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

但是对于其他任务,我想按日期与最新的顶部排序,但我想不出如何以编程的方式进行排序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 10:36:03

将优先级排序为主键一次,然后在第二次排序操作中重新调整范围并将日期排序为主键。

我假设你的日期在B栏。

代码语言:javascript
复制
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 sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52441400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档