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

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

  1. 它取A列的值 – 每行的行数(从下到上)=初始行
  2. 它会检查列A中是否有另一个具有相同值的行
  3. 如果是,则需要第一场比赛
  4. 它检查匹配的行是否有列C写入的内容
  5. 如果是,则删除最初的行

我有以下,但它不工作,现在似乎也有错误“无法获得工作表function类的匹配属性。

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 

我希望有人能帮帮忙。

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

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

看来你有一个答案上面张贴,但在相关的说明,你可以通过更改该工作表 函数COUNTIF函数为一个COUNTIFS函数来收紧您的代码。

 If Application.WorksheetFunction.CountIf(Columns(1), Range("A" & x).Text, Columns(3), Chr(42)) > 1 Then Range("A" & x).EntireRow.Delete End If