我正在使用以下代码查找Sheet1&中的最后一行Sheet 2中
Dim 1LastRow As Long
Dim 2LastRow As Long
1LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
2LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
这可以按照最初的预期运行,但我希望“1LastRow”能够调整以动态选取最后一行。
例如,如果Sheet1最初有50行,但在:
之后Sheets("Sheet2").Range("B2:B" & 2LastRow).Copy
Sheets("Sheet1").Range("D2").PasteSpecial xlPasteValues
Sheet1现在有55行。但是,“1LastRow”仍然假设Sheet1只有50行,因此当使用“1LastRow”时,在整个代码中会产生不一致。非常感谢任何输入!
答案 0 :(得分:2)
嗯,变量不会神奇地更新自己。您会看到有代码粘贴行。当你做一些改变最后一行的事情时,只需重复设置最后一行变量的代码。
Dim 1LastRow As Long
Dim 2LastRow As Long
1LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
2LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Sheet2").Range("B2:B" & 2LastRow).Copy
Sheets("Sheet1").Range("D2").PasteSpecial xlPasteValues
1LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
或者您可以使用带有
行公式的动态范围名称=INDEX(Sheet1!$A:$A,COUNTA(Sheet1!$A:$A))
然后参考那个范围,如
ThisWorkbook.Worksheets("Sheet1").Range("OneLastRow").Row
但如果列包含空白单元格,则会失败。
答案 1 :(得分:1)
首先,您的代码不能在Office VBA环境中编译:变量名称不能以数字开头。因此,我们称之为LastRow1
和LastRow2
,而不是
第二,即使有一些自动更新变量的方法,你的代码也会失败,因为你从Sheet2
复制1列范围并从{{1}的单元格D2开始粘贴它},这对A列最后一行索引设置
所有这一切,你可以使用Sheet1
返回想要的行索引。
例如这个函数:
Function()
将返回Function LastRow1() As Long
With Sheets("Sheet1")
LastRow1 = .Cells(.Rows.Count, 4).End(xlUp).Row
End With
End Function
列D最后不是空行索引(好吧,如果列A完全为空,它实际上会失败,但它很容易修复)
只需更改Sheet1
这样你的"主要"代码看起来像:
.Cells(.Rows.Count, 4)