2017-03-08 60 views
1

我試圖創建一個搜索,當找到後將公式輸入到單元格中。 問題是試圖創建將引用該搜索找到的行式(OffSetα)和其鎖定式內(同使用F4$外VBA的)鎖定公式中的相對引用

Set SrchRng = Range("F6:F30") 

For Each cel In SrchRng 

    'SL Events 
     If cel.Value = "SL" Then 


     I = "=RC[-9]-R6C4" 
     ''''I want it to be along these lines 
     ''''I = "=RC[-9]-$R$C[-9]"      or 
     ''''I = "=RC[-9]-($Cel.Offset(, -9).Value)" 


       cel.Offset(0, 7).Value = I 

     End If 

的第二個單元需要被鎖定,因爲我在宏的不同部分使用自動填充。

可以這樣做嗎?

+3

的使用用於鎖定的'$'僅適用於'A1'模式。在R1C1模式下,引用可以看起來像R1C1,R [1] C1,R1C [1]或R [1] C [1]。 '['&']'表示相對引用,但如果它們不在那裏,那麼它是絕對引用(或鎖定引用)。 – Enigmativity

+0

公式應該使用'.Formula'或'.FormulaR1C1'屬性賦值給單元格 - 對公式使用'.Value'屬性不是一個好主意(雖然它通常起作用)。 – YowE3K

+0

我明白'[]'使它相對引用,沒有它們就成爲絕對引用。 我只需要一個解決方案來鎖定相對參考,以便以後使用自動填充在工作表內拉下該公式。 –

回答

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" 

從而製作的行修復和爲始終是指相同的行中的單元格cel

+0

完美答案!我敢肯定還有很多其他的方法可以解決同樣的問題,但是這很簡單,很容易應用到我之前的代碼中。再次感謝。 –

0

由於您想鎖定單元格以進一步使用自動填充功能,因此您必須使用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