我正在尝试使用相对R1C1表示法编写一个在单元格中设置公式的函数,因为我不知道单元格将具有哪个行号。我已成功使用了cell.setFormulaR1C1(string)两次,但在第三种情况下我不确定什么不起作用。
当我将此字符串传递给应用于单元格H34的setFormulaR1C1()
时"=R[0]C[-4]*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I;MATCH(R[0]C[-6];CSE!A:A;0);1);\"[0-9]+\");\"0\"))" ;
应该吐出来
=D34*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I,MATCH(A34,CSE!A:A,0),1),"[0-9]+"),"0"))
...对吧?但相反,它没有将字符串转换为A1表示法,我收到一个解析错误。反斜杠
在其他地方,我使用非常相似的公式取得了成功...
paymentDueFormulaCell.setFormulaR1C1("=R[0]C[-3]-R[0]C[-2]-R[0]C[-1]");
,当设置到单元格J34时,正确呈现为
=G34-H34-I34
任何人都可以听到我可能遗失的差异吗?
答案 0 :(得分:1)
检查电子表格中是否存在CSE表,并且您的代码使用正确的参数分隔符。
我创建了一个简单的函数来测试OP提供的公式。它起初并没有起作用,但后来我意识到我的电子表格没有名为CSE的表格。添加之后,下面的代码工作正常。
function myFunction() {
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('H34');
var formula = '=R[0]C[-4]*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I,MATCH(R[0]C[-6],CSE!A:A,0),1),"[0-9]"),"0"))';
range.setFormulaR1C1(formula);
}
说明:
注意:在发布版本1之后,我发现代码公式使用分号作为公式参数分隔符,但稍后几行,当显示预期结果时,公式使用逗号而不是分号。 .setFormulaR1C1(formula)
要求将适当的公式作为参数传递,以便转换R1C1样式引用。
答案 1 :(得分:1)
我遇到过类似的情况。看来您无法将R1C1表示法与A1表示法结合使用。假设您要坚持使用R1C1,则应将INDEX参考从CSE!I:I更改为CSE!C9:C9
答案 2 :(得分:0)
您是否尝试过使用间接公式?它将任何字符串转换为单元格引用。
=间接("某些字符串"&"某些字符串")
例如:
=间接(" A"&" 1")将被解释为单元格A1