我正在使用一个公式,它将使用索引和匹配来计算一个值,并且输出是从另一个单元格 B2 值中减去。我需要保留 B2
作为所有单元格中的常见减法组件
我在单元格 C2
中使用以下公式
=IFERROR(B2-(INDEX(raw!$A:$D,MATCH(1,(raw!$A:$A=data!$A2)*(raw!$C:$C=data!C$1),0),4)),"")
但是如果我把这个公式拖到下一个单元格,
D2
公式正在更改为=IFERROR(C2-(INDEX(raw!$A:$D,MATCH(1,(raw!$A:$A=data!$A2)*(raw!$C:$C=data!D$1),0),4)),"")
C2
正在替换 B2
我要保留
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 在整个单元格范围内保持不变以运行此公式?
最佳答案
我认为您正在寻找 Excel 公式功能中的 anchor 单元格。这可以通过在公式中添加“$”美元符号来完成。因此,将“B2”更改为“$B$2”,当您复制公式时,这应该使 B2 保持锚定。
我不确定这将如何或是否会很好地转换为 VBA,但我认为这可能会为您指明正确的方向。
关于vba - Excel VBA 推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27296783/