基于Excel VBA中的条件比较删除行

时间:2011-07-21 22:26:33

标签: excel vba

我正在尝试在Excel中的VBA中创建一个宏,如果它不包含在另一个工作表的范围中列出的值,则会删除1个表的整个行。这是设置:

在表1(库存数据)中,第2列中有一组值。

在Sheet 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 个答案:

答案 0 :(得分:1)

您无法直接将单元格与范围进行比较。

使用匹配功能:

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