我使用Google SpreadSheet插件制作Google Analytics报告。我的问题是,对于每个查询,此加载项会创建一个不同的工作表。我经常有大约50张不同的数据表,必须将数据编译成一张。例如:
我可能有3张名为:“有机数据”,“直接数据”和“其他数据”
每张工作表都有一组不同的数据,我想将其编译到名为“Report”的第4张表中的单个表中。该表的第一列数据来自“有机数据”表,第二列数据来自“直接数据”表,第三列数据来自“其他数据”表。
我这样做的方法是逐个引用单元格。因此,在“报告”表中,我将写入= Organic Data!B4,然后拖动以填充列的其他单元格,然后我将对其他工作表执行此操作以填充“报表”工作表的其他列。
问题是,正如我所说,我经常有超过50张不同的纸张,并且引用它们会变得相当困难。
我想动态地这样做。在单元格上有工作表的名称,并使用它来引用单元格。例如:
在“报告”表格中:
A1 =“有机数据”,B1 =“直接数据”,C1 =“其他数据”
在单元格“Report!A2”中我试过写= CONCAT(“=”,A1,“!”,“B4”)希望在这个单元格中获取单元格“Organic Data!B4”的值,但我得到字符串“=有机数据!B4,而不是”有机数据“表中的单元格值。
我已经制定了一个自定义公式来解决这个问题:
function referenceSheet(sheetName, cellInput) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ""
var cell = sheetName+'!'+cellInput;
var value = ss.getRange(cell).getValue();
return value;
}
效果很好。在上面的示例中,为了将单元格“Organic Data!B4”的值输入单元格“Report!A2”,我需要在“Report!A2”上写下以下内容:
"=referenceSheet(A1, cell("address",B4))"
它将返回单元格“Organic Data!B4”的值。
我确实遇到过这个定制公式的问题。主要是,自定义公式不刷新onChange,所以如果我更改“Organic Data!B4”的值,“Report!A2”将不会更改。
我想知道是否有与我的自定义公式类似的原生公式?
如果没有,当我从其他单元格更改日期时,最好的方法是使我的自定义公式刷新?
非常感谢!
答案 0 :(得分:1)
我在Google论坛上发布了相同的问题并得到了一个很好的答案。
有一个原生公式call = INDIRECT
我的例子就是这样:
=INDIRECT(CONCATENATE(A$1,"!",cell("address",$B4)),true)