答案1
有很多方法可以解决这个问题,但就可读性而言,可以使用以下方法。下面显示的公式不需要递归LAMBDA()
辅助函数,而且它相当简洁并按照OP 中给出的数据.话虽如此:
• 单元格中使用的公式D1
=LET(α, WRAPCOLS(B1:B20,10), TOCOL(VSTACK(α,SORT(α,,-1)),2,1))
或者,下面的方法比上面的方法更动态,因为如果你有超过20
行,然后使用SORT()
对每一行进行排序索引列按降序排列。最后将VSTACK()
和 合并,并将转换为单个数组。注意和 的TOCOL()
用法2
1
2
忽略错误同时1
按列扫描。2
我用过,不一定总是偶数行,也可以是奇数行。
=LET(α, WRAPCOLS(B1:B50,10), TOCOL(VSTACK(α,SORT(α,SEQUENCE(,COLUMNS(α)),-1)),2,1))
- 使用
WRAPCOLS()
转换一维的数组变成二维大批。 - 使用
SORT()
函数进行排序降序。 - 使用
VSTACK()
追加原始数组与排序后的数组。 - 将
TOCOL()
数组转换为单列。
笔记: 给定的公式与 OP 中发布的一系列数字配合得很好。如果还有其他问题,那么可能需要进行一些更改。
另一种替代方法:
=LET(
α, WRAPCOLS(B1:B20,10),
TOCOL(VSTACK(α, CHOOSEROWS(α, SEQUENCE(ROWS(α),,10,-1))),2,1))
上面发布的公式应该适用于所有场景,因为它SORT()
不像第一种方法那样依赖于函数。
答案2
答案3
另一种方法可能是
=LET(a,SEQUENCE(10),
x,VSTACK(a,SORT(a,,-1)),
VSTACK(x,x+10))
您还可以将其与索引结合使用
=LET(x,SEQUENCE(10),y,VSTACK(x,SORT(x,,-1)),INDEX(B1:B20,VSTACK(y,y+10)))