Excel Vba Index Совпадение нескольких критериев для возврата Точное совпадение - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть код VBA, который я буду использовать для поиска значений, которые точно соответствуют 2 критериям.В большинстве случаев VBA возвращает ожидаемые значения, но если я изменю критерии или введу критерии, которые не входят в диапазоны, в которые я смотрю, VBA возвращает неправильное значение.Если критерии не выполняются, я бы предпочел, чтобы текст «CriteriasNotMet» отображался как результат в H2

Мой код:

Sub IndexMatch()
myName = [F2]
mySubject = [G2]
mark = Application.WorksheetFunction.Index([StMark], _
Application.WorksheetFunction.Match(myName, ([StName]), 0) + _
Application.WorksheetFunction.Match(mySubject, ([StSubject]), 0) - 1)

[H2] = mark

End Sub

Может кто-нибудь объяснить, где я делаю что-то не так??

Спасибо тебе и Боже, как долго

Питер Дания

1 Ответ

0 голосов
/ 26 апреля 2018
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
...