2

可能重复:
在excel中每X行插入一行

我有一大组数据(假设它从 B5 到 J500,假设这个范围被命名为 rngOutput)。我正在尝试遍历这些数据并每x行添加 2 个空行,其中 x 是用户指定的数字。例如,如果 x 为 10,则每 10 行应插入 2 个新行。从概念上讲,这是应该工作的代码:

For i = 1 to Number of rows in rngOutput
   If i mod x = 0 Then
        Insert 2 Rows
   End If
Next i

但是,当您插入 2 个新行时,行数会发生变化并且公式会混乱(即它在前 10 行之后添加 2 行,然后在接下来的 8 行之后添加另外 2 行(因为它计算了您添加为实际行),然后在接下来的 6 行之后再添加 2 行,依此类推。

我试图找出一种方法来干净地完成每 x 行添加 2 个新行以避免上述问题。

感谢您的帮助,如果您需要更多说明,请告诉我!

4

2 回答 2

5

这就像克里斯的唯一充实。插入或删除行时,您必须从底部开始:

Sub InsertXRowsEveryYRows_WithMeaningfulVariableNames()
Dim NumRowsToInsert As Long
Dim RowIncrement As Long
Dim ws As Excel.Worksheet
Dim LastRow As Long
Dim LastEvenlyDivisibleRow
Dim i As Long

NumRowsToInsert = 2     'any number greater than 0
RowIncrement = 10       'ditto
Set ws = ActiveSheet
With ws
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    LastEvenlyDivisibleRow = Int(LastRow / RowIncrement) * RowIncrement
    If LastEvenlyDivisibleRow = 0 Then
        Exit Sub
    End If
    Application.ScreenUpdating = False
    For i = LastEvenlyDivisibleRow To 1 Step -RowIncrement
        .Range(i & ":" & i + (NumRowsToInsert - 1)).Insert xlShiftDown
    Next i
End With
Application.ScreenUpdating = True
End Sub
于 2012-12-29T23:15:19.220 回答
4

从范围底部开始计数

For i = Number of rows in rngOutput to 1 step -1
   If i mod x = 0 Then
        Insert 2 Rows
   End If
Next i
于 2012-12-29T23:03:11.943 回答