Vba 使用宏在excel的下一行获取列
正如标题所说,我需要将一列中的数据放到下一行。 经过大量的研究,我知道它可以用宏来完成,这就是我需要你帮助的地方 我需要做的示例: 我的意思是我有一个4列的excel文档Vba 使用宏在excel的下一行获取列,vba,excel,Vba,Excel,正如标题所说,我需要将一列中的数据放到下一行。 经过大量的研究,我知道它可以用宏来完成,这就是我需要你帮助的地方 我需要做的示例: 我的意思是我有一个4列的excel文档 A B C D 1 Data1 Data2 Data3 Data4 2 Data5 Data6 Data7 Data8 我希望每个D列数据都像这样转到下一行 A B C 1 Data1 Data2 Data3
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”上添加一行,并在新的2上粘贴第一个D。代码如下:
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
Dim x作为整数
子数据1()
'
'数据1宏
'
'
'
x=1
执行While x执行此操作的最佳方法是通过D中的所有数据进行简单循环,尽管循环运行时添加行会使循环参数变得复杂。这可以通过使用do while循环并将check条件与计数器一起递增来解决
Sub ConvertColDtoRow()
'Note that this code is written specifically for column D, but it can be adjusted as needed by changing the column specified
Dim Count As Long, LastRow As Long
Count = 1
LastRow = ActiveSheet.UsedRange.Rows.Count
Do While Count <= LastRow
If Not IsEmpty(ActiveSheet.Cells(Count,4)) Then
Range(Cells(Count,4).Address).Offset(1,0).EntireRow.Insert
Cells(Count + 1,1).Value = Cells(Count,4).Value
Cells(Count,4).Value = ""
Count = Count + 2
LastRow = LastRow + 1
Else
Count = Count + 1
End If
Loop
End Sub
子转换器Coldtorow()
'请注意,此代码是专门为D列编写的,但可以根据需要通过更改指定的列进行调整
按长度计算,最后一行按长度计算
计数=1
LastRow=ActiveSheet.UsedRange.Rows.Count
你能解释得更清楚些吗?输出是什么?第一个录制的宏我得到了这个。使用第二个并在数组中添加更多数据,我得到了这个结果。在此基础上,您应该编辑您的问题,将这些图片添加到评论中,而不是将它们保留在评论中,因为我并没有代表,但还行。非常感谢@RGA。您在这里为我节省了很多时间。如果您可以编辑Count