Excel VBA推荐

我正在使用一个公式,它将使用索引和匹配计算一个值,并且输出从另一个单元格B2值中减去 . 我需要将 B2 保留为所有单元格中的公共减法组件

我在单元格中使用以下公式 C2

=IFERROR(B2-(INDEX(raw!$A:$D,MATCH(1,(raw!$A:$A=data!$A2)*(raw!$C:$C=data!C$1),0),4)),"")

enter image description here

但如果我将此公式拖到下一个单元格, D2 公式正在变为

=IFERROR(C2-(INDEX(raw!$A:$D,MATCH(1,(raw!$A:$A=data!$A2)*(raw!$C:$C=data!D$1),0),4)),"")

C2 正在取代 B2

enter image description here

我想保持 B2 不变

下面是创建的VBA宏:

Sub Macro7()
'
' Macro7 Macro
'
    Selection.FormulaArray = _
        "=IFERROR(RC[-1]-(INDEX(raw!C1:C4,MATCH(1,(raw!C1=data!RC1)*(raw!C3=data!R1C),0),4)),"""")"
    Selection.AutoFill Destination:=ActiveCell.Range("A1:D1"), Type:= _
        xlFillDefault
    ActiveCell.Range("A1:D1").Select
End Sub

如果我在每个单元格中手动编辑公式,它工作正常(更改, C2,D2,E3,F2 等到 B2 ) . 但是我在100个单元格中使用这个公式并且手动编辑所有单元格实际上是不可能的 . 无论如何我可以更改VBA以使B2在整个单元格范围内保持恒定以运行此公式吗?

回答(2)

2 years ago

我认为您正在Excel中的公式功能中寻找锚单元格 . 这可以通过在公式中添加“$”美元符号来完成 . 因此,将“B2”更改为“$ B $ 2”,并且在复制公式时应保持B2固定 .

我不确定这将如何转换为VBA,但我认为这可能会指向正确的方向 .

2 years ago

我认为你的问题已经得到了解答,但我有一些东西可以补充你的理解......

如果要在使用R1C1参考样式输入公式时复制半静态$ B2参考,则应更改

=IFERROR(RC[-1]...

=IFERROR(RC2...

第一个示例中的RC [-1]将动态引用放置到同一行和左侧的1列,而RC2将半静态引用放置到同一行,始终放置第二列 .

令我困惑的是,整条 生产环境 线混合了R1C1参考和标准参考:

"=IFERROR(RC[-1]-(INDEX(raw!C1:C4,MATCH(1,(raw!C1=data!RC1)*(raw!C3=data!R1C),0),4)),"""")"