为了尝试我的一个基本程序,并进一步开发它,我需要帮助引用Excel公式中的最后一行引用,以及将公式一致地向下拖动到文档的最后一行。
详细说明我试图在我的vlookup公式中引用一个不断扩展的映射表中的最后一行。我需要这个的原因是因为当我不再编写这个程序时,这个映射表会扩展,我需要我的vlookup公式,每次运行程序时都会生成该公式,以适应不断变化的大小。
此外,我更紧迫的问题是关于采用vlookup公式并能够将其拖动到工作表的最后一行。工作表将是静态的,最后一行的范围是70,000行到90,000行。我试图在这种情况下避免循环,因为这已经是一个非常苛刻的公式,我不想循环遍历每一行。
目前我的基本代码看起来像这样(这是作为概念证明而构建的,我知道当前的方法并不是最巧妙的,但它起到了最初的作用)。
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))"
答案 0 :(得分: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))"
答案 1 :(得分:0)
将Dans回答与我自己的工作相结合,我已经开发出一种解决方案。
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