如何修改我的 Google 应用查询公式以将特定列的每一行中的空单元格转换为数字格式?

How do I modify my Google App Query formula to convert empty cells in every row of a specific column to be numeric format?

我正在尝试从另一个传播中过滤数据sheet。这是我要过滤的查询:

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

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

显然,H 列的每一行中的单元格都不是数字。我不能妥协原来的 sheet。那么,如何修改我的查询以将 H 列每一行中的空单元格转换为数字格式,就像使用此函数 =n(H3:H)

问题:

QUERY google sheets 中的函数每列仅接受 一个 数据类型:

In case of mixed data types in a single column, the majority data type determines the data type of the column for query purposes. Minority data types are considered null values.

这就是您查询 returns 列 H 单元格的原因。

不幸的是,我认为没有一种方法可以仅将 google sheet 中的单个列转换为不同的数据类型在查询函数中。但我确实知道你可以 convert full input matrix to another data type with onely每列具有 唯一 数据类型的目的。

所以现在你有两个选择。要么将所有内容都转换为数值,但这可能会引发错误,因为 instagram 等文本值无法转换为数字类型。或者您可以将完整数组转换为文本,这样您至少可以获得 desired/complete 结果。

这种方法的牺牲是 H 列不是数字。但至少你 完整 你的 sheet 中的数据,你可以 明确地将列 H 仅转换为数字数据类型 Values函数。


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

=ArrayFormula(QUERY(TO_TEXT(IMPORTRANGE("sheet_name", "Staffing Data 0!A:AS")),
"SELECT Col1, Col14, Col12, Col10, Col23, Col16, Col13, Col37, Col2, Col3 WHERE Col2='instagram'"))

然后

=VALUES(H3:H)

以数值形式获取 H 列的值。

解决方法:

您可以将查询拆分为三个数组,然后使用 {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", "Social media posts!A:AS"),"SELECT Col37 WHERE Col2='instagram'"),QUERY(IMPORTRANGE("sheet_name", "Social media posts!A:AS"),"SELECT Col37 WHERE Col2='instagram'")),

  QUERY(IMPORTRANGE("sheet_name", "Social media posts!A:AS"),"SELECT Col2,Col3 WHERE Col2='instagram'")
})

性能注意事项:

  • 使用 4 个查询预计会影响性能,而不是单个查询

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

  • 虽然你提到你无法修改源sheet,但修改源sheet是一个更好的解决方案:修改源sheet格式并制作源 sheet 中的空格 0 和目标中的单个查询 sheet.