在Excel中独立排序多个列

时间:2013-06-21 17:44:27

标签: excel sorting excel-vba excel-2013 vba

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

2 个答案:

答案 0 :(得分: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更改为您预期的任何内容将大于最大数据行数。

答案 1 :(得分:2)

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

Expand selection
continue with current selection

选择继续当前选择

然后选择您希望如何排序。对要排序的每列重复此操作。

展开选择是默认选项

Dim oneRange as Range 
Dim aCell as Range 
For I = 1 to 278
    Set oneRange = Range("r1c" & I & ":r1000c" & I) 
    Set aCell = Range("r1c" & I)
    oneRange.Sort Key1:=aCell, Order1:=xlAscending, Header:=xlYes
Next I

应该工作