我正在尝试环回Excel 365中工作表中的数据,并在满足某些条件时,删除该条件适用的行。直到我将工作簿VLookUp函数用作最终条件的一部分,一切都很好-如果任何条件为真或VLookup成功,则需要删除该行(VLookUp中的错误意味着该行应为保持)。我目前拥有的是:
On Error Resume Next
divFile = "C:\....\workbook.xlsx"
Set divWorkbook = Workbooks.Open(divFile)
Set divRange = divWorkbook.Worksheets("Sheet3").Range("B2:B274")
For i = lastRow To firstDataRow Step -1
If Condition1 Or _
Condition2 Or _
WorksheetFunction.VLookup(Cells(i, lcCol).Value, divRange, 1, False) Then
If Err.Number = 0 Then
Rows(i).Delete
End If
End If
Next i
上面的内容跳到了另一个工作簿(divWorkbook),并且没有执行预期的工作。我将如何专注于当前的工作簿和工作表,并在vlookup成功时(而不是失败时)应用删除?
谢谢, 本
答案 0 :(得分:2)
我将放下On Error Resume Next
,而改用Application.Match
,测试返回值是否有错误。
另外,正如@ cybernetic.nomad所指出的那样,请更加明确地说明您正在处理的是哪种工作表。
Dim shtData As Worksheet
Set shtData = ActiveSheet ' or whatever
divFile = "C:\....\workbook.xlsx"
Set divWorkbook = Workbooks.Open(divFile)
Set divRange = divWorkbook.Worksheets("Sheet3").Range("B2:B274")
For i = lastRow To firstDataRow Step -1
If Condition1 Or Condition2 Or _
Not IsError(Application.Match(shtData.Cells(i, lcCol).Value, divRange, 0)) Then
shtData.Rows(i).Delete
End If
Next i