Excel 在VLOOKUP周围循环以在成功时删除行
我尝试在Excel 365的工作表中循环返回数据,当满足某些条件时,删除该条件适用的行。在我使用工作簿VLookUp函数作为最终条件的一部分之前,一切都很好-如果任何条件为真或VLookUp成功,我需要删除该行(VLookUp中的错误意味着该行应该保留)。我目前拥有的是:Excel 在VLOOKUP周围循环以在成功时删除行,excel,vba,vlookup,Excel,Vba,Vlookup,我尝试在Excel 365的工作表中循环返回数据,当满足某些条件时,删除该条件适用的行。在我使用工作簿VLookUp函数作为最终条件的一部分之前,一切都很好-如果任何条件为真或VLookUp成功,我需要删除该行(VLookUp中的错误意味着该行应该保留)。我目前拥有的是: On Error Resume Next divFile = "C:\....\workbook.xlsx" Set divWorkbook = Workbooks.Open(divFile) Set divRange = d
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成功时,我如何将注意力集中在当前工作簿和工作表上,并应用删除操作,而不是在vlookup失败时应用删除操作
谢谢,
Ben我会在下一步的错误恢复中删除
,而是使用应用程序.Match
,测试返回值是否有错误
此外,正如@controlnetic.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
我会在下一步的错误恢复中删除,改为使用应用程序.Match
,测试返回值是否有错误
此外,正如@controlnetic.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
尝试指定要从中删除行的工作表:例如:工作表(“Sheet1”)。行(i)。删除
谢谢。我确实让它更具体。请尝试指定要从中删除行的工作表:例如:工作表(“Sheet1”)。行(I)。删除
谢谢。我确实说得更具体了。谢谢你的帮助。我根据你的反应制定了解决方案,它奏效了。我确实添加了一行shtData。激活以保持或至少将焦点返回到当前工作表。感谢您的帮助。我根据你的反应制定了解决方案,它奏效了。我确实添加了一行shtData.Activate
,以保持或至少将焦点返回到当前工作表。