繁体   English   中英

在不使用dim的情况下将公式向下复制到一列直到最后一行

[英]Copy formula down a column until the last row without using dim

我有一个执行大量vlookup的Excel VBA宏,我需要将公式复制到该列下。 如果我记录宏,那么它将仅复制到相同数量的行。 我每周都会运行此文件,并且行数将始终不同。 我编辑了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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM