|
Ускорение Udf
|
|||
---|---|---|---|
#18+
Есть UDF , которая работает хорошо , но медленно . Я знаю как ускорять Sub : Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Подойдет ли это для Function ? Если нет , то как ускорить Udf ? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 13:27 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
В данном случае можно ускорить, если забрать в один прием нужные данные в массив и обрабатывать там, а не дергать Cells в цикле. Кроме того, если хорошо подумать, то тоже можно ускорить. Например результат вот этого условия как-то изменится, если проверить его 8 раз вместо одного? maxim863 Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 13:35 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
Сам Diapozon.Value нужно тоже присвоить переменной, а не дергать его с листа каждый раз. Любое обращение к листу работает медленно, количество обращений нужно сводить к минимуму ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 13:39 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
1) поднять выше цикла - зачем крутить 4х2=8 раз одну и ту же статичную проверку? If Diapozon.Value = Cells(31, 3).Value Then n = 0 Exit For End If 2) неэффективный (медленный) поячеечный поиск совпадения в цикле - заменить на два программных вызова функции рабочего листа ЕОШИБКА(ПОИСКПОЗ) If Diapozon.Value = Cells(x + 29, y + 10).Value Or Diapozon.Offset(0, 1).Value = Cells(x + 29, y + 10).Value Then n = 1 End If 3) отказаться от программной функции рабочего листа, и пп.1-2 реализовать в виде обычных формул на листе - это самый быстрый по скорости способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 16:58 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
кстати cells в вашем алгоритме берётся с активного листа - т.е. на двух соседних листах формула работать будет по разному, и при переключении между листами тоже. это так и задумано? м.б. всётаки надо Diapozon.parent.cells( ... ) везде - чтобы подсчёт в формуле шёл ровно по тому листу, на котором ваш Diapozon ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 17:02 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
предлагал уже... 21649253 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:09 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
ldfanate, Это специально , потому что у меня 14 листов с этой функцией . Каждый лист должен вычисляться отдельно . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 11:03 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
Казанский, Спасибо , так и сделаю ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 11:04 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
авторЭто специально , потому что у меня 14 листов с этой функцией . Каждый лист должен вычисляться отдельно. Так в итоге все 14 листов будут вычисляться ровно по тому единственному листу, на котором ты в данный момент стоишь. Просто ты не видишь содержимое неактивных листов, но они всёравно пересчитаются. Стяни формулами результат с тех 14ти листов на 1 лист (или окна в экселе расположи "плиткой" чтобы сразу несколько листов видеть), - и увидишь, что формула на всех 14ти посчитает чёрти-что, т.к. Cells.value будут все с текущего листа (ActiveSheet) браться. Если хочешь чтобы каждая считала по тому листу, который подставляется во входной параметр Diapazon, нужно именно явно указывать Diapozon.parent.cells(...).value. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 15:53 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
ldfanate, Так я же специально для этого использую Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:26 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863ldfanate, Так я же специально для этого использую Код: vbnet 1.
Прочитайте внимательно, что Вам пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:29 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
iMrTidy, Стоп ! Я не то написал . Конкретно эту функцию я использовать не буду , ее заменю функциями Excel . Но у меня есть 2 проги , работающие по тому же принципу . И они вроде норм работают . Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:53 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863по тому же принципупо какому по тому же? сравниmaxim863 Код: vbnet 1.
maxim863 Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:01 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
Shocker.Pro, в этой я не сомневаюсь . А вот во второй ,после ваших замечаний , начинаю сомневаться . Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:11 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
Shocker.Pro, По одинаковому принципу-на каждом листе Udf ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:12 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863Shocker.Pro, По одинаковому принципу-на каждом листе Udf Если внимательно перечитать весь топик, то можно найти ответы на Ваши вопросы и даже больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:39 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
iMrTidy, А если не перечитывать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:44 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863iMrTidy, А если не перечитывать ? Полагаю, если нет желания перечитывать, то не стоило и просить о помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:54 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863в этой я не сомневаюсьв этой всё делается относительно Diapozon, следовательно лист будет нужный. и, блин, "диапАзон"!!!! у меня уже глаз выпал это читать которую неделю ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:59 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
iMrTidy, Никакой просьбы и не было ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:00 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863iMrTidy, Никакой просьбы и не было Так Вы сюда пишете "так поговорить"? maxim863Подойдет ли это для Function ? Если нет , то как ускорить Udf ? Т.е. вот это просьбой о помощи не считается? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:16 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
iMrTidy, В этом топике был только один адекватный ответ ,который я и использовал (большое спасибо автору) Все остальное - переливание воды , в основном исходящее от вас И просьбу от вопроса вы отличить ,видимо, не в состоянии ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 10:26 |
|
Ускорение Udf
|
|||
---|---|---|---|
#18+
maxim863iMrTidy, В этом топике был только один адекватный ответ ,который я и использовал (большое спасибо автору) Все остальное - переливание воды , в основном исходящее от вас И просьбу от вопроса вы отличить ,видимо, не в состоянии Прекрасно, в будущем Вы знаете, что мои сообщения лучше игнорировать. И нет, я не способен понять разницу, я ж неадекватный. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 10:39 |
|
|
start [/forum/topic.php?fid=60&msg=39694791&tid=2155015]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 436ms |
0 / 0 |