通过将正常的excel公式应用到R1C1格式来努力,这样我就可以在VBA中循环公式。问题是如何使用R1C1表示法引用其他工作表中的列。所以在下面的公式中:
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
答案 0 :(得分:4)
取代A:C
put C1: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时:
[]
将表示相对非绝对引用。例如,RC[-1]
指向左侧的单元格。
如果需要绝对引用,则不要使用[]
,它将引用行/列号。例如,R[1]C3
将直接返回被引用的行但在C列中的行。如果引用的单元格为A3
,则它将返回$C4
。
如果需要完整列或完整行,请丢弃R
或C
。例如,C1:C3
将返回$A:$C
,R[1]:R[2]
将返回引用单元格正下方的两个完整行的相对引用