[英]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.