对于公式,单元格引用未从RC格式转换为A1格式

时间:2017-05-18 01:12:06

标签: excel-vba vba excel

我可以找到很多关于实际进行转换的内容,但我有一个包含带有20个潜在公式的if语句的循环,结束于:

    ElseIf f = "weightVolume" Then
        Range(Cells(2, e), Cells(lastRow, e)).Formula = _
            "=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2,SUBSTITUTE(R1C,LEFT(R1C,SEARCH(""_"",R1C)),"""")),Transform!C8:C26,19,FALSE),"""")"

    ElseIf f = "Location" Then
        Range(Cells(2, e), Cells(lastRow, e)).Formula = _
            "=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2),Transform!C1:C28,29,FALSE),""Unhandled Error"")"

     Else
         Range(Cells(2, e), Cells(lastRow, e)).Value = "Unhandled Error"

     End If

所有前面的19个公式都像魅力一样,进入表格:

=IFERROR(VLOOKUP(CONCATENATE($A2,$B2,SUBSTITUTE(KH$1,LEFT(KH$1,SEARCH("_",KH$1)),"")),Transform!$H:$Z,19,FALSE),"")

但是最后一个进入表单:

=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2),Transform!C1:C28,29,FALSE),"Unhandled Error")

我不能为我的生活找出为什么输入最终公式:

RC1,RC2

有没有人遇到类似的东西?我是否以某种方式在最后一个公式中使用了语法?

我一直盯着这看了一个半小时,我为我的生活无法理解发生了什么。

1 个答案:

答案 0 :(得分:0)

在R1C1表示法中使用公式时,应使用FormulaR1C1代替Formula

即。使用方法:

ElseIf f = "weightVolume" Then
    Range(Cells(2, e), Cells(lastRow, e)).FormulaR1C1 = _
        "=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2,SUBSTITUTE(R1C,LEFT(R1C,SEARCH(""_"",R1C)),"""")),Transform!C8:C26,19,FALSE),"""")"

ElseIf f = "Location" Then
    Range(Cells(2, e), Cells(lastRow, e)).FormulaR1C1 = _
        "=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2),Transform!C1:C28,29,FALSE),""Unhandled Error"")"

 Else
     Range(Cells(2, e), Cells(lastRow, e)).Value = "Unhandled Error"

 End If

使用Formula输入公式时,Excel有时会选择以R1C1表示法而非A1表示法编写,并相应地进行转换。但有时它会“猜测”你所使用的符号会被引用的存在所欺骗,这些引用可以用任何一种表示法正确处理(例如你的C1:C28)。