0

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

  1. 它取 A 列的值 - 每行的行(从下到上)= 初始行
  2. 它检查A列中是否有另一行具有相同的值
  3. 如果是:它需要第一场比赛
  4. 它检查匹配的行是否在 C 列中写入了某些内容
  5. 如果是:它删除初始行

我有以下但它不起作用,现在似乎还有错误“无法获取工作表函数类的匹配属性。

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

我希望有人能帮帮忙。

4

2 回答 2

3

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

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

于 2013-11-08T22:49:19.147 回答
0

似乎您在上面发布了答案,但在相关说明中,您可以通过将WorksheetFunction 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
于 2015-08-26T22:27:48.920 回答