如何确定VBA中使用的最后一行,包括两者之间的空格
我如何确定Excel工作表中的最后一行,包括中间的一些空行?
有了这个function:
Function ultimaFilaBlanco(col As String) As Long Dim lastRow As Long With ActiveSheet lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row End With ultimaFilaBlanco = lastRow End Function
而这个数据:
Row 1 : Value Row 2 : Value Row 3 : Value Row 4 : Value Row 5 : Value Row 6 : White Row 7 : Value Row 8 : Value Row 9 : Value Row 10 : White Row 11 : White Row 12 : White Row 13 : Value Row 14 : White
函数返回5,我需要13.任何想法如何做到这一点?
你真的很亲密 尝试使用End(xlUp)
Function ultimaFilaBlanco(col As String) As Long Dim lastRow As Long With ActiveSheet lastRow = ActiveSheet.Cells(1048576, col).End(xlUp).row End With ultimaFilaBlanco = lastRow End Function
获取最后一行的最佳方法是:
ActiveSheet.UsedRange.Rows.Count
为当前工作表 。
Worksheets("Sheet name").UsedRange.Rows.Count
用于特定工作表 。
要获取最后一列的编号:
ActiveSheet.UsedRange.Columns.Count
为当前工作表 。
Worksheets("Sheet name").UsedRange.Columns.Count
用于特定工作表 。
我希望这有帮助。
阿卜杜
我使用以下内容:
lastrow = ActiveSheet.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
它会find特定列中的最后一行。 如果你想为最后使用的任何列的行然后:
lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row -1
短。 安全。 快速。 即使在工作表顶部或其他任何位置有空行,也会返回最后一个非空行。 也适用于空白工作表(Excel报告1在空白工作表上使用行,因此expression式将为1)。 经过testing并在Excel 2002和Excel 2010上工作。
要小心, UsedRange.Rows.Count
返回曾经使用的行数。 如果您使用100行,然后clearcontents
UsedRange.Row.Count
仍然返回100。
问题是你的函数中的“as string”。 将其replace为“双倍”或“同样长”以使其工作。 如果最后一行比接受的答案中提出的“大数”更大,这种方法甚至可以工作。
所以这应该工作
Function ultimaFilaBlanco(col As double) As Long Dim lastRow As Long With ActiveSheet lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row End With ultimaFilaBlanco = lastRow End Function
LastRow = ActiveSheet.UsedRange.Rows.Count
除了所有提到的,还有其他几种方法来查找工作表或指定范围中的最后一行或一列。
Function FindingLastRow(col As String) As Long 'PURPOSE: Various ways to find the last row in a column or a range 'ASSUMPTION: col is passed as column header name in string data type ie "B", "AZ" etc. Dim wks As Worksheet Dim lstRow As Long Set wks = ThisWorkbook.Worksheets("Sheet1") 'Please change the sheet name 'Set wks = ActiveSheet 'or for your problem uncomment this line 'Method #1: By Finding Last used cell in the worksheet lstRow = wks.Range("A1").SpecialCells(xlCellTypeLastCell).Row 'Method #2: Using Table Range lstRow = wks.ListObjects("Table1").Range.Rows.Count 'Method #3 : Manual way of selecting last Row : Ctrl + Shift + End lstRow = wks.Cells(wks.Rows.Count, col).End(xlUp).Row 'Method #4: By using UsedRange wks.UsedRange 'Refresh UsedRange lstRow = wks.UsedRange.Rows(wks.UsedRange.Rows.Count).Row 'Method #5: Using Named Range lstRow = wks.Range("MyNamedRange").Rows.Count 'Method #6: Ctrl + Shift + Down (Range should be the first cell in data set) lstRow = wks.Range("A1").CurrentRegion.Rows.Count 'Method #7: Using Range.Find method lstRow = wks.Column(col).Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row FindingLastRow = lstRow End Function
注意 :请只使用上述方法之一,因为它certificate你的问题陈述。
请注意, Find方法不能看到单元格格式 ,只能看到数据,因此如果只有数据是重要的而不是格式化的话,请查找xlCellTypeLastCell。 此外, 合并单元格(必须避免)可能会给你意想不到的结果,因为它会给你第一个单元格的行号,而不是合并单元格中的最后一个单元格。
这里是我的代码,find第一行“A”中的下一个空行。 要使用它的任何其他行只是改变单元格(我,2或3或4等)
Sheets("Sheeet1").Select for i=1 to 5000 if cells(i,1)="" then nextEmpty=i goto 20 next i 20 'continue your code here enter code here
更好:
if cells(i,1)="" then nextEmpty=i: exit for