【问题标题】:Numerically sorting multiple Excel columns individually分别对多个 Excel 列进行数字排序
【发布时间】:2018-11-04 21:09:00
【问题描述】:

我在列中有 52 个随机的 7 个数字集,我需要对这些数字进行数字排序,但是当突出显示所有数据并尝试从最小到最大对它们进行排序时,似乎只将排序应用于第一列 -

【问题讨论】:

  • 这是预期的行为。

标签: excel vba sorting


【解决方案1】:

Excel 将对您选择的最左侧字段(或“列”)进行排序,并相应地移动每一行的关联值。

我已经录制了一个宏,然后为您编辑了它,我相信它应该可以工作。只需选择所有值并运行宏:

Option Explicit

Sub SortColumnsIndividually()
    Dim Column As Range
    For Each Column In Selection.Columns
        ActiveSheet.Sort.SortFields.Clear
        ActiveSheet.Sort.SortFields.Add Key:=Column, _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveSheet.Sort
            .SetRange Column
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next Column
End Sub

excel为什么要这么做?

这是因为 excel 将每一行视为相关值的集合。 例如,考虑下表:

+-----------+-----------+--------+
| FirstName | LastName  | Salary |
+-----------+-----------+--------+
| Bob       | Smith     |  45000 |
| Jane      | Doe       |  55000 |
| Susan     | Black     |  48000 |
| Frank     | Daniels   |  51000 |
+-----------+-----------+--------+

假设您想按薪水从小到大排序。您会期望当 excel 移动薪水值时,它也会移动关联的名字和姓氏,而不是单独对薪水字段进行排序。

因此,按 Salary 升序对该表进行排序,您会期望得到这样的结果:

+-----------+-----------+--------+
| FirstName | LastName  | Salary |
+-----------+-----------+--------+
| Bob       | Smith     |  45000 |
| Susan     | Black     |  48000 |
| Frank     | Daniels   |  51000 |
| Jane      | Doe       |  55000 |
+-----------+-----------+--------+

不是这个(看看现在的名字是如何映射到不同的薪水的?):

+-----------+-----------+--------+
| FirstName | LastName  | Salary |
+-----------+-----------+--------+
| Bob       | Smith     |  45000 |
| Jane      | Doe       |  48000 |
| Susan     | Black     |  51000 |
| Frank     | Daniels   |  55000 |
+-----------+-----------+--------+

由于上述案例代表了 Excel 用户执行的绝大多数排序任务,因此这是 Excel 的预期行为。

【讨论】:

  • 非常感谢,解决方案完美运行,解释也很合理——抱歉这个菜鸟问题
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多