![](/img/trans.png)
[英]How to use QUERY and IMPORTRANGE function together to extract and transpose data in google sheet?
[英]Extract data from different google sheets using QUERY, IMPORTRANGE and TRANSPOSE?
大家好,
我有 3 个测试文件,如上面的屏幕截图所示。 我想将这 3 个文件中的数据导入到主 Google 工作表中。 这是我正在使用的公式:
=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
) 为空,则 output 将在主 Google 工作表的单元格B5
中为#N/A
。 我可以知道如何避免这种情况,即当第一个文件充满数据时数据才出来? 如果公式为空,我希望公式能够跳过第一个文件并继续处理第二个和第二个文件。
任何建议将不胜感激!
当您的范围为空时,您会收到单个单元格的错误消息。 只有当所有表的列数相等时,才能堆叠表 {table;table;table;}。 如果你有 11 列(从 B 到 L),你应该得到一行 11 个空单元格以防出错。 因此,每个 importrange 都应该用 iferror 或 ifna 返回空单元格的公式包装:
iferror(IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");{""\""\""\""\""\""\""\""\""\""\""})
在这里,我尝试从同一个文件中导入范围。 在第一行中,我尝试引用不存在的工作表。 第二个参考是正确的。 Iferror 制作 2 个空单元格以防止出错。
文件在这里: https://docs.google.com/spreadsheets/d/14AnNAlV7mQmXo9vJ6YQugSm2-PS-RQPoND27wwv5f5k/edit#gid=0
编辑
我没有从你的问题中理解你想要什么。 对不起。 你说的不清楚。
这就是我在评论中要求阅读本文的内容。
现在我看到您可以将此公式与 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
。
不需要{""\""\""\""\""\""\""\""\""\""\""}
。
我想象每个 importrange 有 10 个 importrange 和 20 个列Sheet1:B26:T29
和IFERROR
。
这个的10倍:
iferror(IMPORTRANGE(NameList!B3,"Sheet1!B26:L29");{""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""})
我go疯了
第一个答案
你也试试这个技巧
=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
这将停止主 Google 工作表中单元格B5
中的错误#N/A
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.