Sorting 在excel中独立排序多个列

Sorting 在excel中独立排序多个列,sorting,excel,excel-2013,vba,Sorting,Excel,Excel 2013,Vba,我试图对大量列表从a到Z进行排序。但如果我对列a进行排序,我不希望所有其他列都被重新排列。我需要所有这些列表按字母顺序单独排序。我知道可以一个接一个地做,但我有278列。有什么方法可以实现自动化吗?选择要排序的列,然后按“排序和筛选”会出现一个框,上面写着 Expand selection continue with current selection 选择“继续当前选择” 然后选择您想要的排序方式。对每个要排序的列重复此操作 “展开选择”是默认选项 宏 Dim oneRange as范围 D

我试图对大量列表从a到Z进行排序。但如果我对列a进行排序,我不希望所有其他列都被重新排列。我需要所有这些列表按字母顺序单独排序。我知道可以一个接一个地做,但我有278列。有什么方法可以实现自动化吗?

选择要排序的列,然后按“排序和筛选”会出现一个框,上面写着

Expand selection
continue with current selection
选择“继续当前选择”

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

“展开选择”是默认选项

Dim oneRange as范围 Dim aCell as系列 对于I=1到278 设置oneRange=范围(“r1c”&I&“:r1000c”&I) 设置aCell=范围(“r1c”&I) oneRange.Sort Key1:=aCell,Order1:=xlAscending,Header:=xlYes 接下来我
如果任何列的数据中都没有空白单元格,那么以下是一种稍微不同的方法,它不假定行数的最大值

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更改为您期望的任何值都将大于最大数据行数。

投票结束,因为“这不是一个真正的问题”属于超级用户,不堆叠。您可以选择每一列,然后在“插入”选项卡上,选择“表格”,检查标题“完成”。有一种方法可以一次对多个列执行此操作,因为我有278列。您不能一次完成所有操作。您可以录制一个宏,对第一列执行此操作。然后修改宏,使用循环对所有其他列重复此过程。在下一行之前的最后两行,我给出一个错误。在中添加一些空格。我在打电话打字。&周围的空格应该是OK是的,&周围的空格是必需的,否则它们可能会被误解为类型声明字符(很长时间)。似乎有一些空格,所以它最终看起来是这样的:你知道我如何清理它吗?然后坚持使用user1281385的方法(一旦空格和换行符被更正)。或者,我的方法可以稍微更改:修改为
.SetRange ws.Range(rng,rng.Range(“A1000”).End(xlUp))
。将A1000更改为您期望的大于最大行数的任何值。我尝试运行上面的代码,对空格进行更改,并将A1000更改为A100。但这不会改变任何事情。实际上,间隙变得最严重,应用到比以前更多的列。该数目应大于可能的最大行数。您的行数是否少于100行?否则,对不起,我无法复制您的问题。最大的一行大约是86,但可能是因为空白?我会用更大的号码再试一次
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