Excel 复制每 10 行数据然后反转顺序

Excel 复制每 10 行数据然后反转顺序

我有一系列从 1 到 20 的数字。如何才能使该系列的前 10 行按顺序排列,然后接下来的 10 行按相反顺序排列 1-10。然后对每 10 行数据执行此操作。

数据

答案1

有很多方法可以解决这个问题,但就可读性而言,可以使用以下方法。下面显示的公式不需要递归LAMBDA()辅助函数,而且它相当简洁并按照OP 中给出的数据.话虽如此:

在此处输入图片描述


• 单元格中使用的公式D1

=LET(α, WRAPCOLS(B1:B20,10), TOCOL(VSTACK(α,SORT(α,,-1)),2,1))

或者,下面的方法比上面的方法更动态,因为如果你有超过20行,然后使用SORT()对每一行进行排序索引列按降序排列。最后将VSTACK()和 合并,并将转换为单个数组。注意和 的TOCOL()用法212 忽略错误同时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

这将创建一个行号数组,然后 INDEX 返回该行的值:

=LET(
    z,A1:A20,
    x,SEQUENCE(10),
    y,VSTACK(x,10-x+1),
    g,DROP(REDUCE(0,SEQUENCE(ROWS(z)/10,,0),LAMBDA(r,t,VSTACK(r,y+10*t))),1),
    INDEX(z,g))
  • z 是值的范围
  • x 创建从 1 到 10 的序列
  • y 将 x 堆叠在逆元组之上(10 比 1)
  • g 在其底部添加下一个分组,这是可扩展的,因为它找到 Z 中的条目数并将其除以 10。
  • 然后我们使用 INDEX 返回组中相对行号的值。

在此处输入图片描述

答案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)))

相关内容