在公式中锁定相对引用

时间:2017-03-08 03:38:51

标签: excel vba excel-vba excel-formula

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

Set SrchRng = Range("F6:F30")

For Each cel In SrchRng

    'SL Events
       If cel.Value = "SL" Then


       I = "=RC[-9]-R6C4"
       ''''I want it to be along these lines
       ''''I = "=RC[-9]-$R$C[-9]"                      or
       ''''I = "=RC[-9]-($Cel.Offset(, -9).Value)"


              cel.Offset(0, 7).Value = I

        End If

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

可以这样做吗?

2 个答案:

答案 0 :(得分:1)

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

此样式使用行和列的数字(即R?C?)。细胞参考表示与含有该公式的细胞有关。

绝对引用 由行R右侧的数字和列C的{​​{1}}声明等于R6C4)。

相对引用 由方括号内的数字声明,负数表示\ left表示包含公式的单元格的行\列左侧的单元格,而a正数确定行\列右下方的单元格($D$6表示具有公式的单元格左侧的九列)。另一种形式的相对引用是当R或C在旁边没有数字时出现,这意味着它指的是包含公式的单元格的同一行\列。

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

cel

这一行:

I = "=RC[-9]-R6C4"

因此,使行修复并始终引用单元格的同一行I = "=RC[-9]-R" & cel.Row & "C4"

答案 1 :(得分:0)

由于您想要锁定单元格以进一步使用自动填充,您必须使用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