excel - 根据列 "L"按升序对范围进行排序

标签 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"), 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

经过编辑以反射(reflect)包含整个工作表

关于excel - 根据列 "L"按升序对范围进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165273/

相关文章:

vsto - Excel 工作簿激活 C# VSTO 的事件歧义

algorithm - 归并排序的大O复杂度

vba - 如何在 Excel VBA 中将值从一个子传递到另一个子

ms-access - 使用 ADOX 在 Access 中添加列时如何设置所需的属性?

excel - 在 Access 和 Excel 之间复制/粘贴

excel - 将 csv 保存为 Excel 格式时丢失精度

java - 从 Spring 返回 Excel 可下载文件

excel - 功能区 - 如何为每个组合框项目设置 ID?

java - 按 bean 类中的 opendate 属性对 List<CrExcessMaster> 进行排序

c++ - 对 std::pair 的 vector 进行排序