我正在尝试创建一个宏,它将查看工作表2上的列表并在工作表1上查找相同的值。如果/当它找到它时,它将删除工作表1上的行。然后它将结束于表2的机器人。任何建议都会有所帮助,谢谢!
答案 0 :(得分:0)
执行此操作的最佳方法是遍历工作表2上的值。在每个值上,检查它是否存在于工作表1上,如果存在,则删除该行。
关键在于如何构建循环,以及如何规划意外情况。如果在表1中多次列出相同的值,您的代码如何处理?如果表1中有空白点怎么办?
我的建议是使用内置函数,例如.Find
方法。这可以跳过意外的空间,并且可以轻松地多次调用。通过在VBA编辑器中按 F1 可以找到有关此方法和其他方法的更多信息,或者您可以查看here。
正如已经指出elsewhere,避免使用.Select
也是一种很好的做法。
为了帮助您入门,下面概述了可能的内容,查看Sheet2第1行到第3行中的信息,并在Sheet1第1行到第10行中替换这些值:
Public Sub delete_selected_rows()
'look at sheet2, A1 through A3 for search values
For Each search_value In Worksheets(2).Range("A1:A3")
'as long as there is something to delete...
Do While Not Worksheets(1).Range("A1:A10"). _
Find(search_value.Value, lookat:=xlWhole) Is Nothing
'...delete that row
Worksheets(1).Range("A1:A10").Find(search_value.Value, _
lookat:=xlWhole).EntireRow.Delete
Loop
Next
End Sub