Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 18:19   #1
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию Оптимизировать код макроса

Подскажите как можно оптимизировать код макроса, считает ооочень долго...

Код:
For x = 5 To 42 'строка в сводном 8213
    Sheets("Сводный").Cells(x, 3).Value = 0
    For z = 2 To 1000 'строка в кредхистори
    If Sheets("Сводный").Cells(x, 2).Value <> Empty And _
    Sheets("Сводный").Cells(x, 2).Value = Sheets("KredHistory").Cells(z, 13).Value Then _
    Sheets("Сводный").Cells(x, 3).Value = Sheets("Сводный").Cells(x, 3).Value + Sheets("KredHistory").Cells(z, 4).Value
    Next z

    Sheets("Сводный").Cells(x, 4).Value = 0 'столбец А
    Sheets("Сводный").Cells(x, 5).Value = 0 'столбец Б
    Sheets("Сводный").Cells(x, 6).Value = 0 'столбец В
    Sheets("Сводный").Cells(x, 7).Value = 0 'столбец Г
    
    For y = 2 To 10000 'строка в кредхистори
        If Sheets("Сводный").Cells(x, 2).Value <> Empty And Sheets("Сводный").Cells(x, 2).Value = Sheets("Реестр").Cells(y, 42).Value And Sheets("Реестр").Cells(y, 19).Value <> "Ипотечный" And Sheets("Реестр").Cells(y, 16).Value = "А" Then Sheets("Сводный").Cells(x, 4).Value = Sheets("Сводный").Cells(x, 4).Value + 1
        If Sheets("Сводный").Cells(x, 2).Value <> Empty And Sheets("Сводный").Cells(x, 2).Value = Sheets("Реестр").Cells(y, 42).Value And Sheets("Реестр").Cells(y, 19).Value <> "Ипотечный" And Sheets("Реестр").Cells(y, 16).Value = "Б" Then Sheets("Сводный").Cells(x, 5).Value = Sheets("Сводный").Cells(x, 5).Value + 1
        If Sheets("Сводный").Cells(x, 2).Value <> Empty And Sheets("Сводный").Cells(x, 2).Value = Sheets("Реестр").Cells(y, 42).Value And Sheets("Реестр").Cells(y, 19).Value <> "Ипотечный" And Sheets("Реестр").Cells(y, 16).Value = "В" Then Sheets("Сводный").Cells(x, 6).Value = Sheets("Сводный").Cells(x, 6).Value + 1
        If Sheets("Сводный").Cells(x, 2).Value <> Empty And Sheets("Сводный").Cells(x, 2).Value = Sheets("Реестр").Cells(y, 42).Value And Sheets("Реестр").Cells(y, 19).Value <> "Ипотечный" And Sheets("Реестр").Cells(y, 16).Value = "Г" Then Sheets("Сводный").Cells(x, 7).Value = Sheets("Сводный").Cells(x, 7).Value + 1
    Next y
Next x
manowar_gub вне форума Ответить с цитированием
Старый 03.06.2012, 19:04   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Файл Excel прикрепите - так проще будет понять, что вам требуется.

Обязательно макрос? Формулы не подойдут?
EducatedFool вне форума Ответить с цитированием
Старый 03.06.2012, 19:52   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

1. Вместо AND добавьте вторую/третью/четвёртую вложенную проверку If Then - так отсеете сразу ненужные проверки (первым проверяйте то, что совпадает реже).
2. Быстрее конечно перебирать массивы из диапазонов, а не диапазоны.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 03.06.2012 в 19:55.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизировать код satka Microsoft Office Access 2 01.12.2011 14:36
Оптимизировать код) Pein95 Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2011 18:42
нужно оптимизировать код adwaer PHP 11 21.03.2010 02:20
Оптимизировать код. Манжосов Денис :) Общие вопросы Delphi 1 20.10.2008 19:06
Оптимизировать код NeiL Помощь студентам 2 21.02.2008 08:57