我使用下面记录的宏来按升序排序列L,但是必须使用12行代码对某些内容进行排序似乎有点荒谬。是否有更多"高效"这样做的方法?
我需要它根据L列对整张纸进行排序。
Sheets("Sheet1").Range("A1").End(xlToRight).AutoFilter
Sheets("Sheet1").AutoFilter.Sort.SortFields.Clear
Sheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _
("L1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With Sheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
答案 0 :(得分:2)
以下行将按升序对L列进行排序。
Sheets("Sheet1").Sort Key1:=Range("L1"), Order1:=xlAscending
这将对整个表单进行排序,对只是数据进行排序,我会声明几个变量,如下所示:
Dim lastRow As Long, lastColumn As Long, StartCell AS Range, s As Worksheet
Set s = Sheets("Sheet1")
Set StartCell = Range("A1")
lastRow = s.Cells(s.Rows.Count, StartCell.Column).End(xlUp).Row
lastColumn = s.Cells(StartCell.Row, s.Columns.Count).End(xlToLeft).Column
s.Range(StartCell, s.Cells(lastRow, lastColumn)).Sort _
Key1:=Range("L1"), Order1:=xlAscending
编辑以反映包含整个表
答案 1 :(得分:1)
如果您的数据在第1行开始并且将保留在第1行,则可以使用此选项:
Columns.Sort key1:=Range("L1"), order1:=xlAscending
这将根据列L1中的值对所有列进行排序。