问题描述
我设置了一个新的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)
有没有更优雅的解决方案?
解决方法
=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"),"Sheet_Name!Range"),"SELECT * WHERE Col2='shops.id'")")
IMPORTRANGE()
方法从另一个工作表导入数据。在参数中,您可以在网址中输入带引号的google工作表ID,然后输入所需的工作表名称,并以!
结尾,然后输入要查询的工作表范围。当您使用外部QUERY()
方法包装数据时,可以通过选择特定列来查询该范围内的数据,例如A2:A
,包括该范围内的列或该工作表名称中的*
使用IMPORTRANGE()
方法时,它将返回一个数组。选定的列必须用"SELECT Col 1,Col 2,Col 3"
这可能对您有用。
=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
让我们知道这是否对您有帮助。