Application.WorksheetFunction.FunctionHere
выдает ошибку времени выполнения, если что-то не так (например, не найдено совпадений), тогда как
Application.FunctionHere
вместо этого вернет либо результат, либо значение ошибки, которое вы можете проверитьиспользование IsError()
Это не поможет вам с настройкой -1
, поэтому вы не можете сделать все это в одной строке кода: вам нужно проверить каждое возвращаемое значение перед передачей их Index()
Sub IndexMatch()
Dim subIndx, nmIndx, mark
subIndx = Application.Match([G2], [StSubject], 0)
nmIndx = Application.Match([F2], [StName], 0)
If Not IsError(subIndx) And Not IsError(nmIndx) Then
mark = Application.Index([StMark], nmIndx, subIndx - 1)
Else
mark = "No Match"
End If
[H2] = mark
End Sub