我试图检查当前行中包含唯一ID(连续的几列)的单元格,并将它与其唯一ID上方的行进行比较。如果值相同,我想复制当前行并将此副本插入位于当前行上方两行的新行中。如果ID不一样,我不想做任何事情,并移动到工作表上的下一行。当IF语句为真时,“Next”不能在循环中工作
下面的代码运行没有错误,并且正常工作,直到找到ID匹配。代码根据我的需要复制和插入,但它的行为就像它在同一行再次启动“IF”语句(“下一个”不会分析下一行)。所以我最终得到无尽的副本并插入第一行,并在其上面有一个匹配的唯一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)中不匹配,则“下一个”按预期工作并继续到下一行。只有当ID匹配并插入复制的行时,才会发生不前进的问题。
在此先感谢您的帮助!
因为你在那里插入行,并随后改变循环的初始范围。 – cyboashu
插入或删除行时,最好从底部到顶部遍历列表。 –
在if循环中写'Next'。在外面也是 –