Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 公式的单元格引用未从RC格式转换为A1格式_Excel_Vba - Fatal编程技术网

Excel 公式的单元格引用未从RC格式转换为A1格式

Excel 公式的单元格引用未从RC格式转换为A1格式,excel,vba,Excel,Vba,我可以找到很多关于实际执行转换的信息,但我有一个循环,它由一个if语句和20个潜在公式组成,以: ElseIf f = "weightVolume" Then Range(Cells(2, e), Cells(lastRow, e)).Formula = _ "=IFERROR(VLOOKUP(CONCATENATE(RC1,RC2,SUBSTITUTE(R1C,LEFT(R1C,SEARCH(""_"",R1C)),"""")),Transfor

我可以找到很多关于实际执行转换的信息,但我有一个循环,它由一个if语句和20个潜在公式组成,以:

    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")
但最后一个将作为:

=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
有人遇到过类似的情况吗?我是否以某种方式修改了最后一个公式中的语法


我已经盯着这个看了一个半小时了,我一辈子都不明白发生了什么。

当使用R1C1符号中的公式时,你应该使用
公式1C1
,而不是
公式

i、 e.使用:

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

当使用
公式
输入公式时,Excel有时会发现它是用R1C1符号而不是A1符号编写的,并将相应地进行转换。但有时,由于存在可以在任何一种表示法中正确处理的引用(例如您的
C1:C28
),它会对您使用的表示法进行“猜测”。

如果您在R1C1表示法中输入公式,请使用
FormulaR1C1
,而不是
Formula
。否则Excel必须猜测您在做什么,并且
C1:C28
可能会让它认为最后一个公式是A1符号。这可能取决于它在做出决定时所采用的方式。或者,这可能是基于是否有更多的东西看起来像R1C1-ish而不是A1-ish。如果你可以提交一个答案,这只是我的代码中添加了“R1C1”的一部分,我可以对其进行投票,将其标记为答案,并默默感谢你教我2之间的血腥区别。干杯