在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