如何修改Google App查询公式,以将特定列的每一行中的空单元格转换为数字格式? 解决方法:摘要:性能注意事项:

问题描述

我正在尝试从另一个电子表格中过滤数据。这是我要过滤的内容查询

QUERY(IMPORTRANGE(“ sheet_name”,“社交媒体帖子!A:AS”),“ SELECT Col1,Col14,Col12,Col10,Col23,Col16,Col13,Col37,Col2,Col3 WHERE Col2 ='instagram'” )

原始查询输出。 Col37是H栏。请检查图像中的H栏,其中的单元格为空。

显然,H列每一行中的单元格都不认为是数字。我不能妥协原始表。因此,如何修改查询以将H列每一行中的空单元格转换为数字格式,例如使用此功能=n(H3:H)

enter image description here

解决方法

解决方法:

您也许可以将查询分为三个数组,然后使用{array1,array2,array3}将它们重新加入:

  • Col37之前所有列的第一个数组
  • Col37的第二个数组。在这里,您尝试使用双一元运算符--
  • 将所有空单元格强制为0
  • Col37之后所有列的第三个数组

摘要:

=ARRAYFORMULA({
  QUERY(IMPORTRANGE("sheet_name","Social media posts!A:AS"),"SELECT Col1,Col14,Col12,Col10,Col23,Col16,Col13 WHERE Col2='instagram'"),IFERROR(--QUERY(IMPORTRANGE("sheet_name","SELECT Col37 WHERE Col2='instagram'"),QUERY(IMPORTRANGE("sheet_name","SELECT Col37 WHERE Col2='instagram'")),"SELECT Col2,Col3 WHERE Col2='instagram'")
})

性能注意事项:

  • 预计将使用4个查询而不是单个查询来达到性能

  • 但是,我希望所有IMPORTRANGE都将被缓存,从而避免4个不同的调用。

  • 尽管您提到无法修改源工作表,但是修改源工作表是一个更好的解决方案:修改源工作表格式,并在源工作表中保留空白0,在目标工作表中保留一个查询。

,

问题:

Google表格中的

QUERY函数每列仅接受一种数据类型:

在单列中混合数据类型的情况下,多数数据类型 确定用于查询目的的列的数据类型。少数民族 数据类型被视为空值。

这就是您的查询为H列返回单元格的原因。

不幸的是,我不认为有一种方法可以在查询功能内仅将转换为谷歌表格中的单个列为其他数据类型。但是我确实知道可以将完整输入矩阵转换为另一种数据类型的方法,其唯一目的是具有唯一每列的数据类型。

因此,您现在有两个选择。您可以将所有内容都转换为数字值,但这可能会导致错误,因为instagram之类的文本值无法转换为数字类型。或者,您可以将整个数组转换为文本,以便至少可以返回所需/完整结果。

此方法的牺牲之处在于 H 列不是数字。但是至少您的工作表中有 full 数据,并且可以使用Values函数将列仅显式转换H列为数字数据类型。


获取完整数据的解决方法:

=ArrayFormula(QUERY(TO_TEXT(IMPORTRANGE("sheet_name","Staffing Data 0!A:AS")),Col13,Col37,Col2,Col3 WHERE Col2='instagram'"))

然后

=VALUES(H3:H)

获取H列的值作为数字值。