如果在A列中有另一行具有相同值且该行在c中具有值,则删除行

时间:2013-11-08 22:12:10

标签: excel vba excel-vba duplicates row

我正在尝试编写一个执行以下操作的宏:

  1. 它取A列的值 - 每行的行数(从下到上)=初始行
  2. 检查A列中是否有另一行具有相同的值
  3. 如果是:它需要第一场比赛
  4. 检查匹配的行是否包含C列中的内容
  5. 如果是:它删除了第一行
  6. 我有以下但它不起作用,现在似乎还有错误“无法获取工作表函数类的Match属性。

    Option Explicit
    
    Sub Testing()
    
    Dim x               As Long
    Dim y               As Long
    Dim LastRow         As Long
    Dim MatchedRow      As Long
    Dim RowValue        As String
    
    LastRow = Range("A999999").End(xlUp).Row
    
    For x = LastRow To 1 Step -1
    
    RowValue = Range("A" & x).Value
    
    If Application.WorksheetFunction.CountIf(Range("A1:A" & x), Range("A" & x).Text) > 1 Then
        MatchedRow = Application.WorksheetFunction.Match(RowValue, Range("A1:A" & x), 0)
        If Range("C" & MatchedRow).Value <> "" Then
            Range("A" & x).EntireRow.Delete
        End If
    End If
    
    Next x
    
    End Sub
    

    我希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:3)

发生错误是因为RowValue被声明为字符串。如果列A有数字,MATCH函数将返回错误(除非数字被格式化为文本)。

Dim RowValue As String更改为Dim RowValue As Variant,它将适用于所有数据类型