Excel - 根据工作表2中的值从工作表1中删除行

时间:2015-08-19 09:42:31

标签: excel vba excel-vba

情境:

第1页和第34页;客户记录"包含c的客户详细信息。行中的4000个客户(即姓名,电话号码,电子邮件,地址),每行一个客户端。

表2"无效数字"只包含一列,这是一个电话号码列表,现在已知无效且不再有效。

要求:

自动浏览工作表1并(完全)删除任何包含电话号码(即第2列)的客户记录(即行),该电话号码与表2和#34中列出的任何电话号码相匹配;#34号码无效;

结果:

工作表1将是已删除所有包含无效数字的记录的客户记录列表。

我在StackOverflow上找到了以下代码,但问题是我不知道如何编程或使用它?!我正在使用Excel for Mac 2011。

Public Sub delete_selected_rows()
    Dim rng1 As Range, rng2 As Range, rngToDel As Range, c As Range
    Dim lastRow as Long

    With Worksheets("Sheet1")
        lastRow = .Cells(.Rows.Count,"A").End(xlUp).Row  
        Set rng1 = .Range("A1:A" & lastRow)
    End With

    Set rng2 = Worksheets("Sheet2").Range("A:A")

    For Each c In rng1
        If Not IsError(Application.Match(c.Value, rng2, 0)) Then
            'if value from rng1 is found in rng2 then remember this cell for deleting
            If rngToDel Is Nothing Then
                Set rngToDel = c
            Else
                Set rngToDel = Union(rngToDel, c)
            End If
        End If
    Next c

    If Not rngToDel Is Nothing Then rngToDel.EntireRow.Delete
End Sub

有人能告诉我如何做到这一点,或者如果上面的代码对我的工作是正确的,如何将其实际输入Excel并运行它?我只是从打开的工作簿开始,然后坐在那里的两张纸!

由于

1 个答案:

答案 0 :(得分:0)

以上代码可以满足您的要求。但是你需要根据你的情况改变一小部分你的手机没有在sheet1的B列中,所以你需要改变波纹管部分
Set rng1 = .Range("B2:B" & lastRow)

您必须在Visual Basic编辑器中粘贴代码才能在Mac中打开,请参阅此链接Click here