通过VBA在Excel公式中声明最后一行引用

为了尝试使用我的一个基本程序,并进一步开发,我需要帮助引用Excel公式中的最后一行引用,并将公式向下拖到文档的最后一行。

详细说明我正在尝试引用我的vlookup公式中不断扩大的映射表中的最后一行。 我需要这个的原因是因为当我不再编写这个程序的时候,这个映射表会扩展,所以我需要每次运行程序以适应不断变化的大小时生成的vlookup公式。

另外我更紧迫的问题是采取这种查找公式,并能够拖到工作表的最后一行。 工作表将是静态的,最后一行的范围从70,000行到90,000行。 我试图避免在这种情况下循环,因为这已经是一个非常苛刻的公式,我讨厌循环通过每一行。

目前我的基本代码看起来像这样(这是作为一个概念的certificate,我明白,目前的方法不是最巧妙的,但它服务于其最初的目的)。

Ath.Cells(1, x) = "Business" Ath.Cells(2, x).Select ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[1],Mapping!R2C4:R264C5,2,0),VLOOKUP(LEFT(RC[1],2),Mapping!R1C3:R264C5,3,0))" Ath.Range("d2").Copy Range("d2:d90000").Select ActiveSheet.Paste Calculate 

我就是想改变这个

 Ath.Range("d2").Copy Range("d2:d90000").Select ActiveSheet.Paste 

 ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[1],Mapping!R2C4:R264C5,2,0),VLOOKUP(LEFT(RC[1],2),Mapping!R1C3:R264C5,3,0))" 

也许这些?

 Ath.Range("d2").Copy Range("d2:d" & Range("D" & Rows.Count).End(xlUp).Row).Paste ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[1],Mapping!R2C4:R" & Sheets("Mapping").Range(ActiveCell.Offset(Rows.Count, -1)).End(xlUp).Row & "C5,2,0),VLOOKUP(LEFT(RC[1],2),Mapping!R1C3:R" & Sheets("Mapping").Range(ActiveCell.Offset(Rows.Count, -1)).End(xlUp).Row & "C5,3,0))" 

结合丹答案与我自己的工作,我已经开发出一个解决scheme。

 Sub Formulas() Dim Map As Worksheet Dim Ath As Worksheet Dim last As Long Set Ath = Sheets("Athena IBT TEST") Set Map = Sheets("Mapping") last = Map.Cells(Rows.Count, "D").End(xlUp).Row ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[1],Mapping!R1C1:R" & last & "C4,4,0),IFERROR(VLOOKUP(LEFT(RC[1],3),Mapping!R1C2:R" & last & "C4,3,0),VLOOKUP(LEFT(RC[1],3),Mapping!R1C3:R" & last & "C4,2,0)))" End Sub