当前位置: 首页 > 知识库问答 >
问题:

如何在Google电子表格上动态引用多个表格?

冯育
2023-03-14

我使用Google SpreadSheet附加组件制作Google Analytics(分析)报表。我的问题是,对于每个查询,这个附加组件都会创建不同的工作表。我经常有大约50张不同的表格,其中的数据必须编译成一张表格。例如:

我可能有三张表格,分别是:“有机数据”、“直接数据”和“其他数据”

每个工作表都有一组不同的数据,我想在第四个工作表“Report”中将它们编译成一个表。该表的第一列数据来自“有机数据”表,第二列数据来自“直接数据”表,第三列数据来自“其他数据”表。

我这样做的方法是一个接一个地引用单元格。所以在“报告”表中,我会写=有机数据!然后拖动B4以填充该列的其他单元格,然后我将对其他工作表执行此操作以填充“报告”工作表的其他列。

问题是,正如我所说,我经常有50多张不同的表格,引用它们可能会非常困难。

我想动态地做这件事。单元格上有工作表的名称,并用它来引用单元格。例如:

在“报告”表中:

A1="有机数据",B1="直接数据",C1="其他数据"

在单元格“Report!A2”中,我试着写=CONCAT(“=”,A1,“!”,“B4”)希望在这个单元格中得到单元格“Organic Data!B4”的值,但我得到的是字符串“=Organic Data!B4,而不是“Organic Data”表中单元格的值。

我制定了一个自定义公式来解决这个问题:

function referenceSheet(sheetName, cellInput) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cell = ""
  var cell = sheetName+'!'+cellInput;

  var value = ss.getRange(cell).getValue();

  return value;
}

它工作得很好。在我上面的例子中,获取单元格的值“有机数据!B4"进入细胞"报告!A2",我需要写上"报告!A2"以下:

"=referenceSheet(A1, cell("address",B4))" 

它将返回单元格的值“有机数据!B4"。

我确实对我所做的这个自定义公式有一些问题。主要是,自定义公式在更改时不会刷新,因此如果我更改“Organic Data!B4”的值,“Report!A2”将不会更改。

我想知道是否有一个本地配方,做一些类似于我的自定义公式?

如果没有,当我从其他单元格更改日期时,使自定义公式刷新的最佳方法是什么?

非常感谢你!

共有1个答案

闾丘卓
2023-03-14

我在谷歌论坛上发布了同样的问题,得到了一个很好的答案。

存在本机公式调用=间接

在我的示例中,它的工作原理如下:

=INDIRECT(CONCATENATE(A$1,"!",cell("address",$B4)),true)
 类似资料:
  • 我有一个谷歌电子表格,其中有3张表格,包含来自不同国家的数据(,,),还有第4张表格()。所有图纸中的列都相同。 我已经知道我可以这样组合它们: 然而,我需要一种方法将任意数量的纸张组合在一起,而不需要修改公式。所以,如果添加了Country4,也应该追加。我怎么能那样做? 如果有帮助,我有一个工作表,其中有一列包含所有国家的名称(因此也包括国家工作表名称)。我有一个脚本,如果在工作表中添加了一个

  • 我很难找到将多张工作表同步到主电子表格的方法。在我的测试中,我有一个大的电子表格,上面有5个城市的地址。我正在尝试为每个城市创建一个电子表格,并能够在任何一个表格中更改数据时同步数据。因此,我将管理总体数据,5张电子表格中的每一张都将分配给其他人。这样,他们就可以在不访问所有数据的情况下更新工作表。使用内置查询或导入功能的问题是,如果用户在“城市”电子表格上进行更改,它将破坏该表格,因为数据被引用

  • 我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?

  • 我正在尝试从多个google电子表格中删除一个特定的表格。 我有一个主电子表格,从所有其他电子表格收集数据。从主电子表格中,我可以在其他电子表格中执行不同类型的操作,如添加工作表、重命名工作表、隐藏和锁定工作表。 但无法删除其他电子表格中的表格。查看了其他线程,但找不到任何解决方法。 这就是我到目前为止得到的。它停在这一排: "fname.delete表(本周);}" 我很感谢大家对我的帮助,因为

  • 我是一名编码等方面的初学者,但我正在努力理解我在做什么以及代码中发生了什么。 我想在不同的电子表格之间划一行。 我在“核心”电子表格中有一个脚本,它在“主页”和“完成”表格链接之间移动一行到电子表格: 我搜索了如何将位于“已完成”工作表上的数据移动到另一个名为“数据库”的电子表格链接到电子表格: 但我想将数据从表“CORE”/“Finished”传输到表“database”/“DB”,而不重写DB

  • 我的脚本在提交一些表单后在电子表格上添加新的表单。此表用作排行榜。但要查看它,我必须单击新创建的选项卡。有什么办法可以从脚本中完成吗? 这张图片是创建新工作表后的屏幕截图(第1周第2课)。 P、 我发现我必须重新表述这个问题。问题是,我想从另一个电子表格(此电子表格有onSubmit触发器,并在其他打开的电子表格(排行榜)上创建和放置信息)中执行此操作。我检查setActiveSheet(工作表)