在Google Sheets中将二维范围转换为一维范围

4
如何将 Google Sheets 中的二维范围动态重新排列为一维范围,其中行被“堆叠”在一起,如下所示?当我说动态时,我的意思是该范围使用 FILTER 是动态大小的,具有未知数量的列(但已知行数为 52)。我尝试过使用其他问题中看到的 SPLIT(JOIN(range)) 方法,但这里不起作用,因为 JOIN 要求范围为 1D。

Preferred Final Output

寻找谷歌表格解决方案,如果可能的话,但谷歌脚本也可以。

2
有一个名为FLATTEN()的未记录函数。试试看。 - General Grievance
1
@Calculuswhiz 实际上这已经有文档记录了:https://support.google.com/docs/answer/10307761?hl=en - player0
我需要多列的结果:https://webapps.stackexchange.com/a/172747/135478 - undefined
3个回答

4

如果列数未知但行数已知,你可以直接使用以下代码:

=FLATTEN(TRANSPOSE(1:52))

enter image description here


2
请使用这个:
=QUERY(FLATTEN(TRANSPOSE(A1:C)), "where Col1 is not null")

enter image description here


0

当然,出于许多原因,其他答案更受推荐。

为了文档记录目的,并且由于您愿意接受谷歌应用脚本解决方案,这里是一个您可以使用的自定义函数:

function myFlat(rng) {
  const array = SpreadsheetApp.getActiveSheet().getRange(rng).getValues();
  return array[0].map((_, colIndex) => array.map(row => row[colIndex])).flat();
}

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接