11

我想将多个电子表格的数据汇总到一个电子表格中。

  • 电子表格 1 有一行字符串 A2:A500
  • 电子表格 2 有一行字符串 A2:A500
  • 电子表格 3 应该有一行 (Spreadsheet1!A2:A500 AND Spreadsheet2!A2:A500)。

重复项不应区别对待。我希望它们出现的频率与它们在不同的工作表中出现的频率一样。

是否可以在不编写脚本或使用 jQuery(例如使用 IMPORTRANGE)的情况下做到这一点?

什么不起作用:我尝试使用 IMPORTRANGE,如下所示:

ARRAY{IMPORTRANGE("key-of-spreadsheet1","list!A2:A500"), IMPORTRANGE("key-of-spreadsheet2", "list!A2:A500")}

这会导致错误。

4

4 回答 4

26

您应该能够在电子表格 3中使用垂直数组:

={IMPORTRANGE("Sheet1Key","SheetName!A2:A500");IMPORTRANGE("Sheet2Key","SheetName!A2:A500")}
于 2015-07-27T20:02:08.910 回答
18

当然,也可以将多个IMPORTRANGE()函数与QUERY()函数结合起来,这样我们就可以更好地控制我们导入的结果

例如,我们可以使用这样的构造

=QUERY(
  {
    IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-2", "'sheet-name-2'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-3", "'sheet-name-3'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-4", "'sheet-name-4'!A2:Z100")
  },
  "SELECT * WHERE Col1 IS NOT NULL ORDER BY Col3 ASC"
)

###解释:

上面的查询从导入的范围中删除空行

SELECT * WHERE Col1 IS NOT NULL

并对第三列收集的所有数据进行升序排序

ORDER BY Col3 ASC

对于降序,只需使用 DESC 代替 ASC

当然,我们也可以安排任何其他条件,或者省略它们以显示所有内容而不进行修改:

"SELECT * "

###笔记:

为了使用上面构造的查询,我们首先需要为IMPORTRANGE()我们想要引用的每个电子表格调用一个方法

=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")

即使我们参考编写此公式的同一个电子表格,我们也必须这样做,但是对于每个电子表格,只需执行一次就足够了

这是为了能够连接这些工作表允许访问工作表(无论如何我们都拥有访问权限)

                                                    在此处输入图像描述

在授予所有电子表格的权限后,我们可以使用上述查询。

于 2019-07-26T05:19:48.897 回答
1

我还在应用上面给定的公式来从多个电子表格中获取数据,这些电子表格出现错误,类似于 IN ARRAY_LITERAL 数组文字缺少一个或多个行的值。

于 2019-03-14T12:26:58.850 回答
0

简单修复:将过滤器应用于整个列/工作表,而不仅仅是当前选择。这将自动更新所有过滤器以包含新添加的内容。

于 2020-05-13T20:29:23.867 回答