|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.06.2009, 18:00 | #1 |
Пользователь
Регистрация: 09.09.2008
Сообщений: 43
|
Как ускорить работу этого макроса?
Подскажите, пожалуйста, как ускорить (оптимизировать) работу этого макроса? Строк около 5500 шт. обрабатывает в течение 5 минут. В кратце: Два листа, формат обоих один и тотже. Содержат в себе базу данных по ценам ежемесячно со столбца 12 по 23 (критерий j). Первый лист - один период, второй лист - другой. Задача макроса выявить в каких месяцах расхождения в той или иной строчках.
Sub Compare() Dim c As String, irow As Integer, d As Single, e As Single For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "Z").End(xlUp).Row c = Sheets("Sheet1").Cells(i, "Z") With Sheets("Sheet2").Range("Z:Z") Set z = .Find(c, LookIn:=xlValues) If z Is Nothing Then Sheets("Sheet1").Range("A" & i & ":X" & i & "").Font.ColorIndex = 3 Sheets("Sheet1").Cells(i, "Y") = "Не найден" Else irow = z.Row End If End With For j = 12 To 23 'Месяца с Января по Декабрь d = Sheets("Sheet1").Cells(i, j) e = Sheets("Sheet2").Cells(irow, j) If d = e Then Sheets("Sheet1").Cells(i, j).Font.ColorIndex = 10 Sheets("Sheet2").Cells(irow, j).Font.ColorIndex = 10 Else Sheets("Sheet1").Cells(i, j).Font.ColorIndex = 3 Sheets("Sheet1").Cells(i, j).AddComment Sheets("Sheet1").Cells(i, j).Comment.Text Text:="Стало " & e & "" Sheets("Sheet2").Cells(irow, j).Font.ColorIndex = 3 Sheets("Sheet2").Cells(irow, j).AddComment Sheets("Sheet2").Cells(irow, j).Comment.Text Text:="Было " & d & "" End If Next Sheets("Sheet1").Cells(i, "AA").Font.ColorIndex = 10 Sheets("Sheet2").Cells(irow, "AA").Font.ColorIndex = 10 Next End Sub |
22.06.2009, 18:14 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Немного ускорит код добавление этой строки в начало макроса:
Application.ScreenUpdating = False Ускорить можно - до 2-4 секунд. Но сложно. В этом случае код надо переписывать с нуля. Почему 2-4 секунды, а не 1? Потому что, если значения и цвета мы можем записать одновременно в целый диапазон ячеек, то комментарии придётся добавлять в каждую ячейки по отдельности.
Пример кода писать не буду - это долго, да и сложно сделать, не увидев файла. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как ускорить работу программы | SibBear | Общие вопросы Delphi | 7 | 27.03.2009 14:40 |
помогите ускорить работу программы... | Pashtet | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 25.11.2008 22:12 |
Как ускорить работу с сетевой БД | Ramires | БД в Delphi | 3 | 21.08.2008 12:16 |
Защита листа, отключает работу макроса | valerij | Microsoft Office Excel | 6 | 30.03.2008 22:22 |
Помогите пожалуйста ускорить работу по реконструкции моста | Геодезистка | Помощь студентам | 10 | 07.10.2007 00:05 |