在Excel中独立对多列进行排序

4

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


投票关闭此问题,因为它不是一个真正的问题,应该发布在Superuser上,而不是Stack上。 - David Zemens
您可以选择每一列,在插入选项卡上选择表格,勾选标题即可完成。 - NikoTumi
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更改为您预计的数据行的最大数量。


看起来好像有一些空白,所以最后看起来像这样:http://i.imgur.com/FItNV7M.png 你知道我该如何清理它吗? - Batman
那就用user1281385的方法(一旦空格和换行符被纠正)。另外,我的方法可以稍作修改:将代码修改为.SetRange ws.Range(rng, rng.Range("A1000").End(xlUp))。将A1000改为你预计的最大行数要大于这个值。 - Andy G
我尝试运行上面的代码,并更改了空白处的内容,将A1000更改为A100。但是它并没有改变任何东西。空隙实际上变得更糟,并且应用于比以前更多的列。 - Batman
数字应该比可能的最大行数更多。你的行数少于100吗?否则,我无法重现您的问题,抱歉。 - Andy G
是的,我明白你的意思。不知道为什么会有这么大的空白间隙。你知道有没有办法清理掉它们吗? - Batman
显示剩余7条评论

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

应该可以工作。


有没有一种方法可以同时对多列执行此操作,因为我有278列。 - Batman
在 Next 之前的最后两行给了我一个错误。 - Batman
是的,在 & 符号周围加上空格是必要的,否则它们可能会被误解为长整型的类型声明字符。 - Andy G
我运行它时出现了运行时错误“1004”,对象_Global的Range方法失败。 - Batman
在工作表上?我通过点击左上角选择了整个工作表,但仍然出现错误。我也使用了Ctrl+A,结果一样。 - Batman
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接