在VBA公式中使用命名地址

在VBA公式中使用命名地址,vba,excel,Vba,Excel,我目前有以下指定地址: PLVlast = Sheets("Summary").Range("D" & Cells.Rows.Count).End(xlUp).Address 我想把一个单元格(N2)除以那个地址。AB2将会有结果 Range("AB2") = "=(RC[-14]/PLVlast)" 错误:AB2中的Excel公式显示以下内容 =(N2/PLVlast) 这里缺少什么?您想使用PLVlast变量的值,而不是变量名。如果要在R1C1公式中使用R1C1地址格式的值,还

我目前有以下指定地址:

PLVlast = Sheets("Summary").Range("D" & Cells.Rows.Count).End(xlUp).Address
我想把一个单元格(N2)除以那个地址。AB2将会有结果

Range("AB2") = "=(RC[-14]/PLVlast)"
错误:AB2中的Excel公式显示以下内容

=(N2/PLVlast)

这里缺少什么?

您想使用
PLVlast
变量的值,而不是变量名。如果要在R1C1公式中使用R1C1地址格式的值,还需要将
PLVlast
设置为R1C1地址格式:

PLVlast = Sheets("Summary").Range("D" & Sheets("Summary").Rows.Count).End(xlUp).Address(ReferenceStyle:=xlR1C1)

Range("AB2").FormulaR1C1 = "=(RC[-14]/" & PLVlast & ")"

或者,如果要在整个过程中使用A1符号:

PLVlast = Sheets("Summary").Range("D" & Sheets("Summary").Rows.Count).End(xlUp).Address

Range("AB2").Formula = "=(N2/" & PLVlast & ")"

或者,如果要将此公式应用于AB列中的所有单元格,则可以应用到D列中最后一行之前的行(我假设这是某种总计行):


结果是否需要是动态的(例如,如果在ColD中添加了新数据)?@TimWilliams我可以看到您的一个公式即将发布!!:D@TimWilliams是,因为它将被复制到“x”行数,具体取决于源data@carterTim询问如果将新数据添加到列D中,现有单元格中的公式是否需要自动更新。因此,当您第一次在AB2中设置公式时,它可能是
=N2/$D$25
,但是如果您在$D$26中添加了一些内容,是否希望公式自动等效于
=N2/$D$26
。(Tim擅长创建公式,在不涉及VBA的情况下提取列中的最后一个值。)我曾经尝试过,但一直出现错误1004。刚刚再次尝试确认。@carter Response fixed-忘记将
PLVlast
设置为A1符号地址完美-谢谢!不使用R1C1会更容易吗?@carter-Answer编辑以显示A1表示法,以及如何将公式应用于多行。我确实需要将公式更改为
Range(“AB2”)。FormulaR1C1=“=(RC[-3]/”和“Summary!”&MLVlast&>”
。不过,你的解决方案让我达到了目的——再次感谢你
Dim lastRow As Long
lastRow = Sheets("Summary").Range("D" & Sheets("Summary").Rows.Count).End(xlUp).Row

Range("AB2").Resize(lastRow - 2, 1).Formula = "=(N2/D$" & lastRow & ")"