谷歌表格中是不是有办法选择单元格列表作为数组用作连接表格中的参数?

Posted

技术标签:

【中文标题】谷歌表格中是不是有办法选择单元格列表作为数组用作连接表格中的参数?【英文标题】:Is there a way in google sheets to select a list of cells as an array to be used as a parameter in a connected sheet?谷歌表格中是否有办法选择单元格列表作为数组用作连接表格中的参数? 【发布时间】:2020-10-08 15:39:48 【问题描述】:

我设置了一个新的 google 工作表来通过连接工作表查询我的数据库。

查询返回我们商店的列表及其每年的销售额。每个商店都有一个 ID。

我可以将另一个参考表中的单元格 A1 设置为查询中的参数。这样,连接的查询仅返回该特定商店 ID 的结果。

当使用它时,我真的想在我的查询中加入一个IN 函数。然后,连接的查询将类似于。

SELECT * FROM shops where shops.id in (@RANGE) 

而@RANGE 将是 A2:A 作为一个数组。

我已经成功地将每个单元格命名为一个新参数,然后:

SELECT * FROM shops where shops.id in (@REFERENCE1, @REFERENCE2) 

有没有更优雅的解决方案?

【问题讨论】:

我的工作表目前有两个标签。一个是链接到我们的 bigQuery 数据库的连接工作表,另一个是 Shop ID 列表。连接的工作表中内置了一个查询以获取所有商店。 =Query 可能是解决方案的一部分,但我不确定 您可以共享一张带有虚拟复制粘贴值的表格吗?和一个示例输出好吗? 不要使用A2:A,因为它会将空值从数据底部返回到 Sheet.getMaxRows()。使用 range(2,1,sh.getLastRow()... 【参考方案1】:

这可能对你有用。

=SUBSTITUTE(QUERY(FILTER(D3:D,D3:D<>"",E3:E),"WHERE Col1 <> ''",9^99)," ","|")

这会根据已选择的商店 ID 过滤一列商店 ID,并将其转换为与您一直使用的查询类似的文本字符串。产生类似"A1|A3|A7"的东西。

然后,查询仅指向 contains 条件的结果。

请注意,如果您要报告的商店 ID 范围是以其他方式构建的,您只需指向其范围,而不是使用我拥有的过滤器。

在此处查看样本表。这也显示了两个公式的合并示例,以从一个公式生成报告。

https://docs.google.com/spreadsheets/d/11uMa7CNcTXBnnpWGSIC_WvGSa-P2GTLQ2T7GvTgY4oM/edit?usp=sharing

如果这对您有帮助,请告诉我们。

【讨论】:

【参考方案2】:

=QUERY(IMPORTRANGE("Google_Sheet_ID_Can_Be_Find_In_URL", "Sheet_Name!Range(you want to query)"),"SELECT * ")

=QUERY(IMPORTRANGE("Google_Sheet_ID_Can_Be_Find_In_URL", "Sheet_Name!A2:A"),"SELECT * ")

=QUERY(IMPORTRANGE("Google_Sheet_ID_Can_Be_Find_In_URL", "Sheet_Name!Range"),"SELECT * WHERE Col2='shops.id'")")

IMPORTRANGE() 方法从另一个工作表导入数据。在参数中,您从带有引号的 url 中键入 google sheet id,键入以 ! 结尾的所需工作表名称,然后键入要查询的工作表中的范围。当您使用外部 QUERY() 方法包装它时,您可以通过选择特定列来查询该范围中的数据,例如 A2:A,方法是从该工作表名称中选择具有范围或 * 的列

当您使用IMPORTRANGE() 方法时,它将返回一个数组。选定的列必须用数字标记,如"SELECT Col 1, Col 2, Col 3"

【讨论】:

【参考方案3】:

可能有点晚了,但我发现最简单的方法是转换为正则表达式。

select (@POSTCODES) as test, postcode
  from `postcode.au_towns`
  where  regexp_contains(@postcodes,safe_cast(postcode as string))

其中@POSTCODES 是一个 gsheet 字符串,使用类似 join("|",UNIQUE(Sheet1!D2:D)) 之类的公式。

只要确保删除多余的“|”使用类似的东西生成 左(B2,len(B2)-1)

【讨论】:

以上是关于谷歌表格中是不是有办法选择单元格列表作为数组用作连接表格中的参数?的主要内容,如果未能解决你的问题,请参考以下文章

HTML:在表格的单元格中创建一个下拉列表

用于工作表的谷歌应用脚​​本 - 选择多个列表值并记录在同一个单元格中

根据谷歌表格中的 URL 查找并选择一个单元格

使用 Google 表格下拉菜单更改单元格背景颜色而不是文本

让 jQuery UI 可选择作为网格和表格中的列表

谷歌表格,脚本在一个单元格中设置多个超链接