我正在尝试检查当前行中包含唯一ID(多列的串联)的单元格,并将其与其唯一ID上方的行进行比较。如果值相同,我想复制当前行并将此副本插入位于当前行上方两行的新行中。如果ID不相同,我想什么都不做,然后移到工作表的下一行。
下面的代码运行没有错误,并且在找到ID匹配之前正常工作。代码按照我的要求进行复制和插入,但它的作用就像是为同一行再次启动“IF”语句(“next”不会提前分析下一行)。所以我最终获得了第一行的无限复制和插入,其中有一个匹配的唯一ID到它上面的行。
Sub CopyAndInsert
Dim LastRow As Long
LastRow = Worksheets("Orders").Range("A" & Rows.Count).End(xlUp).Row
Set SelectionRNG = Worksheets("Orders").Range("A2:CX" & LastRow)
For Each rngrow In SelectionRNG.Rows
rngrow.Copy
If rngrow.Cells(1, 102) = rngrow.Cells(0, 102) Then 'checks if row CX is equal to the row above it (same column)
rngrow.Cells(2, 1).Offset(-2, 0).EntireRow.Insert
End If
Next
End Sub
请注意,如果行在唯一ID列(CX)中不匹配,则“next”确实按预期工作并继续到下一行。只有在ID匹配并插入复制的行时才会出现不提前的问题。
提前感谢您的任何帮助!
答案 0 :(得分:1)
将循环绑定到变量并手动将其增加1以跳过添加的行似乎有效:
Sub CopyAndInsert()
Dim lastRow As Long, x As Long
lastRow = Worksheets("Orders").Range("A" & Rows.Count).End(xlUp).Row
For x = 3 To lastRow
If Cells(x, 102) = Cells(x - 1, 102) Then
Cells(x - 1, 1).EntireRow.Insert
Range("A" & x + 1 & ":" & "CX" & x + 1).Copy Cells(x - 1, 1)
x = x + 1
End If
Next x
End Sub