如何在VBA列中找到最后一行?

时间:2018-04-20 04:54:50

标签: vba excel-vba excel

我正在尝试查找特定VBA Excel工作表中列中的最后一行编号。行号需要放入var中供以后使用。提前谢谢!

Dim i As Integer
Dim x As Integer
Dim lRow As Integer
Dim subj As String

subj = TextBox1.Text
lRow = ThisWorkbook.Sheets("Data").Range("A").Rows.Lastrow

ThisWorkbook.Sheets("Data").Cells(lRow, 1) = subj

For i = 1 To 1000

    If ThisWorkbook.Sheets("Data").Cells(1, i) = ThisWorkbook.Sheets(subj).Cells(1, 1) Then

    End If

Next i

2 个答案:

答案 0 :(得分:2)

如果没有数据缺口,那么

lRow = ThisWorkbook.Sheets("Data").Range("A1").end(xldown).row

否则,如果存在间隙并且您希望绝对最后

lRow = ThisWorkbook.Sheets("Data").Range("A1048576").end(xlup).row

答案 1 :(得分:1)

我会仔细研究已经给出的答案。

要查找最后一行/列,End对象的Range方法。即如果你有Cells(row, column),那么你可以附加.End(),它可以有四个参数:xlUp, xlDown, xlToLeft, xlToRight。此函数返回一个单元格(所以Range对象),因此要获得行/列编号,您需要访问Row / Column属性。总而言之,您应该使用:

Cells(row, column).End(X).Row
Cells(row, column).End(X).Column

其中rowcolumn是整数,X是上述参数之一。

要查找最后一行,您应该使用特定的列号(对于您想知道最后一行的列)。你有两个选择:

  1. xlDown - 您可以这样想:从给定的单元格开始,然后向下直到第一个空白单元格满足。返回最后一个非空单元格。

  2. xlUp - 从给定的单元格开始,然后一直向上,直到满足非空白单元格。

  3. 注意:如果以空单元格开头,End方法将返回第一个非空单元格。另一方面,如果从非空单元格开始,End方法将一直运行,直到满足第一个空单元格并返回最后一个非空单元格。

    这听起来很复杂,但让我举一些例子:

    让我们有一张表:

      A
    1 1
    2 2
    3
    4 4
    5 5
    

    然后

    MsgBox Cells(1, 1).End(xlDown).Row 'returns 2
    MsgBox Cells(5, 1).End(xlUp).Row 'returns 4
    'start with cell in last row
    MsgBox Cells(Rows.Count, 1).End(xlUp).Row 'returns 5