在 Excel 中,我有从 A1 到 O5 (15 X 25) 单元格中的数据。
我希望重新安排事情,以便我有以下内容
[A1][B1][C1]
[D1][E1][F1]
[G1][H1][I1]
[J1][K1][L1]
[M1][N1][O1]
[A2][B2][C2]
[D2][E2][F2]
...等等。
我尝试过但未能找到一种在 Excel 中实现此目的的优雅方法。有人能给我一些建议吗?
我见过这但他们似乎在玩一个略有不同的游戏。
答案1
以下是 VBA 截图:
Option Explicit
Sub rearrange()
Dim aValues As Variant
Dim i As Integer, j As Integer
Dim lRow As Long
'store the values in an array
aValues = Worksheets("Sheet1").Range("A1:O5").Value
lRow = 1
With Worksheets("Sheet2")
For i = 1 To UBound(aValues, 1)
For j = 1 To UBound(aValues, 2) Step 3
.Cells(lRow, 1).Value = aValues(i, j)
.Cells(lRow, 2).Value = aValues(i, j + 1)
.Cells(lRow, 3).Value = aValues(i, j + 2)
lRow = lRow + 1
Next j
Next i
End With
End Sub
答案2
这能满足你的需要吗?
- 将 E21 设置为
=INT((ROW(A1)-1)/5)
- 将 F21 设置为
=MOD(ROW(A1)-1,5)
- 将 A21 设置为
=INDIRECT("R" & ($E21+1)&"C" & (COLUMN(A21)+$F21*3),FALSE)
- 将 A21 复制到 B21 和 C21
- 将 A21:F21 向下复制所需的行数。
- 使用“粘贴特殊值”将 A21:Cnn 转换为值而不是公式。