arrays - 使用 SheetName() 数组从多个工作表中检索单元格以动态链接到每个工作表
问题描述
我正在尝试创建一个动态的、自动更新的 Google 电子表格,它可能会也可能不会超出规范。
目标:
我正在跟踪 Google 表格中每月记录的辅导时间。每个月在 Google 工作表工作簿中都有自己的工作表。要创建一个新的月份,我只是复制上个月并删除内容。我有一个汇总表来跟踪每月记录的时间、付款等。我想尽可能多地自动化这个工作表。
采取的方法:
我使用以下代码获取了一个数组,当我下个月添加另一张表时该数组将自动更新。到目前为止,如 B 列所示:
function sheetnames() {
var out = new Array()
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )
return out
}
/* https://www.extendoffice.com/documents/excel/5222-google-sheets-get-list-of-sheets.html#a2*/
下一步是在每张纸上获取一个特定的单元格。我可以手动输入每个工作表名称,然后链接工作正常。例如“Aug2021”! 到目前为止 35 美元的仪表板页面
什么不起作用:
但我正在尝试自动化这个过程。这意味着上面的内容不会削减它。
这是我尝试过的。
=B10!$E$35
='B10’!$E$35
='(TO_TEXT(B10))’!$E$35
问:
我显然不是程序员,但上帝让我现在尝到了它的滋味。我有问题是因为我正在处理一个数组吗?如何从数组中调用工作表名称,使其表现得像工作表名称通常那样?我该如何补偿?我是否需要一段新代码,以便我可以按表格收集特定单元格或单元格范围中的信息?这段代码会使用“get”命令吗?
解决方案
利用:
=INDIRECT(B10!$E$35)
但请注意,这INDIRECT
不适用于数组
这是一个替代示例:
无论工作表是否存在或工作表是否在不久的将来创建,所有工作表的总和 E35
单元格 A1:
=ARRAYFORMULA("=SUM({"&TEXTJOIN("; ", 1,
"IFERROR("&UNIQUE(TEXT(ROW(INDIRECT(1*"31/08/2021"&":"&1*(TODAY()+90))),
"mmmyyyy\!E35"))&", """")")&"})")
脚本:
function onEdit() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Master Sheet');
var src = sheet.getRange("A1"); // The cell which holds the formula
var str = src.getValue();
var cell = sheet.getRange("C5"); // The cell where I want the results to be
cell.setFormula(str); // Setting the formula.
}
推荐阅读
- node.js - 使用 express 向客户端发送 cookie 不起作用
- linux - 如何使用 Bash 测试 hdfs 文件是否存在
- python - sess.run 在一个循环中
- gradle - 用 gradle 混淆生成的 fat jar
- r - 'train' 和 'class' 有不同的长度错误
- java - 如何为 org.apache.parquet.avro.AvroParquetReader 配置 S3 访问?
- javascript - 如何让我的页面知道页面加载时不存在的按钮
- qt - 如何使 TextArea 具有最大尺寸和滚动条?
- docker - 在运行 flyway 迁移时添加基线后收到消息 - Schema version : null and no migration needed
- scala - Scala - 如何从 RDD 中选择最后一个元素?