【问题标题】:google sheets query weird behavior谷歌表格查询奇怪的行为
【发布时间】:2021-05-09 15:41:58
【问题描述】:

几天来我一直在努力解决这个问题,我正在使用谷歌表格中的查询功能来提取数据子集,但是如果我在其中添加一个值,则查询正在工作特定的几个字段,查询结果都是不稳定的(技术术语)。公式:

=QUERY(A3:X,"SELECT F,P WHERE D='G' AND P IS NOT NULL ORDER BY P")

它似乎在大多数情况下都很好用:

但是,如果我在 P 列(这些屏幕截图中的第 5 列)中添加另一个值,我会得到一些奇怪的行为:

Merle Hawkins 是第一条记录,当我在 Merle 的 P 列中添加一个值时,它可以工作,但是当我在下一条记录中添加一个值(任何值)时,我得到: 您可能会注意到,Merle 显示在查询结果中,没有值,但不应该。我实际上应该在查询结果中看到 Frank Hudson 和 5

我注意到的另一个/不同的奇怪行为是当一个值被添加到第 4 条记录/行时,它看起来像这样: 这里,查询返回的第一行是前 3 条记录的串联(即使它们在查询结果集中都没有值)

数据本身是零星的,因为并非所有字段都会被填充,所以我的 where 子句只提取非空值。如屏幕截图所示,这些值也是数字和文本的混合。一些数据字段(在同一列中)将是数字,其他是文本 - 也许我需要做一个更好的 WHERE 子句来选择字段?

我在本文档的几张纸上对 =query 函数和 =filter 函数进行了几种变体,这是唯一引起问题的一种。我已经创建了数据表的多个副本,我从新的表重新开始,但继续遇到这个问题,我不确定为什么会发生。

TIA 寻求帮助

【问题讨论】:

  • 你能分享一份工作表吗?我在您的屏幕截图中看不到列标题。

标签: google-sheets google-sheets-formula


【解决方案1】:

query() 函数每列仅支持一种数据类型。列的类型由列中的大多数值决定。

您的数据似乎在每列中混合了数字和文本字符串。如果列中的大多数值是数字,则文本字符串将作为空值返回。如果列中的大多数值是文本字符串,则数字将作为空值返回。

一种解决方法是将列格式化为格式>数字>纯文本。这将使query() 将所有内容都视为文本。

另一种解决方法是使用filter() 而不是query()

【讨论】:

    【解决方案2】:

    QUERY 函数不适用于包含混合数据类型的列。 QUERY 将自动确定列类型并忽略异常。因此,如果您有一列主要包含数字,QUERY 将忽略几项文本。

    【讨论】:

      【解决方案3】:

      正如我所怀疑的,由于数据集是混合数据类型,我需要更深入地挖掘方程的复杂性。我最终使用混合数据列上的 TO_TEXT 重写了函数以将非文本字段转换为文本,因此只需检查非空文本字段并更简洁地构建我的数据集即可编写 WHERE 子句.

      =ArrayFormula(QUERY({A3:F,TO_TEXT(P3:P)},"SELECT Col6,Col7 WHERE Col4='G' AND Col7 IS NOT NULL ORDER BY Col7"))

      感谢@doubleunary 和@Aresvik 为我指明了正确的方向

      【讨论】:

        猜你喜欢
        • 2021-07-18
        • 2017-05-10
        • 1970-01-01
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        • 2018-06-25
        • 1970-01-01
        相关资源
        最近更新 更多