【发布时间】:2020-06-01 17:02:02
【问题描述】:
我有 2 个工作表,sheet1 和 sheet2。由于两张表中有共同的行,我想删除 sheet1 中可以在 sheet2 中找到的行。我只希望为具有条件“Y”的列删除工作表 1 中的行。我使用 sheet2 中的条件 Y 过滤了列,并选择了范围作为可见范围。所以 sheet1 中行的删除要根据 sheet2 中的可见范围。但是,在 sheet1 中删除行是根据 sheet2 删除每个出现的事件,而不是根据可见范围。我有下面的代码,但它不工作。有人可以让我知道我做错了什么吗?谢谢。
lastrow = Sheets("Sheet1").Cells.Find("*", searchorder:=xlByRows, SearchDirection:=xlPrevious).Row
With Sheets("Sheet2")
.AutoFilterMode = False
.Range("B1").AutoFilter Field:=2, Criteria1:="Y"
End With
With Sheets("Sheet1")
For i = lastrow To 1 Step -1
If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Sheet2").Range("A1:B" & lastrow).SpecialCells(xlCellTypeVisible), 0)) Then
.Rows(i).Delete
End If
Next i
End With
【问题讨论】:
-
如果第 1,3 和 5 行是 Sheet2 中唯一可见的行,您希望在 Sheet1 中删除这些相同的行吗?
-
两个文件是否具有相同的行结构?我的意思是相同数量的行,位于相同的位置?
-
不,两个文件都有随机列出的行。 sheet1 中要删除的行将基于 sheet2 中的 2 个条件。一个条件是列中的值等于 Yes,另一个条件是列中的值等于唯一标识符。