У вашей установки есть несколько различных проблем, которые необходимо решить, прежде чем найти истинное решение.
1) Вы пытаетесь оценить функцию MAX(), которая имеет только один аргумент. Функция IF() вернет значение меньше 6 или FALSE (0). Таким образом, либо ваша функция MAX() не имеет значения, ваша функция IF() не имеет значения, либо вы оставили один или несколько аргументов для любой из этих функций. В любом случае не существует определенного поведения для того, что делать, если в строке нет элемента меньше 6. Это повышает вероятность того, что myVar равен 0, что может привести к ошибочным результатам, поскольку:
2) Вы оставили третий аргумент в функции MATCH(). Поскольку ваш диапазон (в настоящее время) больше, чем ваш набор данных, когда вы оставите третий аргумент для MATCH(), он будет терпеть неудачу в любое время, когда данные будут организованы неправильно. Это особенно проблематично, когда вы возвращаете FALSE из вашей функции IF() (обрабатывается как 0 MAX()), потому что MATCH() сопоставляется с пробелами в ваших данных. Это означает, что размер вашего набора данных делает вопрос. Если бы у вас было все 13 строк, ваша первая строка (вероятно) не потерпит неудачу, но на самом деле она не будет соответствовать 5, которые вы хотите, если бы были значения НИЖЕ, чем 5 справа от столбца B. Кроме того, это потенциально приводит к сбою некоторых других строк, если вдруг в любом из столбцов и нет никаких значений, но для MATCH() нет пробелов, чтобы найти и обработать как 0.
Все, что сказано, без дальнейшего разъяснения того, как вы хотите очистить эти проблемы, предлагается предлагаемое решение (предполагающее, что вы хотите, чтобы первое вхождение вашего максимального значения было меньше 6, независимо от того, сколько вхождений там):
Sub MatchSub()
Dim myVar As Double
Dim myVarAdress As Long
Dim rngMaxT As Range
Dim wsFindMax As Worksheet
Set wsFindMax = ActiveSheet
For i = 1 To 10
myVar = Evaluate("=IF(A" & i & ":M" & i & "<6, A" & i & ":M" & i & ")")
Set rngMaxT = wsFindMax.UsedRange.Rows(i)
If rngMaxT(1, 1).Value = myVar Then
myvaraddress = 1
Else
Set rngMaxT = rngMaxT.Find(myVar, , xlValues, xlWhole, xlByRows, xlNext, False)
If rngMaxT Is Nothing Then
'There is no value in the row less than 6
Else
myVarAdress = rngMaxT.Column
End If
End If
Next i
End Sub