首页 > 解决方案 > 使用返回 ARRAYLITERAL ERROR 的 Query/ImportRange 公式从多个工作表导入数据

问题描述

我有 2 个 Google 表格,用于跟踪我们两个主要站点的课堂出勤情况,表格上的每个选项卡都是不同的课程/课程。每张表都有一个“数据”选项卡,用于提取所有课程/课程数据。我试图从这两张表中提取数据表并将它们放在第三张表上,并通过程序(GED、CDP、ESL)组织类数据。我从一张表中提取数据没有问题,但是当我尝试堆叠QueryImportrange公式时,我不断收到一个ARRAY LITERAL 错误,即缺少行。

我原来的公式是

={QUERY(IMPORTRANGE("1avE5TJIDVNL7_wqjDLPgocZuecr5Aoz7aI3cI5yIe34", "Data!A3:Ak1000"), "SELECT Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col26, Col27, Col28, Col29 WHERE Col3 CONTAINS 'ESL' AND Col7>0");QUERY(IMPORTRANGE("10q7kBUJVTw62p1cCZjUIR1CsFSev9Ik6q4K-X-RK40Y", "Data!A3:Ak1000"), "SELECT Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col26, Col27, Col28, Col29 WHERE Col3 CONTAINS 'ESL' AND Col7>0")}

它给出了一条VALUE错误消息,指出ARRAY LITERAL缺少行。

根据其他站点的其他建议,我尝试了公式(如下),但收到了公式解析错误消息并尝试将大括号移动到 ImportRange 公式周围,但继续收到公式解析错误消息

=QUERY{(IMPORTRANGE("1avE5TJIDVNL7_wqjDLPgocZuecr5Aoz7aI3cI5yIe34", "Data!A3:Ak1000");IMPORTRANGE("10q7kBUJVTw62p1cCZjUIR1CsFSev9Ik6q4K-X-RK40Y", "Data!A3:Ak1000")},"SELECT Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col26, Col27, Col28, Col29 WHERE Col3 CONTAINS 'ESL' AND Col7>0")

我希望输出将列出 Col3 中包含“ESL”的任何类以及两个工作表中的相应列。

标签: google-sheetsgoogle-sheets-formulaarray-formulasgoogle-sheets-queryimportrange

解决方案


了解ARRAY_LITERAL 错误

如果两个查询都输出了一些东西,那么一切都很好:

0

但是,如果其中一个查询没有任何输出,则它会输出#N/A,但问题是#N/A仅在第一个单元格中:

e

但是数组希望两边的矩阵相同(两个查询中的 4 列):

0

因此我们将每个查询包装到IFERROR其中,如果出现错误,我们会输出带有 4 个假列的假行{"","","",""}- 这将欺骗数组以如下方式输出:

0

因此尝试这样:

=IFERROR(QUERY({IFERROR(QUERY(IMPORTRANGE(
  "1avE5TJIDVNL7_wqjDLPgocZuecr5Aoz7aI3cI5yIe34", "Data!A3:AK1000"), 
  "select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col26,Col27,Col28,Col29 
   where Col3 contains 'ESL' 
   and Col7>0", 0), {"","","","","","","","","","",""});
  IFERROR(QUERY(IMPORTRANGE(
 "10q7kBUJVTw62p1cCZjUIR1CsFSev9Ik6q4K-X-RK40Y", "Data!A3:AK1000"), 
  "select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col26,Col27,Col28,Col29 
   where Col3 contains 'ESL'
   and Col7>0", 0), {"","","","","","","","","","",""})}, 
  "where Col1 is not null", 0))

推荐阅读