arrays - Google Sheets QUERY 从选项卡名称列表中提取,这将在添加新选项卡时提取新选项卡数据

标签 arrays if-statement google-sheets excel-formula google-query-language

我有一个 Google Apps 脚本,将 Google 表格中每个选项卡的名称拉入一个列表。这些选项卡按月份和年份标记(即 2020 年 2 月),但自 2 月以来我没有每个月的选项卡。当我有新数据时,我会创建一个新选项卡几个月,但并不总是每个连续的月份。

通过这些选项卡,我想查询所有选项卡中每个选项卡 D 列中的所有唯一值。我想知道是否可以在预期潜在的新选项卡时执行此操作,这样我就不必在添加新选项卡时都去更新查询?

目前,我有现有选项卡的列表,并连接到单元格 C2:C6 中的范围(因此每个选项卡/范围列为 2020 年 1 月!A:D)。我正确提取唯一值的查询是:

=UNIQUE(QUERY({INDIRECT(C2);INDIRECT(C3);INDIRECT(C4);INDIRECT(C5);INDIRECT(C6)},"Select Col4 where Col4 is not null",1))

是否有一种方法可以将新的月份/日期添加到现有选项卡列表中,以预期将来可能会添加该选项卡名称,并将这些尚不存在的选项卡名称添加到查询中,但告诉它如果在工作表中找不到该选项卡,是否忽略它?

提前谢谢您!

最佳答案

有几种方法可以解决这个问题:

  • 使用一个可以选择工作表名称的脚本
  • 没有仅使用公式的脚本
  • 如果可以预测工作表的创建,则具有逻辑

不存在的工作表可以像这样被忽略:

=UNIQUE(QUERY({
 IF(C2="", {"","","",""}, INDIRECT(C2));
 IF(C3="", {"","","",""}, INDIRECT(C3));
 IF(C4="", {"","","",""}, INDIRECT(C4));
 IF(C5="", {"","","",""}, INDIRECT(C5));
 IF(C6="", {"","","",""}, INDIRECT(C6))},
 "select Col4 where Col4 is not null", 1))

注意 A:D 中的 4 列 = 4 个空槽{"","","",""}


参见:

<强> https://stackoverflow.com/a/69067831/5632629

<强> https://stackoverflow.com/a/57452968/5632629

<强> https://stackoverflow.com/a/58599649/5632629

<强> https://stackoverflow.com/a/68447014/5632629

<强> https://stackoverflow.com/a/61819704/5632629

关于arrays - Google Sheets QUERY 从选项卡名称列表中提取,这将在添加新选项卡时提取新选项卡数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71329143/

相关文章:

google-apps-script - 从 Google 电子表格填充 Google 表单响应

javascript - 使用 Javascript 读/写 Google 电子表格单元格提要

arrays - 准备 segue 数组时不包含任何数据(使用 swift)

javascript - "else"无法使用 slideToggle 处理我的 Jquery 代码

java - 如何在 Java 中的二维数组上的循环内创建对象

objective-c - NSString 搜索子字符串/csv 文件 IO

linux - Bash:嵌套的 if 语句没有完成作用域

html - 在 Google 表格上使用带有 Google Apps 脚本的 HTML 下拉菜单

java - 从存储在 map 内的数组中获取值

javascript - 加入前两个元素并创建新数组?