繁体   English   中英

通过VBA在Excel中插入新行

[英]Inserting new row in excel by 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

我该如何解决? (从代码中您可以看到我是一个初学者:)))

干杯

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

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

它从末行开始并向上移动,跳过重复项

Range(“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM