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