【问题标题】:Array Formula messing with Query Table数组公式与查询表混淆
【发布时间】:2021-03-24 15:19:10
【问题描述】:

当我将数组公式添加到用于生成查询表的列时,查询表不会按预期对数据进行排序。当我删除数组公式时,它会正确显示。

文档在这里:https://docs.google.com/spreadsheets/d/1r3bpNFy9k1h8anZJfefk6KrGYSy7mW2izxKQZb9mWoU/edit?usp=sharing

错误示例: 如果我将数组公式添加到 'Book Rating'!J:J,'Book League'!K1(以及 E13 和 H13)的查询结果不再按所需的 Desc 顺序排列书籍。当我删除阵列时,它们会正确排序。这种类型的问题在所有相应的联赛选项卡的整个工作表中重复出现 - 例如。在“厨师联盟”!A1。

谁能帮我理解为什么这些查询表被数组公式弄乱了?

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    问题是由于 QUERY 的性质而发生的,因为 QUERY 的每一列只能返回一种类型的数据(例如,文本 数字,但不能同时返回两者)。在一列中存在多种数据类型的情况下,QUERY 将返回该列中人口最多的类型。在您的情况下,您已插入“-”代替空值,即文本。我猜您的数组公式在您的数据集之后用该连字符填充了 整个列 的空单元格,从而使文本成为该列中人口最多的类型。因此,您所有的百分比都被转换为文本。并且以文本的降序排列,例如,9.25%(作为字符串)比 25%“高”,因为前者以“9”开头,而后者以“2”开头。

    解决此问题的一种方法是从您的“图书评分”!J2 数组公式中删除“-”并将其替换为 IFERROR(1/0),这将使这些单元格为空而不是用连字符填充.这将使数字成为该列中人口最多的类型,并且您的 QUERY 将按预期工作。

    以 E13 为例,这是您的原始公式:

    =Query('Book Rating'!$A$1:$K,"Select A,J where A<>'' Order by J Desc Limit 10")

    如果您想在数组公式中保留该连字符,这里有一些方法可以保留“图书评分”!J2 数组公式,因为我怀疑您有它,而不是更改您的 QUERY 公式:

    1.) 在执行查询之前预先过滤“图书评分”数据:

    =Query(FILTER('Book Rating'!$A:$K,'Book Rating'!J:J<>"-"),"Select Col1,Col10 Where Col1 <> '' Order by Col10 Desc Limit 10",1)

    2.) 一起使用 SORTN 和 FILTER 而不是 QUERY,因为 FILTER 可以处理同一列中的多种数据类型:

    =ArrayFormula({"Books","6 Stars";SORTN(FILTER({'Book Rating'!A2:A,'Book Rating'!J2:J},ISNUMBER('Book Rating'!J2:J)),10,0,2,0)})

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 2017-11-03
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多