|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.01.2010, 11:21 | #1 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 30
|
ускорить работу макроса
здравствуйте, я в VBA новичек, но тут выпала надобность написать маленький макрос. В документе три листа, "Юля" - наименоваания с ценами, "Т-А" - таблица соответствия (о ней расскажу дальше), "П-А1" - выходной лист для переноса цен из листа "Юля". Таблица соответствия - это таблица из двух столбцов в сторках которой прописаны соответствия между наименованиями в листах "Юля" и "П-А1".
макрос работает так: берет первое наименование на Листе "Т-А" и ищет его на листе "Юля", когда находит, он из соседнего столбца, той же строки, на Листе "Юля" копирует цену. Потом переходит на лист "П-А1", и ищет первое наименование из листа соответствия на листе "П-А1" и вставляет цену в соседний столбец. помимо этого макрос еще подсвечивает на листе "юля" те ячейки из которых он копировал цену. вот как то так . А проблема состоит в том, что макрос выполняется слишком долго, на листе на каждом листе примерно по 1000 наименований. но я не думаю, что из-за этого. подскажите пожалуста как можно оптимизировать данный код. буду благодарен всей душой. Код:
|
17.01.2010, 11:37 | #2 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Как минимум перед выполнением макроса необходимо отключить обновление экрана и автоперсчет формул:
Код:
Код:
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
17.01.2010, 11:57 | #3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Ваш макрос можно ускорить в десятки раз - достаточно отказаться от вложенных циклов.
Для поиска совсем необязательно перебирать все ячейки в цикле. Прикрепите пример файла с исходными данными и тем, что должно получиться в результате работы макроса. PS: Можно попробовать обойтись без макроса - по крайней мере, бОльшую часть работы можно выполнить простейшими формулами. |
17.01.2010, 19:11 | #4 | |
Пользователь
Регистрация: 17.01.2010
Сообщений: 30
|
Цитата:
|
|
17.01.2010, 19:58 | #5 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Вам написали, что для этого надо сделать.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
17.01.2010, 20:21 | #6 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 30
|
вот файл. в принципе то что мне нужно написано в первом посте. а если вкратце, нужно чтобы цены из прайса "юля", забивались в прайс "П-А1". а таблица соответствий названий находится на листе "Т-А".
в коде который я отправил в первом посте, не совпадают названия столбцов с тем файлом который я сюда скинул, т.к. из этого файла я удалил все ненужные столбцы. мне бы идею, как сделать без цикла, а то получается что макрос работает минут 30( в качестве небольшого вознаграждения, т.к. вебмани номер забыт, могу кинуть денег на телефон) лишь бы работало. заранее спасибо. извиняюсь что сразу не выложил исходники. |
18.01.2010, 06:24 | #7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите вложение. Запустите макрос "Main". При нахождении данных, в лист "Т-А" заносится цена, а в лист "П-А1" - в столбец "Z" - запись, найденная в листе соответствий, а в столбец "AA" - цена. Сделал так, как понял. Если что-то не нужно - уберите из кода.
P.S. Для "облегчения" файла, удалены лишние листы.
Чем шире угол зрения, тем он тупее.
|
18.01.2010, 14:33 | #8 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 30
|
SAS888, спасибо большое, в принципе то что нужно, только не надо было удалять столбцы на листе П-А1, там где были написаны обьем и M\W(мужской женский), они ведь тоже участвуют в соответствии. Хотелось бы понять как это работает, то есть комментарии к макросу.
|
19.01.2010, 06:22 | #9 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
В приложении тот же файл с комментариями.
Цитата:
Чем шире угол зрения, тем он тупее.
|
|
19.01.2010, 11:53 | #10 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 30
|
Да, соответствие на листе "Т-А" столбцы J,K,L в документе П-А1 соответствуют единственному столбцу на листе "Юля". В документе "Т-А" так и идет, - 4 столбца. Но не стоит ничего исправлять, я сам постараюсь, все сделать. Большое спасибо SAS888
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как ускорить работу этого макроса? | Neo007 | Microsoft Office Excel | 1 | 22.06.2009 18:14 |
Как ускорить работу программы | 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 |
Помогите пожалуйста ускорить работу по реконструкции моста | Геодезистка | Помощь студентам | 10 | 07.10.2007 00:05 |