单独对多个Excel列进行数字排序

时间:2018-05-25 12:50:45

标签: excel vba sorting

我在列中有52个随机组的7个数字,我需要用数字排序,但是当突出显示所有数据并尝试将它们从最小到最大排序时,它似乎只将排序应用到第一列 - < / p>

Screenshot for Reference

1 个答案:

答案 0 :(得分:3)

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

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

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

为什么excel会这样做?

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

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

假设您希望按从最小到最大的工资排序。您可以预期,当excel移动工资值时,它还会移动关联的First和Last名称,而不是单独对工资字段进行排序。

因此,按照Salary按升序对此表进行排序,您会得到以下结果:

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

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

'apps.py'

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