【问题标题】:Insert row every X rows in excel在excel中每X行插入一行
【发布时间】:2018-08-21 07:10:09
【问题描述】:

我有一长串代码,例如 008.45 等,需要多行文字来解释它们。我有代码列表,我想知道如何自动插入一行,比如第五行。下面的例子

1          
2
3
4
5
6
7
8
9
10...
100

每五行我想插入给定数量的我选择的行。我怎样才能做到这一点?谢谢

【问题讨论】:

    标签: excel excel-2007 vba


    【解决方案1】:

    使用从第 1 行到第 100 行的范围进行测试。

    Sub InsertRows()
    For i = Sheet1.UsedRange.Rows.Count To 1 Step -5
        For j = 0 To 4
            Sheet1.Rows(i).Insert
        Next
    Next
    End Sub
    

    【讨论】:

    • 效果很好。谢谢。我愿意,但我还不能给你上船!
    • @dzilla NP,你会到达那里的 :)
    • 请给我一份! +1 唯一完整的答案。
    【解决方案2】:

    您需要使用如下循环:

    for i=1 to 100 step 1
      if i mod 5 = 0 then
         // Insert the rows
      end if
    next i
    

    【讨论】:

    • 感谢您的帮助,我可以在单元格中输入这个吗?或者我需要输入一个特定的区域吗?
    • 它是 VBA - 所以你必须输入后面的代码。我假设您已将此标记为您熟悉的 vba 问题?要进入代码编辑器视图 ALT+F11 将带您到那里,然后您可以创建函数/代码等。mvps.org/dmcritchie/excel/getstarted.htm 这将帮助您了解基础知识。
    • 如果你用这个在第 5 行插入 5 行,在我看来,下一个插入的行(在第 10 行)将在新插入的行之后,依此类推。
    • 我无法想象在任何情况下添加的行都会被计算在内。这种情况可能会持续很长时间。
    • @Andy Paton 我已经这样做了,是的,你的计数会改变,否则你怎么知道在哪里插入行? if i mod 5 = 0 Then InsertRowsAti
    【解决方案3】:

    这对我很有用:

    Sub add_rows_n()
    
    t = 6
    Do Until Cells(t, "A") = ""
    Rows(t).Insert
    t = t + 6
    Loop
    
    End Sub
    

    【讨论】:

      【解决方案4】:

      要在 myRowNumber 行插入一行,您的 VBA 代码将如下所示:

          Rows(myRowNumber).Select
          Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      

      您可以将其纳入安迪的回答中。

      【讨论】:

        【解决方案5】:

        或者你可以像这样使用模数函数:

        =IF(MOD(ROW()-1,7),"",A1)
        

        在 B1 中,其中 A1 是数据集的第一个数字。

        注意:将 7 更改为 n 以获取每个第 n 行。

        【讨论】:

          【解决方案6】:

          例如,如果我想要在我的数据行之间有 5 条记录,我会使用 Mod 6,但是,您需要允许这些新行,因为它们会影响使用的范围计数!为此,您需要将要插入的行数添加到循环的长度中(例如,绝对值 of(numberOfRows/YourModValue))。

          执行此操作的代码:

          Sub InsertRows()
          For i = 1 To Sheet1.UsedRange.Rows.Count + Abs(Sheet1.UsedRange.Rows.Count / 6) Step 1
              If i Mod 6 = 0 Then
                  Sheet1.Rows(i).Insert
                  Cells(i, 1).Value = "Whatever data you want in your new separator cell"
              End If
          Next i
          End Sub
          

          【讨论】:

            【解决方案7】:

            这是我最终得到的代码。请注意,FOR 循环实际上是从 UsedRange 的末尾开始向后运行的。 Mod 5 每 5 行插入一行。

            For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
                If (i - 1) Mod 5 = 0 Then
                    ActiveSheet.Rows(i).Insert Shift:=xlDown
                End If
            Next
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-29
              • 1970-01-01
              • 1970-01-01
              • 2011-03-05
              • 2016-07-16
              • 2012-05-06
              • 1970-01-01
              相关资源
              最近更新 更多