寻找最后一行

时间:2019-05-14 13:24:52

标签: excel vba

我正在编写一个宏来更新表单中的关键单元,然后将数据写到第二张表中的表中。为此,我使用For i = 1到LR进行匹配,然后在找到匹配项的情况下将行号写入变量。

但是找到最后一行的代码,因此循环的长度无法按预期工作。

Dim LR as Long

LR = Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row 

Debug.Print LR

我尝试预先填充少于25个和大于25个(例如38个),但是LR变量在即时窗口中始终显示25。在即时窗口中,

?Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row 

应该返回38。

LR = Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row 

?LR

还返回38

我就是不明白...

2 个答案:

答案 0 :(得分:2)

尝试一下:

Dim LR As Long

With Application.Workbooks("Tracking Sheet.xlsx").Worksheets("Sheet1")

LR = .Range("A" & .Rows.Count).End(xlUp).Row
End With

答案 1 :(得分:0)

也许解释的代码会有所帮助?

LRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, "A").End(xlUp).Row

让我们分解一下这段代码。首先,我们将其放在With语句中,以节省一些输入

With ThisWorkbook.Sheets(1)
    LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

让我们分解成碎片。首先,有.Cells(.Rows.Count, "A")
这是对单个单元格的引用。具体来说,ThisWorkbook.Sheets(1)的A列中的最后一行。 Rows.Count给出Excel工作表中的最后一行。最新的Excel版本支持1,048,576行,例如Excel 97仅支持65536行。
简而言之,.Cells(.Rows.Count, "A")适用于等于(A1048576)的最新excel版本

然后End(xlUp)。此操作与按住CTRL并按键盘上的向上箭头按钮相同。这样会将Excel带到底部的第一行。

最后.Row,它返回找到的该单元格的行号。


您也可以从顶部开始寻找。尝试按住CTRL,然后按向下箭头按钮。这将在最后一个非空单元格处停止。但是,当填充的单元格之间有空白单元格时,它也会停止。因此,并非总是首选方法。代码是

With ThisWorkbook.Sheets(1)
    LRow = .Cells(1, "A").End(xlDown).Row
End With