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