我可以找到很多关于实际进行转换的内容,但我有一个包含带有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
有没有人遇到类似的东西?我是否以某种方式在最后一个公式中使用了语法?
我一直盯着这看了一个半小时,我为我的生活无法理解发生了什么。
答案 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
)。