2016-04-13 111 views
0

通過在R1C1格式中應用正常的excel公式來掙扎,這樣我就可以在VBA中循環公式。問題是如何使用R1C1表示法引用其他表中的列。所以在下面的公式中:混合R1C1和A1符號

ell.Offset(0, 5).FormulaR1C1 = "=IF(LEN(R[]C[-2])>0,(R[]C[-2])*VLOOKUP([R[]C[1]),Core!A:C,3,FALSE)/_ 
VLOOKUP(R[]C[-1],Core!A:C,3,FALSE),R[]C[4])" 

如何獲得Core!A:C轉換爲R1C1格式?我知道你不能混用這兩種格式,但恐怕我不知道這個語法!任何幫助表示讚賞!

編輯:

Sub Expo_dos_Formulas() 

'=============================================================================== 
Sheets("Data_Sheet").Activate 

For Each cell In Range("G5:G500") 
    If cell <> "Error" Then 
     cell.Offset(0, 5).FormulaR1C1 = "=IF(LEN(R[]C[-2])>0,_ 
(R[]C[-2])*VLOOKUP([R[]C[1]),Core!RC1:RC3,3,FALSE)/VLOOKUP(R[]C[-1],_ 
Core!RC1:RC3,3,FALSE),R[]C[4])" 
    End If 
Next 
'=============================================================================== 

End Sub 

回答

3

代替的A:CC1:C3

ell.Offset(0, 5).FormulaR1C1 = "=IF(LEN(RC[-2])>0,(RC[-2])*VLOOKUP(RC[1],Core!C1:C3,3,FALSE)/_ 
VLOOKUP(RC[-1],Core!C1:C3,3,FALSE),RC[4])" 

當使用R1C1:

  1. []將表示相對非絕對基準。例如RC[-1]指的是直接向左的單元格。

  2. 如果需要絕對引用,則不要使用[],它將引用行號/列號。例如,R[1]C3將返回直接在被引用的行下方的行,但在列C中。如果引用的單元格是A3,那麼它將返回$C4

  3. 如果需要全列或全行,則丟棄RC。例如C1:C3將返回$A:$CR[1]:R[2]將直接返回引用單元格

+0

感謝斯科特下面的兩個全行的相對引用,我已經插上,在然後把公式中的一個基本單元循環,但我得到「應用程序定義或對象定義的錯誤」。你能幫助爲什麼?我剛剛添加了代碼到問題 – IIJHFII

+0

這是不同的,你原來的公式中有一個錯字,公式中有一個額外的')'。試試我剛發佈的那個。 –

+0

此外,我在評論中給出了不好的建議,因此在答案中轉發。 –