是否有 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))<>"")
我想为此找到内置函数无济于事,所以我不得不在脚本中编写它:
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))<>"")