首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组公式与查询表的混淆

数组公式与查询表的混淆
EN

Stack Overflow用户
提问于 2020-12-13 22:23:12
回答 1查看 133关注 0票数 1

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

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

错误的一个例子:如果我向‘books’!J:J添加一个数组公式,那么‘books’!K1(以及E13和H13)的查询结果将不再按所需的Desc顺序排序。当我移除数组时,它们的排序是正确的。这种类型的问题在每张表中都会被重复,例如在‘厨师联盟’!A1。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-14 03:30:34

这个问题的发生是因为QUERY的性质,因为查询的每一列只能返回一种类型的数据(例如,文本或数字,但不能同时返回两者)。在一列中存在多个数据类型的情况下,查询将返回列的最密集类型。在您的例子中,您已经插入了"-“来代替null,这就是文本。我猜您的数组公式在数据集之后填充了整列空单元格,使文本成为列中最常见的类型。因此,所有百分比都被转换为文本。例如,按文本的降序排列,9.25% (作为字符串)比25%“高”,因为前者以"9“开头,后者以”2“开头。

解决该问题的一种方法是从您的‘图书评级’!J2数组公式中删除"-“,并将其替换为IFERROR(1/0),这将使这些单元格为空,而不是填充一个连字符。这将使数字成为列中最常见的类型,并且您的查询将按预期的方式工作。

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

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

如果您想让这个连字符在数组公式中运行,下面是一些让‘图书评级’!J2数组公式如我所怀疑的那样保持不变的方法,而不是更改查询公式:

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一起来代替查询,因为过滤器可以处理同一列中的多个数据类型:

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65281322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档