2014-12-04 37 views
1

我使用的公式,这将使用索引和匹配,并且输出计算的值被来自其他小区B2 value.I减去需要保持在所有细胞B2共同减法部件Excel VBA中建议

我使用以下公式单元格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 

如果我手动编辑公式在e这是工作正常(改变,C2,D2,E3,F2B2)。但是我在100s的单元格中使用这个公式,手动编辑所有这些几乎不可能。无论如何,我可以改变VBA以保持B2在细胞范围内保持恒定以运行此公式?

+3

你为什么不使用'= IFERROR($ B $ 2 -...' – 2014-12-04 14:43:13

回答

4

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

我不知道如何或如果这将转换为VBA,但我想这可能指向你在正确的方向。

0

我认为你的问题已经回答了,但我有话要添加到您的理解......

如果你想进入使用R1C1引用的公式时,复制半静态$ B2参考风格,你应该改变

=IFERROR(RC[-1]... 

=IFERROR(RC2... 

的RC [-1]在第一示例将一个动态参考同一行1列日e向左,而RC2将半静态引用放置在同一行,并始终放置在第二列。

什么让我困惑的是,这整条生产线具有R1C1引用和参考标准的混合:

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