我正在尝试将大量列表按字母顺序从A到Z排序。但是如果我按列A进行排序,我不希望所有其他列被重新排列。我需要这些列表分别按字母顺序排序。我知道可以一个一个地做,但我有278个列。有没有自动化的方法可以做到这一点?
我正在尝试将大量列表按字母顺序从A到Z排序。但是如果我按列A进行排序,我不希望所有其他列被重新排列。我需要这些列表分别按字母顺序排序。我知道可以一个一个地做,但我有278个列。有没有自动化的方法可以做到这一点?
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更改为您预计的数据行的最大数量。
.SetRange ws.Range(rng, rng.Range("A1000").End(xlUp))
。将A1000改为你预计的最大行数要大于这个值。 - Andy GExpand 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
应该可以工作。