使用 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:T29
和 IFERROR
。
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.
大家好,
如上图所示,我有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:T29
和 IFERROR
。
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.