数组公式扰乱查询 Table

Array Formula messing with Query Table

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

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

错误示例: 如果我向 'Book Rating'!J:J 添加数组公式,则 'Book League'!K1(以及 E13 和 H13)的查询结果不再按所需的 Desc 顺序排列书籍。当我移除阵列时,它们的顺序正确。这种类型的问题在整个 sheet 中针对所有相应的联赛选项卡重复出现 - 例如在 'Chefs League'!A1.

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

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

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

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

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

如果您想在数组公式中保留连字符 运行,这里有一些方法可以保留 'Book Rating'!J2 数组公式,因为我怀疑您有它,而不是更改您的 QUERY 公式:

1.) 在执行查询之前预过滤 'Book Rating' 数据:

=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)})