Excel VBA: не удается получить совпадение, ошибка " не удается получить свойство Match класса WorksheetFunction"

из любви ко всему хорошему, я не могу заставить это работать. Я продолжаю получать ошибку, упомянутую выше.

У меня есть эта таблица, и я пытаюсь выяснить, соответствует ли код его собственному подкоду где-то в другом столбце, однако он ошибается. Ваша помощь очень ценится.

enter image description here

Sub testing()

    Dim m1 As long
    Dim myrange As Range

    Set myrange = Worksheets("Sheet1").Range("B2:B23")

    For e = 2 To 23
        m1= Application.WorksheetFunction.Match(Cells(e, 1).Value, myrange, 0)

        If m1 > 0 Then
            Cells(e, 3).Value = "Yes"
        Else
            Cells(e, 3).Value = "No"
        End If
    Next e

MsgBox "Complete!"

End Sub

2 ответов


использовать Application.Match функция которая учитывает лучшую способность уловить ошибки. При использовании WorksheetFunction.Match, когда матч не найден, он возвращает ошибку, которая является то, что вы испытываете.

If Not IsError(Application.Match(Cells(e, 1).Value, myrange, 0)) Then
    'Do stuff when the match is found
    Cells(e, 3).Value = "Yes"
Else:
    Cells(e, 3).Value = "No"
End If

вы также можете потенциально использовать CountIf функция:

If Application.WorksheetFunction.CountIf(myRange, Cells(e,1).Value) > 0 Then
    Cells(e,3).Value = "Yes"
Else:
    Cells(e,3).Value = "No"
End If

ни один из этих подходов не требует от вас использовать m1 переменная, вы можете назначить эту переменную в True часть If/Then заявление, если вам нужно определить здесь матч.


Как и другой вариант, это также можно сделать, поместив формулу ниже в ячейку C2 и перетащив ее в C23.

=IF(COUNTIF($A:$A,B2)>=1,"YES","NO")