прошу сразу не бить ногами. И не зафлуживать тему.
Есть реальная проблема, которую нужно решить.
Function track(y, z, q, s)
If s = 1 And y > 1 And y < 29 And z > 1 And z < 29 Then
track = 1.5
End If
If q > 2.5 Then
track = 2.5
End If
If q < 2.5 Then
track = 1.5
End If
If s > 1 And y > 1 And y < 21 And z > 1 And z < 21 Then
track = 1.5
End If
If q > 2.5 Then
track = 2.5
End If
If q < 2.5 Then
track = 1.5
End If
If s = 1 And y > 29 And y < 40 And z > 29 And z < 40 Then
track = 2.5
End If
If q > 2.5 Then
track = 4
End If
If q < 2.5 Then
track = 2.5
End If
If s > 1 And y > 21 And y < 33 And z > 21 And z < 33 Then
track = 2.5
End If
If q > 2.5 Then
track = 4
End If
If q < 2.5 Then
track = 2.5
End If
If s = 1 And y > 40 And y < 53 And z > 40 And z < 53 Then
track = 4
End If
If q > 2.5 Then
track = 6
End If
If q < 2.5 Then
track = 4
End If
If s > 1 And y > 33 And y < 44 And z > 33 And z < 44 Then
track = 4
End If
If q > 2.5 Then
track = 6
End If
If q < 2.5 Then
track = 4
End If
If s = 1 And y > 53 And y < 67 And z > 53 And z < 67 Then
track = 6
End If
If q > 2.5 Then
track = 10
End If
If q < 2.5 Then
track = 6
End If
If s > 1 And y > 44 And y < 56 And z > 44 And z < 56 Then
track = 6
End If
If q > 2.5 Then
track = 10
End If
If q < 2.5 Then
track = 6
End If
If s = 1 And y > 67 And y < 91 And z > 67 And z < 91 Then
track = 10
End If
If q > 2.5 Then
track = 16
End If
If q < 2.5 Then
track = 10
End If
If s > 1 And y > 56 And y < 76 And z > 10 And z < 76 Then
track = 10
End If
If q > 2.5 Then
track = 16
End If
If q < 2.5 Then
track = 10
End If
If s = 1 And y > 91 And y < 121 And z > 91 And z < 121 Then
track = 16
End If
If q > 2.5 Then
track = 25
End If
If q < 2.5 Then
track = 16
End If
If s > 1 And y > 76 And y < 87 And z > 76 And z < 87 Then
track = 16
End If
If q > 2.5 Then
track = 25
End If
If q < 2.5 Then
track = 16
End If
If s = 1 And y > 121 And y < 160 And z > 121 And z < 160 Then
track = 25
End If
If q > 2.5 Then
track = 35
End If
If q < 2.5 Then
track = 25
End If
If s > 1 And y > 87 And y < 115 And z > 87 And z < 115 Then
track = 25
End If
If q > 2.5 Then
track = 35
End If
If q < 2.5 Then
track = 25
End If
End Function
Вот макрос, который работает, но проблема в том, что при соблюдении всех условий в ячейках y, z, q, s он продолжает работать до последнего значения. В данном случае это 25.
Как это исправмть? по идее, должно быть так, что если
If s = 1 And y > 1 And y < 29 And z > 1 And z < 29 Then
track = 1.5
End If
If q > 2.5 Then
track = 2.5
End If
If q < 2.5 Then
track = 1.5
End If
все условия соблюдаются из первой строки, то и значение должно вернуться 1.5
Кто нить, помогите разобраться. Может есть идеи как исправить этот макрос и сделаю его более компактным, но при этом код оставить открытым, что бы можно было вносить дополнения.
Ответить
|