混合R1C1和A1表示法

时间:2016-04-13 14:14:36

标签: excel vba excel-vba

通过将正常的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

1 个答案:

答案 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时:

  1. []将表示相对非绝对引用。例如,RC[-1]指向左侧的单元格。

  2. 如果需要绝对引用,则不要使用[],它将引用行/列号。例如,R[1]C3将直接返回被引用的行但在C列中的行。如果引用的单元格为A3,则它将返回$C4

  3. 如果需要完整列或完整行,请丢弃RC。例如,C1:C3将返回$A:$CR[1]:R[2]将返回引用单元格正下方的两个完整行的相对引用