通过VBA在excel中插入新行

时间:2015-10-06 04:24:30

标签: excel excel-vba vba

我有一个Excel电子表格。在电子表格的一列中,我有一个代码列表(数字)。这些代码(数字)从最高值到最低值排序。(其中一些代码已经重复。例如,我有三个连续的代码为1001200的代码行)。我想在每个代码之间插入新行(如果有重复代码,我只需要一个新行(例如,我需要一个新行,1001200而不是3行)。 我写了以下代码,但它不起作用。

Sub addspace()
   Dim space_1(5000), Space_2(5000)

   For n = 1 To 5000
   Debug.Print space_1(n) = Worksheets("sheet3").Cells(1 + n, 1).Value
   Debug.Print Space_2(n) = Worksheets("sheet3").Cells(2 + n, 1).Value
   Next
   For n = 1 To 5000
   If space_1(n) <> Space_2(n) Then

   Range("space_1(n)").EntireRow.Insert

   End If
   Next
   End Sub

我该如何解决? (从代码中你可以看出我是如此初学者:)))

干杯

2 个答案:

答案 0 :(得分:0)

要在每个唯一值之间插入一个空行,请尝试:

Option Explicit

Public Sub addspace()
    Dim i As Long

    Application.ScreenUpdating = False
    With Worksheets("sheet3")
        For i = 5000 To 2 Step -1
            While .Range("A" & i - 1) = .Range("A" & i)
                i = i - 1
            Wend
            .Rows(i).Insert Shift:=xlDown
        Next
    End With
    Application.ScreenUpdating = True
End Sub

它从结束行开始向上移动,跳过重复行

答案 1 :(得分:0)

范围(“space_1(n)”)无效。范围对象的Arg应该是列名“A1”,您可以在代码中使用Range(“A”&amp; n).EntireRow.Insert。但我推荐我的代码。

请尝试,

Sub addspace()
Dim n As Integer

For n = 1 To 5000
    If Worksheets("sheet3").Cells(n, 1).Value <> Worksheets("sheet3").Cells(n + 1, 1).Value Then
        Worksheets("sheet3").Cells(n + 1, 1).EntireRow.Insert
        n = n + 1
    End If
Next
End Sub