我在将公式应用于列直到最后一行时遇到问题。以下代码将应用于Excel的最大行数限制(1,048,576行)。
下面是我的代码:
master.Columns("E:E").Insert Shift:=xlToRight 'New column
lastRow = master.Range("E1").End(xlDown).Row
master.Range("E2:E" & lastRow).Formula = "=IFERROR(VLOOKUP(F2,Report!A:BS,71,0),""MISSING"")" 'Perform formula
With master.Range("E1")
.Value = "Column Name"
End With
但是,只有在使用如下代码插入新列时才会出现此问题:
master.Columns("E:E").Insert Shift:=xlToRight 'New column
当我不插入新列时,我使用下面的代码,这要快得多,而且只适用于最后一行。
Dim lastRow As Long
lastRow = master.Cells(Rows.Count, 1).End(xlUp).Row
With master.Range("J2:J" & lastRow)
.Formula = "=IFERROR(VLOOKUP(F2,Report!A:N,14,0),""MISSING"")"
End With
With master.Range("J1")
.Value = "Column Data"
End With
我怀疑这是因为我编写的代码在插入一个新的空白行后无法理解列中最后一行的位置。我该如何解决这个问题呢?当我需要插入一个新列时,我使用的代码非常慢。我在网上到处寻找,只能找到类似于我展示的第二块代码的示例。在插入新列后使用xlUp而不是xlDown只会将范围应用到第二行。我需要将它应用到最后一行(相对于它周围的列)。
2条答案
按热度按时间r3i60tvu1#
lastRow应始终基于填充的列,通常A列始终填充,因此您用途:
如果您希望它基于E列,请在插入新列之前进行,而不是之后;)
du7egjpx2#
正如您所发现的,您用来查找最后一行的技术只有在您选择的列中有数据时才有效。一个更好的方法可能是使用Find功能。下面是我用来获取LastRow的函数(但请注意,对于完全空的工作表,它返回第一行)