我需要将一列数据放到下一行,如标题所述。经过大量研究,我了解到这可以使用宏来完成,这就是我需要你的帮助的地方。
以下是我需要做的示例:
我的意思是我有一个包含4列的Excel文档。
我希望每个D列的数据都像这样换行。
以下是我需要做的示例:
我的意思是我有一个包含4列的Excel文档。
A B C D
1 Data1 Data2 Data3 Data4
2 Data5 Data6 Data7 Data8
我希望每个D列的数据都像这样换行。
A B C
1 Data1 Data2 Data3
2 Data4 // First Data of D column on below line moved on line 2
3 Data5 Data6 Data7
4 Data8 // Second Data of D column on below line moved on line 4.
所以我录制了一个宏,在“2”上添加了一行,并将第一个D剪切粘贴到新的2上。 代码如下:
Sub Data1()
'
' Data1 Macro
'
'
'
ActiveCell.Offset(1, 0).Range("A1:D1").Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 3).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -3).Range("A1").Select
ActiveSheet.Paste
End Sub
结果:
问题在于有很多需要运行很多次的数据,因此这里确实需要一个循环。
尝试使用循环,但是我卡住了,这就是我需要你的帮助的地方。
这是我目前为止的进展,但它现在的效果并不如预期。
Dim x As Integer
Sub Data1()
'
' Data1 Macro
'
'
'
x = 1
Do While x <= 20 ' that i will change as how many columns i have.
ActiveCell.Offset(x, 0).Range("A1:D1").Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(x - 2, x + 2).Range("A1").Select
Selection.Cut
ActiveCell.Offset(x, x - 4).Range("A1").Select
ActiveSheet.Paste
x = x + 2 ' if it starts from cell no1 and we have a blank to fill with Data4 or Data8 of D row then we need x+2 i believe and not x+1.
Loop
End Sub
带有大量数据和第二次修改(不起作用)的结果代码:
提前致谢。