当数据跳过空白而不包括空白后的数据时查找最后一行

时间:2016-03-03 13:58:07

标签: excel vba excel-vba

我有一个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

2 个答案:

答案 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