如何在大型电子表格中每三个单元格插入一行

时间:2015-12-03 23:53:19

标签: excel excel-vba excel-formula vba

希望你能帮助一个基本的Excel用户!

我有一个大约2000行的文件,我需要在每第三行后添加一行/ break。请问这是一种简单的方法吗?

非常感谢您的帮助和建议。

由于

6 个答案:

答案 0 :(得分:5)

没有VBA的快捷方式

  1. 在空列中添加此公式Goto并向下复制
  2. 按F5,Special .... FormulasErrors {{1}}(选择每隔三行)
  3. 插入行
  4. 步骤2如下所示

    enter image description here

答案 1 :(得分:4)

如果你想尝试一些VBA,这里是一个按钮点击事件,它将在每第三行进行插入。如果您有任何问题,请告诉我。

Private Sub CommandButton1_Click()
Dim ws As Excel.Worksheet
Dim lRow As Long
Dim lastRow As Long

    'Set the worksheet object to the sheet by name
    Set ws = Application.Sheets("Sheet1")

    'Set the row to start looping(inserting) rows at
    lRow = 4

    'Find the last row with a value in column A
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    'Account for the amount of rows that will be inserted.
    lastRow = lastRow + (lastRow * 0.33)

    'Loop through the worksheet from the start row to the last row
    Do While lRow <= lastRow

        'Insert a row
        ws.Rows(lRow).EntireRow.Insert

    'Increment the row to insert at on the next pass of the loop
    lRow = lRow + 4
    Loop

End Sub

答案 2 :(得分:2)

非vba方式是创建新列并插入编号

1
2
3
4
5
6
......

然后为空行,数字为3,6,9,....(假设你有2k记录,重复2k) 然后按数字列排序,然后删除列

enter image description here enter image description here

答案 3 :(得分:0)

如果您的内容相同或重复,则可以在任何基本文本编辑器中打开该文件并执行以下操作:

  1. 突出显示并复制前三行(包括第三个换行符)。
  2. 使用查找和替换(Mac上的TextEdit中的Opt-Cmd-F),将该内容复制到&#39; find&#39;字段以及“替换”字段字段。
  3. 在“&替换”中粘贴的内容末尾添加换行符。字段。
  4. 执行查找和替换操作。
  5. 这应该是这样的:

    item
    item
    item
    item
    item
    item
    item
    

    ......进入这个:

    item
    item
    item
    
    item
    item
    item
    
    item
    

    ......等等。

    这绝对不是最优雅的解决方案,但是在没有诉诸bash等文本解析脚本的情况下,我是最快/最简单的解决方案之一。

答案 4 :(得分:0)

假设数据从A1开始,在B1中开始并向下复制以适应(即超过ColumnA中填充的单元格的末尾):

=IF(MOD(ROW(),4)=0,"",OFFSET(A$1,3*INT((ROW()-1)/4)+MOD(ROW(),4)-1,))

答案 5 :(得分:0)

这是一个等同于上面Eric K.提出的解决方案的VBA。方向假设第1行中的列标题标签应该保持不变。

Sub insBlankFourthRow()
    Debug.Print Timer
    With Worksheets("Sheet3")
        .Columns(1).Insert
        With .Cells(1, 1).CurrentRegion  '<~~ original CurrentRegion
            With .Resize(.Rows.Count - 1, 1).Offset(1, 0)
                .Cells(1, 1) = 1
                .Cells.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
            End With
            With .Resize(Int(.Rows.Count / 3) + 1, 1).Offset(.Rows.Count, 0)
                .Cells(1, 1) = 3.5
                .Cells.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=3
            End With
        End With
        '
        With .Cells(1, 1).CurrentRegion  '<~~ new expanded CurrentRegion
            .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                        Orientation:=xlTopToBottom, Header:=xlYes
        End With
        .Columns(1).Delete
    End With
    Debug.Print Timer
End Sub

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~填充了Range.DataSeries method(我知道填充序列的最快方式)的“帮助”列可以在完成其目的后立即丢弃。

insert_blank_fourth_row

对图像的典型的2500行随机数据运行上面的时间为⁸/ 10 0秒。通过禁用Application.ScreenUpdating property和类似的开销,可以适度改善这段时间。