是否有 Google 表格函数可以将范围压缩到一列中?

Is there a Google Sheets function to squeeze a range into one column?

我想为此找到内置函数无济于事,所以我不得不在脚本中编写它:

function squeeze(range) {
  return [].concat(...range).filter(n => n)
}

此 JS 函数将二维数组 range 和 returns 展平。

注意它会过滤掉列不均匀的空单元格。

虽然(尚未)正式记录,但 flatten() 也作为 built-in 公式存在。 参见 here for more info

更新:自 2020 年底以来,该功能现已记录在案。有关详细信息,请参阅 here

如果 FLATTEN 被邪恶移除 google 老兄,你可以这样做:

=TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(A1:C3),,9^9)),,9^9), " "))

E1:   =FLATTEN(A1:C3)

感谢 JPV 并根据他的回答,我添加了 FILTER 以省略空单元格:

=FILTER(FLATTEN(B2:L7), FLATTEN(B2:L7)<>"")

加上TRANSPOSE,我没有指定这个但我想要多个合并为一个,而不是多个 1 列。

=FILTER(FLATTEN(TRANSPOSE(B2:L7)), FLATTEN(TRANSPOSE(B2:L7))<>"")