VBA Excel – 扩展公式(复杂)

场景:

我有一个始于Range("V4")的一致公式。

这个范围有一个定义的名字Stock4 (这样如果用户添加或删除周围的列,公式/单元格可以被相对引用)。

电子表格不断更新,新的数据(粘贴Range("A4:U4") )。

粘贴的行数随每批数据而变化。

我需要将Stock4中的公式延伸到最后一行

我在做什么:

所以,我正在使用…的组合

 Dim Lastrow As Integer Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 

 .AutoFill Destination:=Range(*insert range here*), Type:=xlFillDefault 

和我的单元格的定义名称Stock4

这是我得到的:

 Range("Stock4").AutoFill Destination:=Range("Stock4:$V" & Lastrow), Type:=xlFillDefault 

这工作得很好,但是…

 $V 

…不是相对的。

我的尝试解决scheme:

我曾尝试使用Split(ActiveCell.Address(1, 0), "$")(0) & Lastrow

这将返回ActiveCell 列字母VLastrow 行数4831

然而…

我不能简单地用这个代码replace我现有的代码来代替$V" & Lastrow见下文

 Range("Stock4").AutoFill Destination:=Range("Stock4:Split(ActiveCell.Address(1, 0), "$")(0) & Lastrow"), Type:=xlFillDefault 

不考虑语法错误,这根本行不通

题:

如何使用VBA codeStock4中的公式扩展到Stock4的列的最后一行(相对引用)。

(这个code然后将被调整并重复用于多个电子表格中的多个相关列)

总结一下:

使用已定义的名称范围和相对列将公式向下拉伸。 (我已经花了2个工作日的最好的一部分,这个问题变得灰暗 – 这是可能的吗? 这一定是可能的!

你可以把它传递给一个variables并使用这个表示法:

 Sub MrJ() Dim rng As Range Dim lastrow As Integer lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("Stock4") rng.AutoFill Destination:=Range(rng.Address, Cells(lastrow, rng.Column)) End Sub