2015-10-06 74 views
0

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

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 

我怎样才能解决这个问题?(从代码中你可以看到,我很初学者:)))

干杯

+0

为什么宏,如果你在Excel需要,您可以使用删除重复和排序以任何顺序? –

+0

感谢您的回复。这些不是重复的行。只有一列中的值是重复的。 – Mike

回答

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 

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

0

的范围(“space_1(N)”)是无效。范围对象的Arg应该是像“A1”这样的列名称,您可以在代码中使用Range(“A”& 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