【问题标题】:Query function unable to use array data range reference查询函数无法使用数组数据范围引用
【发布时间】:2021-02-20 07:15:26
【问题描述】:

目标:

我想优化 Query 函数的数据处理速度,它实际上运行正常,但是有时它非常慢(1-2 分钟)。所以我正在改进我的整个工作表。 我提到了这个:https://webapps.stackexchange.com/questions/106809/how-can-i-speed-up-google-sheets

话虽如此,我认为我可以通过将数据范围从常规引用更改为数组范围引用来改进以下查询设置。

当前查询的工作原理:

下面的屏幕截图是一个查询函数,它从工作表中提取数据(混合数据,它也从另一个工作表中提取数据)并计算每个人的状态数(技术问题、咨询中、进行中和需要信息) (代理)。

这是我的查询功能。

=QUERY(
    'Blend Data'!$A$3:$C,
    "select C, COUNT(C) where B matches 
    'In Progress|In Consult|Need Info|Technical Issue'
    AND C matches'"
    &IFERROR(VLOOKUP(Values!F2,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F3,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F4,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F5,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F6,Values!F2:F,1,FALSE))&"'
    GROUP BY C pivot B",
    1)

查询设置详情:

  • 混合数据:是同一个电子表格中的一个工作表,它从同一个电子表格的两个工作表中提取数据,其中包括有关代理和工单的信息。
  • VLOOKUP:“Values!F2”正在从同一电子表格中的单独工作表中提取代理名称。我想使用参考而不是硬编码,因为名称有时会更改。

有关“混合数据表”的更多信息:

混合数据表正在使用查询功能来提取 2 个单独的表(“表 A 数据”表从不同的电子表格中提取数据,“表 B 数据”表从不同的电子表格中提取数据),我能够做到这与 Importrange 功能。这是截图。

这是我的查询功能。

=QUERY(
    {
        IMPORTRANGE("1DeXTU7dJVJFYIHSP8U9dsKw3YNZVtEZIjbURAd54Xjs","'Sheet A Data'!$A$3:$H");
        IMPORTRANGE("1QUZ-ljkXNOvtnPg-a2FqM2PhYUdt_zX5gMLtB6GcFdc","'Sheet B Data'!$A$3:$H")
    },
    A1,
    1
)

问题:

如上所述,我想将数据更改为数组格式;但是,我得到一个错误(无法解析函数查询参数 2 的查询字符串:NO_COLUMN:C)。

这是我尝试做的。

=QUERY(
    {
        IMPORTRANGE("1DeXTU7dJVJFYIHSP8U9dsKw3YNZVtEZIjbURAd54Xjs","'Sheet A Data'!$A$3:$H");
        IMPORTRANGE("1QUZ-ljkXNOvtnPg-a2FqM2PhYUdt_zX5gMLtB6GcFdc","'Sheet B Data'!$A$3:$H")
    },
    "select C, COUNT(C) where B matches 'In Progress|In Consult|Need Info|Blocked By' AND C matches '"
    &IFERROR(VLOOKUP(Values!F2,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F3,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F4,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F5,Values!F2:F,1,FALSE))&"|"
    &IFERROR(VLOOKUP(Values!F6,Values!F2:F,1,FALSE))&"'
    GROUP BY C pivot B",
  1
)

【问题讨论】:

    标签: arrays google-sheets pivot google-sheets-formula google-query-language


    【解决方案1】:

    当您使用构造范围 {} 时,您不能在查询中使用 A,B,C 引用。相反,您需要使用Col1,Col2,Col3 表示法

    =QUERY({
     IMPORTRANGE("1DeXTU7dJVJFYIHSP8U9dsKw3YNZVtEZIjbURAd54Xjs", "Sheet A Data!A3:H");
     IMPORTRANGE("1QUZ-ljkXNOvtnPg-a2FqM2PhYUdt_zX5gMLtB6GcFdc", "Sheet B Data!A3:H")},
     "select Col3,count(Col3) 
      where Col2 matches 'In Progress|In Consult|Need Info|Blocked By' 
        and Col3 matches '"
      &IFERROR(VLOOKUP(Values!F2, Values!F2:F, 1, 0))&"|"
      &IFERROR(VLOOKUP(Values!F3, Values!F2:F, 1, 0))&"|"
      &IFERROR(VLOOKUP(Values!F4, Values!F2:F, 1, 0))&"|"
      &IFERROR(VLOOKUP(Values!F5, Values!F2:F, 1, 0))&"|"
      &IFERROR(VLOOKUP(Values!F6, Values!F2:F, 1, 0))&"'
      group by Col3 
      pivot Col2", 1)
    

    【讨论】:

    • 嘿@player0,这很好用。非常感谢!我有一个问题。您认为最好始终使用Col1, Col2, Col3 符号引用吗?或者有时间提供A, B, C 符号参考吗?
    • A,B,C 更短。还有A,B,C,如果您使用范围A:C 创建查询,然后决定将范围更改为D:F,您需要重写整个查询参数并将所有实例从A,B,C 更改为D,E,F。但是如果你将引用包装到{} 你可以有:QUERY({A:C}, "select Col1,Col2,Col3") 现在如果你想改变D:F 的范围,你只需在那里改变它,你就完成了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多