我很难分析代码中的问题。我需要按升序对ColumnE进行排序,但问题是排序中不应该包括的行也已排序。
黄色突出显示的颜色不应包含在排序过程中。我需要在第3行开始排序。
这是我的代码:
'sort by ascending order
wsRD.Columns("C:E").Sort key1:=wsRD.Range("E1"), _
order1:=xlAscending, Header:=xlYes
谁能告诉我我的代码有什么问题?感谢您的帮助。
谢谢。
答案 0 :(得分:2)
您的选择包含2个标题行。您可以合并这些标头,或在代码中按如下所示设置范围(根据需要更改9999):
'sort by ascending order
wsRD.Range("C2:E9999").Sort key1:=wsRD.Range("E2"), _
order1:=xlAscending, Header:=xlYes
答案 1 :(得分:1)
示例中的标题由两行组成。 Header:=xlYes
期望仅第一行是标题,因此第二行被视为要排序的值的一部分。
要解决此问题,请使用Range("C1:E" & lastRow5).Sort key1:=Range("E2"), order1:=xlAscending, Header:=xlYes
,它将ActiveSheet
第五列的lastRow与lastRow(ActiveSheet.Name, 5)
一起使用。
整个解决方案:
Sub TestMe()
Dim lastRow5 As Long
lastRow5 = lastRow(ActiveSheet.Name, 5)
Range("C1:E" & lastRow5).Sort key1:=Range("E2"), order1:=xlAscending, Header:=xlYes
End Sub
Function lastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = Worksheets(wsName)
lastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function