Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ускорить цикл / 11 сообщений из 11, страница 1 из 1
05.10.2010, 14:19
    #36882478
SNikolai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
есть ли возможность ускорить цикл?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For a =  3  To fr4
   For b =  1  To fr5
       For c =  15  To  40 
         For d =  74  To  80  Step  2 
               If xlSheet.Cells(a,  14 ) = xlSheet.Cells(b,  68 ) And xlSheet.Cells( 2 , c) = xlSheet.Cells(b,  70 ) And xlSheet.Cells(a,  9 ) = xlSheet.Cells(b, d) Then xlSheet.Cells(b, d +  1 ).Copy: xlSheet.Cells(a, c).Select: xlApp.ActiveSheet.Paste: 'xlApp.ActiveSheet.Paste
         Next d
       Next c
   Next b
Next a
...
Рейтинг: 0 / 0
05.10.2010, 14:42
    #36882571
Thermik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
SNikolai,

так быстрее?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With xlSheet
For a =  3  To fr4
   For b =  1  To fr5
       For c =  15  To  40 
         For d =  74  To  80  Step  2 
               If .Cells(a,  14 ) = .Cells(b,  68 ) And .Cells( 2 , c) = .Cells(b,  70 ) And .Cells(a,  9 ) = .Cells(b, d) Then .Cells(b, d +  1 ).Copy: .Cells(a, c).Select: xlApp.ActiveSheet.Paste: 'xlApp.ActiveSheet.Paste
         Next d
       Next c
   Next b
Next a
end with
...
Рейтинг: 0 / 0
05.10.2010, 15:04
    #36882652
SNikolai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
нет,так дольше
...
Рейтинг: 0 / 0
05.10.2010, 15:27
    #36882724
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
Скорее, здесь торможение не из-за структуры, а из-за некорректного использования команд...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Application.ScreenUpdating = False
With xlSheet
For a =  3  To fr4
   For b =  1  To fr5
       For c =  15  To  40 
         For d =  74  To  80  Step  2 
               If .Cells(a,  14 ) = .Cells(b,  68 ) And .Cells( 2 , c) = .Cells(b,  70 ) And .Cells(a,  9 ) = .Cells(b, d) Then .Cells(b, d +  1 ).Copy Destination:=.Cells(a, c)
         Next d
       Next c
   Next b
Next a
end with
Application.ScreenUpdating = True
...
Рейтинг: 0 / 0
05.10.2010, 15:51
    #36882831
SNikolai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
ничегон не изменилось(( время выполнения цикла 1 м.45 сек.
...
Рейтинг: 0 / 0
05.10.2010, 16:43
    #36882998
SimpleC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
SNikolai, вроде Foreach быстрее работает
...
Рейтинг: 0 / 0
05.10.2010, 16:57
    #36883069
SNikolai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
честно говоря не пользовался им(не подскажите как переделать под него?
...
Рейтинг: 0 / 0
05.10.2010, 17:51
    #36883199
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
А если условие разбить?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Application.ScreenUpdating = False
With xlSheet
For b =  1  To fr5
    For a =  3  To fr4
       if Cells(a,  14 ) = .Cells(b,  68 ) then
           For c =  15  To  40 
               if .Cells( 2 , c) = .Cells(b,  70 ) then
                   For d =  74  To  80  Step  2 
                       If .Cells(a,  9 ) = .Cells(b, d) Then .Cells(b, d +  1 ).Copy Destination:=.Cells(a, c)
                   Next d
               end if
           Next c
       end if
    Next a
Next b
end with
Application.ScreenUpdating = True
...
Рейтинг: 0 / 0
05.10.2010, 18:06
    #36883232
SNikolai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
Да!спасибо.
время выполнения цикла 4 сек.
...
Рейтинг: 0 / 0
05.10.2010, 22:13
    #36883627
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
AndreTM,

тогда и
...
Рейтинг: 0 / 0
05.10.2010, 22:22
    #36883638
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить цикл
SNikolai,

тогда по старым рекомендациям (не надеась на оптимизатор)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim a9
For b =  1  To fr5
    For a =  3  To fr4
       a9=.cells(a, 9 ) ''''''''''
       if Cells(a,  14 ) = .Cells(b,  68 ) then
           For c =  15  To  40 
               if .Cells( 2 , c) = .Cells(b,  70 ) then
                   For d =  74  To  80  Step  2 
                       If a9=.Cells(b, d) Then .Cells(b, d +  1 ).Copy Destination:=.Cells(a, c)
..............
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ускорить цикл / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]