2011-07-21 97 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