【问题标题】:Delete Rows Based on Conditional Comparison in Excel VBAExcel VBA中基于条件比较删除行
【发布时间】:2011-07-21 22:26:33
【问题描述】:

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

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

在工作表 2 (tech_translate) 中,第 1 列中还有一组值。

基本上,我希望发生以下情况:

检查库存数据第 2 列中所有单元格中的值,

将这些值与 tech_translate 中第 1 列单元格中的值匹配,

如果 tech_translate 中有匹配的值,则不对 inventory-data 中的该行执行任何操作,

如果 tech_translate 中没有匹配的值,则删除 inventory-data 中的整行。

我希望到目前为止这是有道理的。为了提供帮助,这是我当前的代码,它显示了我卡在哪里。我不断收到类型不匹配错误 - 我知道原因,但不知道如何修复它或我需要做什么才能使其正常工作。

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您不能直接将单元格与范围进行比较。

    使用匹配功能:

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

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 2020-11-26
      • 2018-11-25
      • 2018-03-14
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多