我有一个VBA代码,用于查找列中的最后一行数据并选择所有数据。我的数据中断了三分之一的位置,其中放置了一个空行。我希望能够在中断之前找到最后一行数据,而不包括中断后同一列中的数据。有没有办法做到这一点?
谢谢!
Sub Resort()
Dim ws As Worksheet
Set ws = Worksheets("Workbench Report")
lastrow = ws.Cells(ws.Rows.count, "E").End(xlUp).Row
ws.Select
ws.Range("B2:B" & lastrow).Select
ws.Columns("B:G").Sort key1:=ws.Range("E1"), order1:=xlAscending, Header:=xlYes, Orientation:=xlSortColumns
ws.Select
ws.Range("E2").Select
End Sub
答案 0 :(得分:2)
在单元格上使用.End
功能。这应该选择你想要的范围。
Range(Cells(2, "B"), Cells(Cells(2, "E").End(xlDown).row, "G")).Select
我假设您只想对中断上方的行进行排序,因此以下内容应该可以解决问题。
Sub Resort()
Dim ws As Worksheet
Set ws = Worksheets("Workbench Report")
ws.Range(Cells(2, "B"), Cells(Cells(2, "E").End(xlDown).row, "G")).Select
Selection.Sort key1:=ws.Range("E1"), order1:=xlAscending, Header:=xlYes, Orientation:=xlSortColumns
End Sub
当然,你也可以把它变成一个单一的
Sub Resort()
Dim ws As Worksheet
Set ws = Worksheets("Workbench Report")
ws.Range(Cells(2, "B"), Cells(Cells(2, "E").End(xlDown).row, "G")).Sort _
key1:=ws.Range("E1"), order1:=xlAscending, Header:=xlYes, Orientation:=xlSortColumns
End Sub
答案 1 :(得分:0)
lastrow = rngLastCell(range("b2").CurrentRegion).row
Function rngLastCell(rng As Range) As Range
'returns the last cell of a range
Set rngLastCell = rng.Cells(0, 0).Offset(rng.Rows.Count, rng.Columns.Count)
End Function
您也可以使用
StackPanel