根据列“L”按升序对范围进行sorting

我使用下面的macroslogging按升序对列L进行sorting,但是使用12行代码来sorting某些内容似乎有些荒谬。 有没有更高效的方法来做到这一点?

我需要它根据列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 

以下行将按升序对L列进行sorting。

  Sheets("Sheet1").Sort Key1:=Range("L1"), Order1:=xlAscending 

这将sorting整个工作表,只sorting数据,我会声明像下面的几个variables:

 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行,则可以使用以下命令:

 Columns.Sort key1:=Range("L1"), order1:=xlAscending 

这将根据列L1中的值对所有列进行sorting。