将行的一部分移动到第二行,将行的一部分移动到第三行

时间:2014-05-03 03:37:24

标签: excel vba

我有一个问题,我不知道是否有出路。我有一个需要操作的大型电子表格(8000行),其中数据被放入其他列时应该放入第2行和第3行。每个条目跨越一个大行而不是3个小行。所以现在我需要在每个现有行之后创建两个新行。然后获取C-F列中的数据,并将其移动到下一行(列A-D)。然后取G-H列并将其移动到系列中的第3行(列A-B)。

所以一个例子是:

原始数据:

A1  A2  A3  A4  A5  A6  A7  A8  
B1  B2  B3  B4  B5  B6  B7  B8  

结果数据:

A1  A2  
A3  A4  A5  A6  
A7  A8

B1  B2  
B3  B4  B5  B6  
B7  B8

依此类推,直到8000行变为24000(或32000)行。我有什么帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以用它。但是可能需要一些时间才能完成。它遍历8000行,每行插入2行数据,并将原始数据复制到适当的行:

Sub main()
Dim i As Integer
Dim intRow As Integer
intRow = 2
Application.ScreenUpdating = False
For i = 1 To 8000
    Rows(intRow).Insert
    Cells(intRow, 1) = Cells(intRow - 1, 3)
    Cells(intRow, 2) = Cells(intRow - 1, 4)
    Cells(intRow, 3) = Cells(intRow - 1, 5)
    Cells(intRow, 4) = Cells(intRow - 1, 6)
    Cells(intRow - 1, 3) = ""
    Cells(intRow - 1, 4) = ""
    Cells(intRow - 1, 5) = ""
    Cells(intRow - 1, 6) = ""
    intRow = intRow + 1
    Rows(intRow).Insert
    Cells(intRow, 1) = Cells(intRow - 2, 7)
    Cells(intRow, 2) = Cells(intRow - 2, 8)
    Cells(intRow - 2, 7) = ""
    Cells(intRow - 2, 8) = ""
    intRow = intRow + 2
Next i
Application.ScreenUpdating = True
End Sub