簡體   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