将多个电子表格组合成一个,使用IMPORTRANGE函数

13

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

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

不处理重复项。我希望它们出现的频率与它们在不同的表格中的出现频率相同。

是否可以在不编写脚本或使用jQuery的情况下完成此操作,例如使用IMPORTRANGE?

无法工作的事情:我尝试使用IMPORTRANGE如下:

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

这会导致一个错误。


我不确定我理解这个问题。 基本上,我想复制整个工作表! 所以参考"A2:H1000"。 - FlorianT.
4个回答

30

你应该能够在 Spreadsheet 3 中使用垂直数组:

={IMPORTRANGE("Sheet1Key","SheetName!A2:A500");IMPORTRANGE("Sheet2Key","SheetName!A2:A500")}

2
我有一个示例表格,将3个importrange合并到一个表格中 https://goo.gl/bEZgO9 创建垂直数组的公式在单元格A1中,并且还包括FILTER公式以删除空行。 你能否调整此公式以适用于您自己的表格? - Chris Hick
1
在 { } 数组中的分号标记了下一个数据集的开始位置,因此您可以按任意顺序放置它们。但是,一旦导入正常工作,您可以将整个 { } 数组视为其他公式的数据集,例如 SORT({ },1,1,2,0) 或 QUERY({ },"order by Col1,Col2 desc"),以便更精确地排列它。 - Chris Hick
1
正是那个分号";"起了作用。还要感谢你提醒我将其作为一个全新的数据集使用。这解决了我的问题! - FlorianT.
1
这对我不起作用。它只打印一个值。 - Matej J
1
这还能用吗? 对我来说,只有第一个表格的数据被显示。 - Sniper
显示剩余5条评论

23

当然,也可以使用QUERY()函数与多个IMPORTRANGE()函数相结合,这样可以更加精确地控制我们导入的结果。

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

=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

对于降序排序,只需在ASC的位置使用DESC即可。

当然,我们也可以按照任何其他标准排列或省略它们以原样显示所有内容:

"SELECT * "

###注意:

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

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

即使我们在撰写这个公式的同一张电子表格中引用它,对于每个电子表格,只需要执行一次

这样才能够连接这些电子表格允许访问这些表格(我们已经拥有访问权限):


enter image description here

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


1
这应该被接受为正确答案。它完美地运行了。 - syldman
1
电子表格中的“键”是什么,如果您在同一电子表格中使用工作表,为什么需要它? - Agent Zebra
嗨@AgentZebra!由于IMPORTRANGE方法的规范,我们必须使用电子表格的URL或其密钥。您可以从URL中提取密钥:它是在“/ d /”和下一个“/”之间的哈希值。例如,这样的URL:https://docs.google.com/spreadsheets/d/11VE20qQ5xnu8uuQGJjCE0cn--_3G3Qd3RkOIIySNTEw/edit#gid=0 就有像这样的密钥:11VE20qQ5xnu8uuQGJjCE0cn--_3G3Qd3RkOIIySNTEw。 - simhumileco
1
看起来也可以简单地使用电子表格的URL作为键,如果你正在处理许多电子表格,这会更容易。 - joidegn

1
我也正在应用上述公式从多个电子表格中获取数据,但出现了一个错误,类似于IN ARRAY_LITERAL。一个数组文字缺少一个或多个行的值。

3
如果您遇到问题,请不要在一个已经停滞了3年的问题下写答案。请提出一个新的问题,陈述您的情况并提供具体细节,并参考这个旧问题。 - Markus Deibel
虽然这应该是另一个问题,但这是你在使用实际答案时可能会遇到的问题。原因是导入的两个范围没有相同数量的列。你可能会尝试将第一个范围导入为1:1以获取标题。问题是,如果第二个范围描述A:Y,但工作表具有A:Z列,则它将不匹配1:1导入,因为1:1导入将拉入A:Z。明白我的意思吗?我自己也不确定... ;) - RedYeti

0

简单的解决方法:将筛选器应用于整个列/工作表,而不仅仅是当前选择。这将自动更新所有筛选器以包括新添加的内容。


请问您能否描述一下如何将筛选器应用于整个列/工作表? - Neoheurist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接