Excel VBA: не удается получить совпадение, ошибка " не удается получить свойство Match класса WorksheetFunction"
из любви ко всему хорошему, я не могу заставить это работать. Я продолжаю получать ошибку, упомянутую выше.
У меня есть эта таблица, и я пытаюсь выяснить, соответствует ли код его собственному подкоду где-то в другом столбце, однако он ошибается. Ваша помощь очень ценится.

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")