Sub CutAndMove()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 4 To lastRow Step 3
Range("A" & i).Cut Destination:=Range("B" & i)
Next i
For i = 5 To lastRow Step 3
Range("A" & i).Cut Destination:=Range("C" & i)
Next i
End Sub
3条答案
按热度按时间mwg9r5ms1#
使用
MAKEARRAY
的一个简洁的替代方案:或者 * 甚至更短 *,不使用
MAKEARRAY
可能更有效,因为它不使用LAMBDA
函数:其中
MOD(SEQUENCE(m,,0),n)+1
生成序列:{1;2;3;1;2;3...;1;2;3}
直到m
,例如n=3
。它实际上是第一个公式中MOD(r-1,n)+1
的数组版本。和
垂直堆叠
n
-乘以单位矩阵(i.例如MUNIT(n)
),类似于REDUCE/VSTACK
方法,见下文,但不使用LAMBDA
函数:下面是输出(对于第一种方法):
使用
REDUCE/VSTACK
模式(1)的另一替代方案对于大数据集可能效率较低(当n
是一个小数字时,即它需要大量的迭代),但可能更容易理解:(1)检查我对以下问题的回答:如何将Excel中表格从垂直转换为水平,但长度不同。
lnxxn5zx2#
假设
A1:A9
中的条目:修改λ的初始定义(这里是3),以确定在输出中返回的列数。
guykilcj3#
列表从A3开始,相应修改