【发布时间】:2019-11-09 02:47:55
【问题描述】:
我有两张纸,sheet1 和 sheet2。 sheet2 的 E 列包含一个数量,K 列包含一个文本字符串(即一个键)。 sheet2 中的多行包含具有不同数量的相同文本字符串。
在 sheet1 B 列,我有一个文本字符串列表。对于每个文本字符串,我想查询 sheet2 并将其 E 列中的所有数量求和,其中 K 列中的值与文本字符串匹配。
目前,我需要 x 个查询,其中 x 是 sheet1 的 B 列中的文本字符串数。
sheet1 中的每个当前查询如下所示:
使用 sheet1 的 B1 中的文本字符串在 sheet1 单元格 A1 中查询
=SUM(
QUERY(
'sheet2'!$A$2:INDIRECT(CONCATENATE("'sheet2'!O",'sheet2'!P1)), "select E where K="""&B1&""""
))
使用 sheet1 的 B2 中的文本字符串在 A2 中查询
=SUM(
QUERY(
'sheet2'!$A$2:INDIRECT(CONCATENATE("'sheet2'!O",'sheet2'!P1)), "select E where K="""&B2&""""
))
等等……
sheet2 的单元格 P1 包含 sheet2 中非零的行数
这很好用,但问题是 sheet2 包含 200,000 行。 我有大约 100 个文本字符串要搜索,所以我目前使用 100 个查询,每个查询查看 200K 行 x 15 列 = 300 万个单元格
可以理解,更新工作表需要很长时间,因为当 sheet2 更新时所有这些查询都会重新运行。
是否可以将所有这些查询合并为一个?换句话说,告诉公式“我希望您使用范围 B1:B100 中的每个单元格作为查询中 K=x 的变量 x 执行求和查询,并将结果分别放在单元格 A1:A100 中”?
【问题讨论】:
标签: arrays google-sheets sum google-sheets-formula google-sheets-query