不确定是否可以完成,但这是问题所在。我有一个包含多个工作表的工作表应用程序。表格1包含以下数据:
字符串描述符|值1 |值2
表2是有效公式。在此示例中,单元格D37引用了“ Sheet1”!A14
在工作表2的E栏,我想引用回“ Sheet1”!A16
如果我传递字符串值“ D37”,则可以找到该单元格,然后进行处理并返回正确的数据。但是,当我尝试获取该函数传递的单元格地址时,遇到“找不到范围”错误,我无法正常工作。
第2页参考是'= INDIRECT(myFunction(D37))
function myFunction(piNameCell) { //piNameCell has the reference to D37
var ss = SpreadsheetApp;
var sheet = ss.getActiveSheet().getRange(piNameCell); // Like this it crashes
//var sheet = ss.getActiveSheet().getRange("D37"); //This works
var sheetRef = sheet.getFormula();
//remove the leading '=' sign
sheetRef = sheetRef.substring(1);
//find the !
var bangIndex = sheetRef.indexOf("!");
//change the column to 'E'
sheetRef = sheetRef.substring(0,bangIndex+1) + "E" + sheetRef.substring(bangIndex+2)
return sheetRef;
}
答案 0 :(得分:0)
就像您在问题中所说的那样,您需要发送单元格的地址,而不是内容的地址,但是您不想将其作为字符串发送,因为您希望在移动公式时更改它。您有一些选择。
您只需使用ROW和COLUMN函数即可获取单元格坐标。
您必须稍微更改一下函数才能使用坐标。您的函数调用可能如下所示:
=INDIRECT(myFunction(ROW(D37), COLUMN(D37)));
然后在您的函数中更改参数和getRange
函数。
如果您确实要发送A1表示法,则可以使用ADDRESS进行。
=INDIRECT(myFunction(ADRESS(ROW(D37), COLUMN(D37))));