在Excel VBA中基于条件比较删除行
我想在Excel中创buildVBA中的macros,如果它不包含在另一个工作表中的范围中列出的值将删除整个行的1个表。 这是设置:
在表1(库存数据)中,第2列中有一组值。
在工作表2(tech_translate)中,第1列中也有一组值。
基本上,我想要以下事情发生:
检查库存数据第2列中的所有单元格中的值,
将其与tech_translate中第1列单元格中的值匹配,
如果tech_translate中有匹配的值,则对inventory-data中的那一行不做任何操作,
如果tech_translate中没有匹配的值,则删除库存数据中的整个行。
我希望这是有道理的。 为了帮助,这里是我目前的代码,显示我卡住的地方。 我不断得到一个types不匹配的错误 – 我知道为什么,但不知道如何解决这个问题,或者我需要做什么才能使这个工作。
Sub deleteTechs() Dim LastRow As Long Dim CompRow As Range Dim i As Integer With Worksheets("tech_translate") Set CompRow = .Range("a2", .Cells(.Rows.Count, "A").End(xlUp)) End With LastRow = [A65536].End(xlUp).Row For i = LastRow To 1 Step -1 If Cells(i, 2) <> CompRow.Cells Then Rows(i & ":" & i).EntireRow.Delete Next i End Sub
你不能直接比较一个单元格到一个范围。
使用匹配function:
If IsError(Application.Match(Cells(i,2), CompRow, 0)) Then Rows(i & ":" & i).EntireRow.Delete End If