【问题标题】:Query of two filtered ranges doesn't display any results, if one filtered range has no matches如果一个过滤范围没有匹配项,则查询两个过滤范围不显示任何结果
【发布时间】:2020-06-20 05:17:42
【问题描述】:

我正在尝试查询两个过滤范围以获得组合平均值:

=QUERY({FILTER(Filtered Range #1);FILTER(Filtered Range #2)},  
"select avg(Col2)    
label avg(Col2)' ' ", 0)

此查询效果很好,除非这些过滤范围中的任何一个碰巧没有任何匹配项,在这种情况下,整个查询将返回为 #VALUE!甚至无需查询其他范围的匹配项。

有没有办法解决这个问题?我尝试在各个地方合并IFERROR 语句。我试过平均两个单独的查询,但取两个平均值的平均值并不理想。

这是我的Example Worksheet

请查看由于 2018 工作表中的 FILTER 条件 1 没有匹配项,因此即使 2019 工作表中有匹配项,整个 QUERY 也不会返回。

感谢任何帮助!谢谢!

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    FILTER(...) 括在IFNA(FILTER(...), SPLIT(REPT(",", N), ",", True, False)) 中,其中NFILTER 应返回的列数。

    这个SPLIT 会给你一个虚拟的{"", "", ..., ""} - N 列空单元格,在QUERY 中很容易被忽略。

    它看起来像:

    =QUERY(
      {
        IFNA(FILTER(Filtered Range #1), SPLIT(REPT(",", 2), ",", True, False));
        IFNA(FILTER(Filtered Range #2), SPLIT(REPT(",", 2), ",", True, False))
      },
      "select avg(Col2)
       where Col1 is not null
       label avg(Col2) ''",
      0
    )
    

    【讨论】:

    • 感谢您的回答!我没有在您输入示例表的公式中看到 SPLIT,但它仍然有效,我将它调整为非常棒的平均查询!当我用 INDIRECT 引用替换“2019”和“2020”工作表引用并稍微调整我的查询以仅查询过去 12 个月内的值时,它似乎没有返回。我想知道我的查询是否有问题?
    • @Leanna 在我手动输入{"", ""} 的示例中,使用SPLIT 是一种更通用的解决方案 - 为您提供现场计算的正确大小的空值行。结果范围需要该行,QUERY 将与该范围保持一致。
    • @Leanna 出于某种原因,这部分查询无法按预期工作:and Col1>= date '" & TEXT(NOW()-365, "yyyy-MM-dd") & "'。其他一切正常。
    • 哦,我明白了!感谢您的解释。此查询Col1 >= date '" & TEXT(NOW()-365, "yyyy-MM-dd") & "' 在我的原始公式中运行良好(请参阅“示例矩阵”选项卡),因此我将进一步深入研究。
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多