|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Оптимизация кода |
|
VBA - Оптимизация кода
|
Старожил Сообщения: 329 |
Профиль | Отправить PM | Цитировать Доброго дня всем. Скажите, пожалуйста, как можно этот код оптимизировать?
Do While Cells(i, Ncolumn2).Value <> Empty 'поставил на "Обозначение" т.к. обрывался на пустой ячейке objRegExp.Pattern = "^5085" If objRegExp.Test(Cells(i, ncolumn).Value) = True Then Cells(i, ncolumn + 1).Value = "С85" Else objRegExp.Pattern = "^5081" If objRegExp.Test(Cells(i, ncolumn).Value) = True Then Cells(i, ncolumn + 1).Value = "С81" Else If Cells(i, ncolumn).Value Like "*3200*" Then Cells(i, ncolumn + 1).Value = "ЦВО" Else objRegExp.Pattern = "^3200-3000" If objRegExp.Test(Cells(i, ncolumn).Value) = True Or Cells(i, ncolumn).Value Like "*3000*" Or Cells(i, ncolumn).Value Like "*ЭМЦ*" Or Cells(i, Ncolumn2).Value Like "КРП.*.3000*" And Cells(i, ncolumn4).Value Like "Бирка *" Then Cells(i, ncolumn + 1).Value = "ЭМЦ" Else objRegExp.Pattern = "^3600" If objRegExp.Test(Cells(i, ncolumn).Value) = True Or Cells(i, Ncolumn2).Value Like "КРП.*.3600*" And Cells(i, ncolumn4).Value Like "Бирка *" Then Cells(i, ncolumn + 1).Value = "ПММ" Else If Cells(i, ncolumn).Value Like "*3000*" And Cells(i, ncolumn4).Value Like "Плата*" Or Cells(i, ncolumn).Value Like "3400*" Or Cells(i, Ncolumn2).Value Like "КРП.*.3400*" And Cells(i, ncolumn4).Value Like "Бирка *" Or Cells(i, ncolumn).Value Like "*ЭМЦ*" And Cells(i, ncolumn4).Value Like "Плата*" Then Cells(i, ncolumn + 1).Value = "МЦ" Else If Cells(i, ncolumn).Value Like "*3300*" Or Cells(i, Ncolumn2).Value Like "КРП.*.3300*" And Cells(i, ncolumn4).Value Like "Бирка *" Or Cells(i, ncolumn).Value Like "*3340*" Then Cells(i, ncolumn + 1).Value = "ПКМ" Else If Cells(i, ncolumn).Value Like "*3100*" Or Cells(i, Ncolumn2).Value Like "КРП.*.3100*" And Cells(i, ncolumn4).Value Like "Бирка *" Or Cells(i, ncolumn).Value Like "*CМЦ*" Or Cells(i, ncolumn).Value Like "*СМЦ*" Then Cells(i, ncolumn + 1).Value = "СМЦ" Else objRegExp.Pattern = "^3800|^3801" If objRegExp.Test(Cells(i, ncolumn).Value) = True Then Cells(i, ncolumn + 1).Value = "ОВК" Else If Cells(i, ncolumn).Value Like "2400*" Then Cells(i, ncolumn + 1).Value = "БИХ" Else If Cells(i, ncolumn).Value Like "2300*" Then Cells(i, ncolumn + 1).Value = "ХТС" Else If Cells(i, ncolumn).Value Like "1240*" Then Cells(i, ncolumn + 1).Value = "1240" Else If Cells(i, Ncolumn2).Value Like "РСТ.*" Then Cells(i, ncolumn + 1).Value = "Уланов" Else If Cells(i, ncolumn).Value Like "3050*" Then Cells(i, ncolumn + 1).Value = "ЦГО" Else objRegExp.Pattern = "210[0-4]" If objRegExp.Test(Cells(i, ncolumn).Value) = True Then Cells(i, ncolumn + 1).Value = "ОМЭ" Else If Cells(i, ncolumn).Value = "" Or Cells(i, ncolumn).Value = "-" Or Cells(i, ncolumn).Value = "--" Or Cells(i, ncolumn).Value = "---" Or Cells(i, ncolumn).Value = "----" Then Cells(i, ncolumn + 1).Value = "МЦМ" End If End If End If End If End If End If End If End If End If End If End If End If End If End If End If End If i = i + 1 Loop |
|
------- Отправлено: 12:08, 25-03-2021 |
Забанен Сообщения: 793
|
Например, выделяем паттерн проверки ячейки в отдельную процедуру, рядом создаём пул шаблонов проверки, а также шаблон стека; далее - цикл в пять-семь строк кода. И всё.
|
Отправлено: 08:49, 26-03-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать greg zakharov,
|
------- Отправлено: 10:57, 26-03-2021 | #12 |
Забанен Сообщения: 793
|
blackeangel, просто внимательней посмотрите на код: в операторе ветвления повторяются RegExp.Test и Cells(...).Value Like, значит выносим их "за скобки", то есть создаем процедуру проверки шаблона. Что здесь сложного? А далее, как было сказано ранее. В итоге у вас должно получиться нечто вроде (псевдокод):
А вот если смайлики - намек на написание примера за вас, альтернатива такова: либо ждать иного ответа того, кто выполнит всю работу за вас на безвозмездной основе, либо озвучьте цену и получите код с детальными комментариями. На вашем месте начал бы самостоятельно реализовывать сказанное выше, чтобы было понятно впредь что да как. |
Последний раз редактировалось greg zakharov, 26-03-2021 в 11:28. Отправлено: 11:22, 26-03-2021 | #13 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Установка - оптимизация | alik777 | Microsoft Windows 2000/XP | 1 | 24-07-2010 22:58 | |
[решено] Оптимизация кода | Cuba | AutoIt | 4 | 21-03-2009 23:08 | |
Службы - Оптимизация | Malfatto | Microsoft Windows Vista | 2 | 06-09-2008 15:08 | |
Оптимизация | pashka-88 | Хочу все знать | 2 | 30-10-2005 20:49 | |
Оптимизация программного кода | DYURIK | Программирование и базы данных | 10 | 24-10-2003 17:00 |
|