Страница: 1 |
Вопрос: Нужена помощь по доработке макроса. | Добавлено: 20.11.08 16:59 |
Автор вопроса: ![]() |
прошу сразу не бить ногами. И не зафлуживать тему.
Есть реальная проблема, которую нужно решить. 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 Кто нить, помогите разобраться. Может есть идеи как исправить этот макрос и сделаю его более компактным, но при этом код оставить открытым, что бы можно было вносить дополнения. |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() Вопросов: 18 Ответов: 186 |
Профиль | Цитата | #1 | Добавлено: 20.11.08 17:30 |
Уужос, Вы-то сами помните, за что отвечает каждый кусок?
Если y, z, q, s - это ячейки, то извините, надо тогда уж их значение переводить в число:
|
Номер ответа: 2 Автор ответа: ![]() ![]() ICQ: 148854696 Вопросов: 2 Ответов: 1 |
Профиль | Цитата | #2 | Добавлено: 20.11.08 17:46 |
ну возможно я не так выразился y, z, q, s это переменные. они уже имеют свое значение. y>1 но <40, данное условие не является постоянным и меняется дискретно с определенным шагом. |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #3 | Добавлено: 21.11.08 04:06 |
Упрости все:
Вот это:
упрощается до этого:
|
Страница: 1 |
|