使用FILTER和LEN将100列变成1列?还是其他方法?

问题描述 投票:0回答:1

在 Google Sheets 中,我使用以下代码将三列数据返回到一列中:

=FILTER({A1:A7;B1:B8;C1:C8}, LEN({A1:A7;B1:B8;C1:C8}))

此测试代码有效。现在我想对 100 列做同样的事情。有没有办法做到这一点而不必写出最后一个范围?

将所有这些数据集中在一列中后,我希望在 A 列的新工作表中显示 41 行数据,然后继续在 B 列中显示接下来的 41 行数据,然后在 C 列中显示数据,依此类推。

原始数据是这样的:

A 栏 | B 上校 | C 上校 | D 上校 | ... 姓名1 |姓名2 |姓名3 |名称4 | ... 细胞1 |细胞2 |细胞3 |细胞4 | ... 等等...

所以我想我可以将它们拉入一列,然后希望在每 41 行之后将该列分布到多列中。我感谢您提供的任何帮助!

arrays sorting google-sheets filter
1个回答
0
投票

您可以使用 TOCOL 将所有范围堆叠在一列中。第二个参数可让您选择是否要跳过空单元格(如果需要,请选择 1),第三个参数可让您选择是否要按列或按行扫描。我知道这个参数中的 1 适合你:

=TOCOL(A1:CV20,1,1)

我使用 A1:CV20 这个范围作为示例,请根据您的情况进行调整。然后使用 WRAPROWS 或 WRAPCOLS 您将能够完成 41 行集。如果您使用 WRAPROWS 执行此操作,它将获取该列并将其扩展到列上

=WRAPROWS(TOCOL(A1:CV20,1,1),41)

或者您可以尝试使用 WRAPCOLS 并使用元素数量除以 41:

=WRAPCOLS(TOCOL(A1:CV20,1,1),ROUNDUP(COUNTA(TOCOL(A1:CV20,1,1))/41),)

或者,使用 LET 这样就不会重复范围:

=LET(d,TOCOL(A1:CV20,1,1),
WRAPCOLS(d,ROUNDUP(COUNTA(d,))

我想其中一个选项将满足您的预期场景!

© www.soinside.com 2019 - 2024. All rights reserved.