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
列字母 : V和Lastrow
行数 : 4831 。
然而…
我不能简单地用这个代码replace我现有的代码来代替$V" & Lastrow
( 见下文 )
Range("Stock4").AutoFill Destination:=Range("Stock4:Split(ActiveCell.Address(1, 0), "$")(0) & Lastrow"), Type:=xlFillDefault
不考虑语法错误,这根本行不通 。
题:
如何使用VBA code
将Stock4中的公式扩展到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