2014-12-04 63 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)),"""")"