拉斯特罗和excel表。

我试图定义一个lastrow代码,它将返回excel表中最后一个非空单元格的最后一行值。 (其格式为表格)

我的exceltable在COL A中的值从1到1005,COL B从1到414和COL C从414到1005。

我想要的是有一个lastrow代码返回414和一个返回1005.我得到的问题是,因为它是在一个表中。 我的代码

lastrow3 = ThisWorkbook.Worksheets("DataÖnskemål").Range("A" & Rows.Count).End(xlUp).Row lastrow2 = ThisWorkbook.Worksheets("DataÖnskemål").Range("B" & Rows.Count).End(xlUp).Row 

两者都返回1005.我可以用我的表来解决这个问题吗?或者它是某种forms的问题吗?

最好的问候和感谢提前/ D

如果表格上的excel表格下方有数据,则会有问题。 在查找Excel表格中的最后一行的同时引用表格列总是比较好的。

 Sub FindLastRowInExcelTableColAandB() Dim lastRow1 As Long, lastRow2 As Long Dim ws As Worksheet Set ws = Sheets("DataÖnskemål") 'Assuming the name of the table is "Table1" lastRow1 = ws.ListObjects("Table1").Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row lastRow2 = ws.ListObjects("Table1").Range.Columns(2).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row End Sub 

尝试下面的代码从表( ListObject )获取列A和列B中的最后一行:

 Option Explicit Sub LastRowTable() Dim Tbl As ListObject Dim LastRow2 As Long, LastRow3 As Long ' modify "Table1" to your table's Name Set Tbl = ThisWorkbook.Worksheets("DataÖnskemål").ListObjects("Table1") LastRow3 = Tbl.ListColumns(1).Range.Rows.Count '<-- last row in Column A in your Table LastRow2 = Tbl.ListColumns(2).Range(LastRow3, 1).End(xlUp).Row '<-- last row with data in Column B in your Table End Sub 

查找最后一行表格有点烦琐,特别是当你经常需要迎合用户过滤数据的情况时。 具有多个检查的循环可能更适合您,因为您可以根据自己的需要调整表格中的数据。

你也没有提到你是否可以确定最后一行确实是一个表。

鉴于这些观点,或许.Find函数将适合你,因为它会发现任何非空的单元格,不pipe是否在表格中,也不pipe是否隐藏(尽pipe它不适用于已过滤的表格)。 (说“任何非空单元格”是不正确的,例如,空string不会被拾取,但是这些exception也许不会让你感到困扰)。 无论如何,你的代码可以是:

 With Sheet1 lastRow1 = .Columns(1).Find(What:="*", _ After:=.Columns(1).Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row lastRow2 = .Columns(2).Find(What:="*", _ After:=.Columns(2).Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row End With 

尝试这个

  Dim DataRange As Range Set DataRange = Range("A1:M" & LastRow)