Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据“列”对范围进行排序;L";按升序_Excel_Sorting_Vba - Fatal编程技术网

Excel 根据“列”对范围进行排序;L";按升序

Excel 根据“列”对范围进行排序;L";按升序,excel,sorting,vba,Excel,Sorting,Vba,我使用下面录制的宏按升序对列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")

我使用下面录制的宏按升序对列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

下一行将按升序对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行中,您可以使用以下方法:

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

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

这非常有效-我们是否可以修改它,使其只对整个工作表进行排序,而不是对L:BB进行排序?我刚刚意识到这就是我需要做的。有没有办法指定整个工作表和硬编码列a到我的最后一列可能是什么@TylerH@CC268当然可以。我已经更新了我的答案。不过,我看你也得到了SnWhte的帮助。使用最适合您的答案。请您评论一下为什么您觉得我的答案没有用,以便我可以改进它?这也很有效,尽管如上所述,我意识到我应该将整张表格排序到第L列,而不是只做L:BB@CC268请参见编辑。我包括了第二个选项,可以按L列对工作表中的所有数据进行排序。您是想在某个地方定义StartCell吗@SnWhte@CC268对非常感谢。更新了它以包含它,还更新了它,通过为工作表添加
s
变量使其更干净。当我到达代码的最后一行时,我会一直收到一个“Object variable or With block variable not set”(对象变量或块变量未设置)错误