2011-07-21 58 views
2

我想在Excel中创建VBA中的宏,如果它不包含另一个工作表中的范围中列出的值,将删除1表的整个行。下面是设置:基于Excel中的条件比较删除行VBA

在片材1(库存数据),也有在第2列

在表2(tech_translate)的一组值,也有在第1列的一组值。

基本上,我想以下情况发生:在所有那些在库存数据2列单元格的

检查值,

匹配起来反对的值是在细胞在tech_translate的第1列中,

如果在tech_translate匹配值,请在库存数据没有到该行,

如果没有在tech_translate匹配的值,然后删除库存数据的整个行。

我希望这是有道理的。为了帮助,这里是我目前的代码,显示我卡住的地方。我一直得到一个类型不匹配的错误 - 我知道为什么,但不知道如何解决它或我需要做什么才能使其工作。

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 

回答

1

您无法直接比较单元格与Range。

使用Match功能:

If IsError(Application.Match(Cells(i,2), CompRow, 0)) Then 
    Rows(i & ":" & i).EntireRow.Delete 
End If