首页 > 解决方案 > 为什么我的数据排序宏没有按正确的顺序执行排序?

问题描述

我有一些非常简单的 VBA 代码

    With ActiveSheet.Sort
        .SortFields.Add Key:=Range("Stage"), Order:=xlAscending
        .SortFields.Add Key:=Range("Category"), Order:=xlAscending
        .Header = xlYes
        .Apply
    End With

我的理解是,例如,这个模拟表

    Stage    Category
   1-First   2-Finance
   4-Fourth  2-Finance
   2-Second  3-Operations
   1-First   1-Strategy

应该排序为

    Stage    Category
   1-First   1-Strategy
   1-First   2-Finance
   2-Second  3-Operations
   4-Fourth  2-Finance

然而,当我运行宏时我得到的是

    Stage    Category
   1-First   1-Strategy
   1-First   2-Finance
   4-Fourth  2-Finance
   2-Second  3-Operations

为什么类别优先?

标签: excelvbasorting

解决方案


这个对我有用,使用你的数据。添加.SetRange参数。

Sub test()
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    With ActiveSheet.Sort
        .SetRange Range("A1:B5")
        .SortFields.Add Key:=Range("Stage"), Order:=xlAscending
        .SortFields.Add Key:=Range("Category"), Order:=xlAscending
        .Header = xlYes
        .Apply
    End With
End Sub

推荐阅读