使用 QUERY、IMPORTRANGE 和 TRANSPOSE 从不同的 google 工作表中提取数据?

Extract data from different google sheets using QUERY, IMPORTRANGE and TRANSPOSE?

大家好,

如上图所示,我有3个测试文件。我想将这 3 个文件中的数据导入主文件 google sheet。这是我使用的公式:

=TRANSPOSE(QUERY(TRANSPOSE({IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");IMPORTRANGE(NameList!B4,"Sheet1!B26:L29");IMPORTRANGE(NameList!B5,"Sheet1!B26:L29")}),"where Col1 is not null"))

这个公式的结果输出是:

当所有数据都填充到 3 个源文件中时,它工作得很好。但是,如果第一个文件 (testing) 为空,则主 google sheet 中单元格 B5 中的输出将是 #N/A。我可以知道如何避免这种情况,即第一个文件充满数据时数据才出来吗?我希望公式能够跳过第一个文件(如果它是空的)并继续处理第二个和第二个文件。

任何建议将不胜感激!

当您的范围为空时,您收到的错误消息是单个单元格。 堆叠 tables {table;table;table;} 仅当所有 tables 具有相同数量的列时才有可能。 如果你有 11 列(从 B 到 L),你应该得到一行 11 个空单元格以防出错。所以每个导入范围都应该用 iferror 或 ifna 公式包装 returns 空单元格:

iferror(IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");{""\""\""\""\""\""\""\""\""\""\""})

我构建了一个示例文件:

这里我尝试从同一个文件导入范围。在第一行中,我尝试引用不存在的 sheet。第二个参考是正确的。 Iferror 生成 2 个空单元格以防止错误。

文件在这里:https://docs.google.com/spreadsheets/d/14AnNAlV7mQmXo9vJ6YQugSm2-PS-RQPoND27wwv5f5k/edit#gid=0

编辑

从你的问题中我不明白你想要什么。对不起。你没说清楚。
这就是我在评论中要求阅读 this.

的内容

现在我看到你可以使用这个公式 2 QUERY

=QUERY(QUERY({IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");
              IMPORTRANGE(NameList!B4,"Sheet1!B26:L29");
              IMPORTRANGE(NameList!B5,"Sheet1!B26:L29")},
                       "where 1=1"), 
          "where Col1 is not null")

它会为您提供完全符合您要求的结果。
不需要 IFERROR.
不需要 {""\""\""\""\""\""\""\""\""\""\""}.
我想象每个导入范围有 10 个导入范围和 20 列 Sheet1!B26:T29IFERROR
10 倍:

iferror(IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");{""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""})

我疯了


第一个回答
你也试试这个技巧

=TRANSPOSE(QUERY(TRANSPOSE({IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");IMPORTRANGE(NameList!B4,"Sheet1!B26:L29");IMPORTRANGE(NameList!B5,"Sheet1!B26:L29")}),"where Col1 is not null or 1=1 "))

你看我加or 1=1
这将停止错误 #N/A in cell B5 in master google sheet.