如何一次性对数字列进行排序

如何一次性对数字列进行排序

输入输出

我有 350 列。以下是所有数据的子集。

Excel 电子表格中的样本数据按年份和月份分为行,并按地区分为列。

我使用了“从小到大排序”工具。它只给出一列的结果。如果没有,它可以对第一列进行排序,其他列将根据第一列进行更改。但我想对所有列按 AZ 进行单独排序。

我想按地区对数据进行排序。

答案1

1.选择要排序的列。然后点击“从小到大排序”。

数据 > 排序和筛选 > 从最小到最大排序

2.选择“继续当前选择”。

继续当前选择

您可以看到,只有一列进行了排序。
仅对一列进行排序

对其余 349 列重复此操作:)


为了一次性完成所有操作:

  1. 打开要排序的工作表。

  2. Alt使用+打开 VBA 编辑器F11

  3. 插入 > 模块

  4. 粘贴此代码:

子排序列单独排序_AZ()
  Dim rngStart 作为范围
  Dim rngHeaders 作为范围
  昏暗的 c 作为范围
  设置 rngStart = ActiveSheet.Range("A2")
  设置 rngHeaders = ActiveSheet.Range(rngStart, rngStart.End(xlToRight))

  对于 rngHeaders 中的每个 c
    ActiveSheet.Sort.SortFields.清除
    ActiveSheet.Sort.SortFields.添加键:=c,_
      排序方式:=xlSortOnValues,排序顺序:=xlAscending,数据选项:=xlSortNormal
    使用 ActiveSheet.Sort
      .设置范围 ActiveSheet.范围(c,c.结束(xlDown))
      .Header = xlYes
      .MatchCase = False
      .方向 = xlTopToBottom
      .SortMethod = xlPinYin
      。申请
    结尾
  下一个
子目录结束
  1. 在代码中,ActiveSheet.Range("A2")使用数据表开始的单元格地址进行更改,例如ActiveSheet.Range("B5")
  2. F5

结果:
排序前和排序后

注意:如果您的数据中有任何空单元格,则此代码将需要进行调整才能在具有空单元格的列上正常工作。

相关内容