VBA Excel - 延长公式(复杂)

时间:2014-04-02 16:19:56

标签: excel vba relative-path

情境:

我有一个从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

......不是亲戚。

我尝试过的解决方案:

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

这会返回ActiveCell 列字母 V Lastrow 行号 4831 < /强>

...然而

我不能简单地将此代码替换为现有代码,而不是$V" & Lastrow见下方

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

除了语法错误,这根本不起作用

问题:

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

(此code将针对多个电子表格中的多个相对列进行调整和重复)

总结一下:

使用定义的名称范围和相对列将公式延伸到Lastrow。 (我已经花了2个工作日的最好时间用这个问题变灰了 - 这可能吗?一定是可能的!

1 个答案:

答案 0 :(得分:2)

您可以将其传递给变量并使用此表示法:

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