我正在尝试在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
答案 0 :(得分:1)
您无法直接将单元格与范围进行比较。
使用匹配功能:
If IsError(Application.Match(Cells(i,2), CompRow, 0)) Then
Rows(i & ":" & i).EntireRow.Delete
End If