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答案!!我确信有很多其他方法可以解决同样的问题,但这很简单,也很容易应用到我之前的代码中。再次感谢。