Excel VBA 循环列并在重复值后插入行

问题描述 投票:0回答:1

我需要编写一个宏,它将在重复值之后添加一个空行(可以有两个以上的重复值)。

一旦我启动代码,它就会运行并且永远不会结束。

我不确定我应该在这里更改什么才能做到这一点。

感谢您的帮助:)

到目前为止,我尝试过这样的宏,但它陷入了do while循环

Sub dup()
Dim rw As Long
Dim val1, val2 As String
Sheets(4).Activate
Range("C3").Select

For rw = 3 To Range("C" & Rows.Count).End(xlUp).Row
val1 = Range("C" & rw).Value
val2 = Range("C" & rw + 1).Value

Do While IsNull(Range("C" & rw)) = False

If val2 \<\> val1 Then

    Rows(rw + 1).Insert Shift:=xlDown
    Else
    If val1 = val2 Then
       
    End If
End If
Loop
Next
End Sub
'''
excel vba loops for-loop do-while
1个回答
0
投票

您需要使用反向循环。还要避免使用

.Select/.Activate
。您可能想查看如何避免在 Excel VBA 中使用 Select

直接处理物体。这是你正在尝试的吗(未经测试)?

Option Explicit

Sub dup()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet4")

    Dim lRow As Long
    Dim i As Long
    
    With ws
        lRow = .Range("C" & .Rows.Count).End(xlUp).Row
    
        For i = lRow To 3 Step -1
            If .Range("C" & i).Value = .Range("C" & i).Value Then .Rows(i).Insert
        Next i
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.