我试图创建一个搜索,当找到时会将公式输入到单元格中。
问题是尝试创建一个公式,该公式将引用搜索所在的行(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
需要锁定第二个单元格,因为我在宏的其他部分使用自动填充。
可以这样做吗?
答案 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