我正在尝试编写一个宏来检测单元格是否包含某个单词。如果是,则将整行复制到下一个空行。
在这种情况下,我尝试从“全长,60 秒,30 秒,15 秒,刺痛”中检测“60 秒”。
这是我得到的,但它只复制并粘贴最后一行合格的行,跳过第一次迭代。
Private Sub Button_Click()
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
If InStr(Cells(i, "G"), "60s") > 0 Then
Rows(i).Copy Rows(lr + 1)
End If
Next
End Sub
答案1
我看到的是,您的代码首先查看列A
以找到最后使用的行,然后将结果放入变量中lr
。然后,它遍历从2
到的每一行lr
(由列确定)A
并查看列中的值G
。如果值包含“60s”,则行将复制到行下方lr
。
让我们从这个数据集开始:
因此,很明显,你一直在复制之前的结果,因为lr
在开始时就已定义,并且不会改变。我们可以在行lr=lr+1
后使用 exact 来修复它Copy
。所以这将满足你的要求:
Private Sub Button_Click()
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
If InStr(Cells(i, "G"), "60s") > 0 Then
Rows(i).Copy Rows(lr + 1)
lr = lr + 1
End If
Next
End Sub