【问题标题】:Inserting blank rows every x number of rows [duplicate]每x行插入空白行[重复]
【发布时间】:2012-12-30 13:50:11
【问题描述】:

可能重复:
Insert row every X rows in excel

我有一大组数据(假设它从 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 行(因为它计算了这 2您添加为实际行的新行)然后在接下来的 6 行之后再添加 2 行,等等。

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

感谢您的帮助,如果您需要进一步说明,请告诉我!

【问题讨论】:

标签: vba excel


【解决方案1】:

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

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

【讨论】:

  • 其实我猜它和 Chris 和你的原版有点不同,因为它没有使用 Mod。
  • +1 更高效地关闭代码ScreenUpdating
  • @brettdj,谢谢!我意识到虽然我不了解仅插入每 x 行的部分。在添加时,我发现代码应该只确定最后一个可均匀整除的行并按指定的行增量向后退,这样可以减少循环。我想我现在完成了:)。
【解决方案2】:

从范围底部开始计数

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

【讨论】:

  • 假设有 500 个条目,每 6 行指定一次使用,那么前 2 行后面将有 2 行,而前 6 行后面应该有 2 行。
  • @Max_1234 试试看,它之所以有效,是因为它会在您的范围内倒退,因此插入的行不会因为放置在被检查的行下方而导致计算失败。这是正确的答案。
  • 只有在行数完全可以被用户指定的数字整除的情况下才有效?如果有余数,它将跳过正确的行数,但顶行的间距不正确,因为我需要从顶部算起 2 行。
  • @max 不,它不会。试试看!
  • 太好了,谢谢!感谢帮助
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多