自动sorting到最后一列

对不起,我正在试图完成一个项目(似乎总是有一件事)

我打算自动sorting到最后一列F2开始我有以下,但不工作

谢谢

Sub Sort() Dim lastRow As Long Dim lastCol As Long Dim ws As Worksheet Set ws = Sheets("sheet1") lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row lastCol = Cells(2, ws.Columns.Count).End(xlToLeft).Column With Sheets("Sheet1") ws.Range(ws.Range("F2"), ws.Cells(lastRow, lastCol)).Sort _ Key1:=Range("lastCol"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With End Sub 

Key1的值必须是一个范围。 您正在尝试使用最后一列的号码,即使删除引号也不起作用。

Key1:=Range("lastCol")replaceKey1:=Range("lastCol") Key1:=Cells(2, lastCol)

请注意,您可以使用我以前的答案中包含的GetColumnLetter函数来获取lastCol列的字母。 如果您有该字母,则可以使用此语法而不是单元格版本: Key1:=Range(myCol & 2)

为了确保你知道你在sorting什么,你可以添加一些debugging代码。 您也可以使用立即窗口和观察窗口来解决这个问题。

用你的全部replace:

 Sub Sort() Dim lastRow As Long Dim lastCol As Long Dim ws As Worksheet Dim rng As Range Dim sortRng As Range Set ws = Sheets("sheet1") lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row lastCol = Cells(2, ws.Columns.Count).End(xlToLeft).Column Set rng = ws.Range(ws.Range("F2"), ws.Cells(lastRow, lastCol)) Set sortRng = ws.Cells(lastRow, lastCol) MsgBox "I will sort this range: " & rng.Address & _ " using this column: " & sortRng rng.Sort Key1:=sortRng, Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub