在 Google Sheet 上将多列堆叠在一起?

Stack multiple columns on top of eachother on Google Sheet?

我正在使用 Google SpreadSheet,我正在尝试使用查询、导入范围和大括号的组合从不同来源导入数据:

={Query(Importrange(SheetA),"select Col1,Col2,Col3,Col4 where Col1 is not null");
Query(Importrange(SheetB),"select Col1,Col2,Col3,Col4 where Col1 is not null")}

但结果公式只有returns SheetA数据。

因为我只需要 SheetA 和 SheetB 中的 4 个特定列,所以我希望两个工作表中的列像这样堆叠在一起:

Col1 Col2 Col3 Col4
Data SheetA Data SheetA Data SheetA Data SheetA
Data SheetB Data SheetB Data SheetB Data SheetB

我尝试 运行 每个 =query(importrange) 单独然后使用 {A:D;E:H} 组合它们但它给出 结果没有自动展开,请插入更多行错误。

我试着寻找其他类似的线程,但它们主要是关于将不同的列堆叠成一个单一的列。你能帮我处理一下吗?

原来问题是由于尝试组合 2 个无限范围 A:D 和 E:H、

时出现无限空白行

通过用查询将它们括起来,删除空值条件,我的公式现在可以正常工作了:

=query({A:D;E:H},"Select * where Col1 is not null")

不过,有什么方法可以使用查询、导入范围和大括号使用原始单数公式来堆叠这 4 列吗?

={Query(Importrange(SheetA),"select Col1,Col2,Col3,Col4 where Col1 is not null");
Query(Importrange(SheetB),"select Col1,Col2,Col3,Col4 where Col1 is not null")}

您有 2 个源文件(Source1、Source2),并且您希望使用 IMPORTRANGE 将数据堆叠到另一个文件(合并)

此解决方案有 2 个部分,您可以按任意顺序执行第 1 部分和第 2 部分。

第 1 部分

批准每个导入的范围。

在合并文件中的临时 sheet(稍后可以删除)。

对 Source1 使用像这样的标准 IMPORTRANGE 公式(例如,您必须将“Source1_ID”替换为您的 Source1 文件的 ID):

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/Source1_ID", "Sheet1!A2:D")

批准后,从单元格中删除公式,并为 Source2 再次执行此操作(例如,您必须将“Source2_ID”替换为您的 Source2 文件的 ID)

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/Source2_ID", "Sheet1!A2:D")

第 2 部分

在组合文件中,转到您想要组合数据的 sheet,然后输入完整的 QUERY 公式(例如,您必须在其中替换“Source1_ID”和“Source2_ID" 和你的两个源文件的 ID)

=QUERY({IMPORTRANGE("https://docs.google.com/spreadsheets/d/Source1_ID", "Sheet1!A2:D"); IMPORTRANGE("https://docs.google.com/spreadsheets/d/Source2_ID", "Sheet1!A2:D")}, "Select Col1, Col2, Col3, Col4 Where Col1 Is Not Null")

首先,您需要运行将每个导入范围作为独立公式单独导入,以通过允许访问

来连接您的工作表

完成后,才可以运行这个数组:

=QUERY({IMPORTRANGE("url_or_id", "SheetA!A:D"); 
        IMPORTRANGE("url_or_id", "SheetB!A:D")}, 
 "where Col1 is not null", 0)