将公式向下复制直到最后一行不使用dim

我有一个Excel VBAmacros,它做了很多的vlookups,我需要复制下列公式。 如果我loggingmacros,那么它只会复制到相同数量的行。 我每周运行这个文件,行数总是不一样的。 我编辑VBA代码复制列,但它只能工作一次,然后其他列将出现错误。 这是我的代码的一部分:

ActiveCell.FormulaR1C1 = _ "=IF(NOT(ISERROR(VLOOKUP(RC[-23],'[GEM Crossover.xlsx]GEM_Crossover'!C1:C2,2,FALSE))),VLOOKUP(RC[-23],'[GEM Crossover.xlsx]GEM_Crossover'!C1:C2,2,FALSE),IF(NOT(ISERROR(VLOOKUP(CONCATENATE(RC[-16],LEFT(RC[-14],1)),'[PRIVATE SWITCH.xlsx]Sheet1'!C1:C3,2,FALSE))),VLOOKUP(CONCATENATE(RC[-16],LEFT(RC[-14],1)),'[PRIVATE SWITCH.xlsx]Sheet1'!C1:C2,2,FALSE),IF(AND(LEFT(RC[-14],1)=""P"",RC[-12]=""I""),RC[-16],IF(AND(LEFT(RC[-14],1)=""P"",RC[-12]=""X""),RC[-16],RC[-14]))))" Range("X2").Select Selection.AutoFill Destination:=Range("X2:X" & Cells(Rows.Count, 2).End(xlUp).Row) Columns("X:X").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False 

上面的代码工作得很好,但是当我使用这个代码作为另一个列时,怎么办呢?

 Range("B2").Select ActiveCell.FormulaR1C1 = "=RC[-1]&RC[2]" Range("B2").Select Range("B2").AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row) Columns("B:B").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

我将自动填充目标设置为与第一个代码相同。 我只是将列从X更改为B,它不会工作。 我做错什么了吗?

在以下行中:

 Range("B2").AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row) 

你得到B列( 2 )的最后一行:

 Cells(Rows.Count, 2).End(xlUp).Row 

但这是你试图自动填充的列,所以它可能是空的(无论如何,在B2下面)。 尝试使用不同的列来确定最后一行。 A ,也许?

 Range("B2").AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row)