Google sheets 使用IMPORTRANGE将多个电子表格合并到一个电子表格中

Google sheets 使用IMPORTRANGE将多个电子表格合并到一个电子表格中,google-sheets,google-sheets-formula,array-formulas,importrange,Google Sheets,Google Sheets Formula,Array Formulas,Importrange,我想将多个电子表格的数据聚合到一个电子表格中 电子表格1有一行字符串A2:A500 电子表格2有一行字符串A2:A500 电子表格3应同时包含一行(电子表格1!A2:A500和电子表格2!A2:A500) 不得以不同方式处理副本。我希望他们经常出现在不同的表单中 是否可以在不编写脚本或使用jQuery的情况下(例如通过使用IMPORTRANGE)执行此操作 什么不起作用:我已尝试使用IMPORTRANGE,如下所示: ARRAY{IMPORTRANGE("key-of-spreadsheet

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

  • 电子表格1有一行字符串A2:A500
  • 电子表格2有一行字符串A2:A500
  • 电子表格3应同时包含一行(电子表格1!A2:A500和电子表格2!A2:A500)
不得以不同方式处理副本。我希望他们经常出现在不同的表单中

是否可以在不编写脚本或使用jQuery的情况下(例如通过使用IMPORTRANGE)执行此操作

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

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

这会导致错误。

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


我也在应用上面给出的公式从多个电子表格中获取数据,这是一个错误,就像在数组中一个数组文本缺少一行或多行的值一样。

当然,也可以将多个
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
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
说明: 上述查询从导入的范围中删除空行

=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
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
对收集到的与第三列相关的所有数据进行升序排序

=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
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
对于下降,只需使用
DESC
代替
ASC

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

"SELECT * "
注: 为了使用上述构造的查询,我们首先需要为要引用的每个电子表格调用一个
IMPORTIMAGE()
方法

=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
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
我们必须这样做,即使我们引用了编写公式的同一个电子表格,但是对于每个电子表格,只需做一次就足够了

这是为了能够连接这些工作表并允许访问这些工作表(我们仍有访问权限)


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

轻松修复:将筛选器应用于整个列/表格,而不仅仅是当前选择。这将自动更新所有过滤器,以包括新添加的内容。

我不确定是否理解此问题。我想基本上复制整个表!“A2:H1000”的参考资料@Chris Hick这也是我的第一个猜测。但它不是这样工作的。显然电子表格期望不同的范围…我有一个示例表,它将3个导入项合并成一个表,创建垂直数组的公式是在单元格A1中,还包括过滤器公式来删除空白行。你能把这个公式应用到你自己的床单上吗;在{}数组中,标记下一个数据集开始的位置,以便您可以按自己喜欢的顺序放置它们。但是,一旦导入工作正常,您就可以将整个{}数组作为其他公式的数据集,例如SORT({},1,1,2,0)或QUERY({},“order by Col1,Col2 desc”),这样您就可以更精确地按照“;”的方式进行排列。感谢您的提示,将其作为一个全新的数据集使用。这解决了我的问题!这对我不起作用。它只打印一个值如果你有问题,不要对一个已经死了三年的问题写答案。问一个新问题,用具体细节陈述你的案例,并参考这个问题。虽然这应该是另一个问题,但在使用实际答案时,这是一个你可能遇到的问题。原因是两个导入的范围的列数不同。您可能会尝试将第一个范围作为1:1导入以获取标题。问题是,如果第二个范围描述了A:Y,但图纸具有A:Z列,则它将与1:1导入不匹配,因为1:1导入将拉入A:Z。是否跟随我?我不确定我会……;)您能描述一下如何将过滤器应用于整个列/页吗?这应该是正确的答案。它工作得很好。