4

我正在尝试从 A 到 Z 对大量列表进行排序。但是如果我对 A 列进行排序,我不希望所有其他列都重新排列。我需要所有这些列表单独按字母顺序排序。我知道可以一一进行,但我有 278 列。有没有办法让它自动化?

4

2 回答 2

4

如果任何列的数据中都没有空白单元格,那么以下是一种稍微不同的方法,它不假设行数的最大值。

Sub SortIndividualJR()
    Dim rngFirstRow As Range
    Dim rng As Range
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    Set rngFirstRow = ws.Range("A1:JR1")
    For Each rng In rngFirstRow
        With ws.Sort
            .SortFields.Clear
            .SortFields.Add Key:=rng, Order:=xlAscending
            'assuming there are no blank cells..
            .SetRange ws.Range(rng, rng.End(xlDown))
            .Header = xlYes
            .MatchCase = False
            .Apply
        End With
    Next rng
    Application.ScreenUpdating = True
End Sub

user1281385的代码没有问题;正如我所说,这只是一种选择。

补充如果有一些空白然后修改上面的代码使用.SetRange ws.Range(rng, rng.Range("A1000").End(xlUp)),将 1000 更改为您期望的任何值将大于最大数据行数。

于 2013-06-21T18:52:22.127 回答
2

选择要排序的列,然后按“排序和过滤”,会出现一个框

Expand selection
continue with current selection

选择继续当前选择

然后选择你想要的排序方式。对要排序的每一列重复此操作。

展开选择是默认选项

将 oneRange 调暗为 Range
将 aCell 调暗为范围
对于 I = 1 到 278
    设置 oneRange = Range("r1c" & I & ":r1000c" & I)
    设置 aCell = Range("r1c" & I)
    oneRange.Sort Key1:=aCell, Order1:=xlAscending, Header:=xlYes
接下来我

应该管用

于 2013-06-21T17:49:49.707 回答