Vba 在公式中锁定相对引用

Vba 在公式中锁定相对引用,vba,excel,excel-formula,Vba,Excel,Excel Formula,我正在尝试创建一个搜索,当找到该搜索时,将向单元格中输入一个公式。 问题是试图创建一个公式,该公式将引用搜索到的行(OffSet?),并将其锁定在公式内(与在VBA之外使用F4或$相同) 第二个单元格需要锁定,因为我正在宏的另一部分使用自动填充 可以这样做吗?如果要锁定单元格以进一步使用自动填充,则必须使用A1引用样式 为了提醒您(在评论中说),您不能使用$在使用R1C1样式的公式中锁定某些内容 Sub Test_Excel_Noob() Dim SrchRng As Range Dim Cel

我正在尝试创建一个搜索,当找到该搜索时,将向单元格中输入一个公式。 问题是试图创建一个公式,该公式将引用搜索到的行(
OffSet
?),并将其锁定在公式内(与在VBA之外使用F4或
$
相同)

第二个单元格需要锁定,因为我正在宏的另一部分使用自动填充


可以这样做吗?

如果要锁定单元格以进一步使用自动填充,则必须使用A1引用样式

为了提醒您(在评论中说),您不能使用
$
在使用R1C1样式的公式中锁定某些内容

Sub Test_Excel_Noob()
Dim SrchRng As Range
Dim CelRg As Range

    Set SrchRng = ThisWorkbook.Sheets("Feuil1").Range("F6:F30")

    For Each CelRg In SrchRng.Cells
        'SL Events
        If CelRg.Value <> "SL" Then
        Else
            '''Equivalent of "=RC[-9]-$R$C[-9]" 
            '''which is incorrect as you can't use $ in R1C1 style
            CelRg.Offset(0, 7).Formula = _
                "=" & CelRg.Offset(0, -2).Address(0, 0) & _
                "-" & CelRg.Offset(0, -2).Address(1, 1)
        End If
    Next CelRg
End Sub
子测试\u Excel\u Noob()
变光SrchRng As范围
Dim CelRg As系列
设置SrchRng=thishworkbook.Sheets(“Feuil1”).Range(“F6:F30”)
对于SrchRng.Cells中的每个CelRg
“SL事件”
如果CelRg.值为“SL”,则
其他的
''相当于'=RC[-9]-$R$C[-9]'
''这是不正确的,因为您不能在R1C1样式中使用$
CelRg.Offset(0,7)。公式=_
“=”&CelRg.Offset(0,-2).地址(0,0)&_
“-”&CelRg.Offset(0,-2).地址(1,1)
如果结束
下一个塞尔格
端接头

公式
=RC[-9]-R6C4
使用
R1C1
参考样式

此样式对行和列都使用数字(即
R?C?
)。单元格引用相对于包含公式的单元格表示

绝对引用由行的
R
右侧的数字和列的
C
右侧的数字声明(
R6C4
等于
$D$6

相对引用由方括号内的数字声明,负数表示包含公式的单元格的行\列上方\左侧的单元格,而正数表示行\列下方\右侧的单元格(
C[-9]
表示包含公式的单元格左侧的九列). 另一种相对引用形式是当R或C出现时,旁边没有数字,这意味着它引用包含公式的单元格的同一行\列

从上面可以看出,为了确保在公式
=RC[-9]-R6C4
(即
=D6-$D$6
)中,第二个单元格始终引用找到的单元格的同一行
cel
,只需替换此行:

I = "=RC[-9]-R6C4"
I = "=RC[-9]-R" & cel.Row & "C4"
这一行:

I = "=RC[-9]-R6C4"
I = "=RC[-9]-R" & cel.Row & "C4"

因此,使行fix和to始终指向单元格的同一行
cel

使用
$
锁定仅适用于
A1
模式。在
R1C1
模式中,参考可以看起来像
R1C1
R[1]C1
R1C[1]
R[1]C[1]
[
&
]
表示相对引用,但如果它们不在那里,则表示绝对(或锁定)引用。应使用
.Formula
.formula1c1
属性将公式分配给单元格-对于公式使用
.Value
属性不是一个好主意(虽然它通常是有效的)。我知道将其设置为相对引用,如果没有它们,它将成为绝对引用。我只需要一个解决方案来锁定相对引用,以便以后在工作表中使用“自动填充”下拉公式时使用。@excelnoob-您不能锁定相对引用。您需要在分配公式之前计算绝对引用。性能ct答案!!我确信有很多其他方法可以解决同样的问题,但这很简单,也很容易应用到我之前的代码中。再次感谢。