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

我有一个VBA代码,它可以查找列中最后一行数据并select所有数据。 我的数据有三分之一的地方放置了一个空行。 我希望能够在中断之前find最后一行数据,并且不包括中断之后同一列中的数据。 有没有办法做到这一点?

谢谢!

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 

使用单元格上的.End函数。 这应该select你想要的范围。

 Range(Cells(2, "B"), Cells(Cells(2, "E").End(xlDown).row, "G")).Select 

我假设你正在寻找只sorting中断上面的行,所以下面应该做的伎俩。

 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 

当然,你也可以把它作为一个class轮

 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 
 lastrow = lastRowOfRange(range("b2").currentregion) Function lastRowOfRange(rng As Range) Dim adr adr = Split(rng.Address, "$") lastRowOfRange = adr(UBound(adr)) End Function 

你也可以使用

 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