|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.04.2009, 16:58 | #1 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 110
|
помогите оптимизировать!
Код:
значит словами что тут происходит: в таблице ХХХ берем значение в столбце А и ищем его же в таблице УУУ если находим и у этого значения в ряду (Range("BD_in_syr_end").Row + 1) таблицы УУУ значение равно нулю, то в таблице ХХХ делаем метку на удаление. вопрос в чем - как еще можно сделать сравнение двух таблиц?? цикл долго очень - у меня только в тестовой таблице 300 строк а в реальной там и в ширину и в длинну больше будет .. долго .. |
27.04.2009, 22:22 | #2 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
Если надо очень быстро, то лучше использовать функцию ВПР.
|
28.04.2009, 05:47 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Примененный Вами алгоритм, действительно будет очень долго работать. Так делать не нужно. Можно все сделать очень быстро. Только, необходимы уточнения:
1. Диапазон сравниваемых значений на листе "XXX" - это столбец "A", со строки 2 до строки Range("BD_syr_1").Row - 1. Так? Т.е. на этом листе есть именованный диапазон с именем "BD_syr_1", и мы сравниваем строки столбца "A" со 2 строки до начала этого диапазона. Это следует из Вашего кода. Подтвердите. 2. Эти значения сравниваем с ячейками 1 строки листа "YYY" с 8 по 300 столбец. И если такое значение находим, то проверяем ячейку в этом же столбце, во 2 строке именованного диапазона с именем "BD_in_syr_end", который находится на листе "YYY". По крайней мере, у Вас сделано так, что на мой взгляд, весьма странно. Тем более, что Вы пишите, что у Вас 300 строк, а сравниваете 300 столбцов. Подтвердите, или уточните задачу. 3. Что в результате нужно удалять? ячейки столбца "A" на листе "XXX" со сдвигом вверх, или строку целиком?
Чем шире угол зрения, тем он тупее.
|
28.04.2009, 10:30 | #4 | ||
Форумчанин
Регистрация: 21.04.2008
Сообщений: 110
|
Цитата:
Цитата:
Уточняю - да сравниваем с ячейками 1 строки листа "YYY" с 8 по 300 столбец. И если такое значение находим, то проверяем ячейку в этом же столбце с первой строке ПОД ДИАПАЗОНОМ "BD_in_syr_end" (это одна строка) который находится на листе "YYY" а 300 столбцов (в реале больше) это собственно база для набора второй таблицы и время от времени там надо проверять нету ли повторений -а они есть! и удалять лишние элементы, которые сейчас не используются(проверка по первой строке под диапазоном "BD_in_syr_end") и вторая таблица иногда разрастается до более чем 300 строк Строку целиком. Последний раз редактировалось kievlyanin; 28.04.2009 в 11:05. |
||
28.04.2009, 11:29 | #5 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Попробуйте так:
Код:
Чем шире угол зрения, тем он тупее.
|
28.04.2009, 12:25 | #6 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 110
|
ну в целом работатет... только вопрос:
Код:
почему i +1 ? .. почему-то удаление идет не в диапазоне: [A2] - Range("BD_syr_1").Row - 1 а до Range("BD_syr_1").Row может из-за этого i +1 ?? |
28.04.2009, 12:37 | #7 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Для упрощения понимания, можно задать массив Код:
Код:
Чем шире угол зрения, тем он тупее.
|
|
28.04.2009, 12:50 | #8 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 110
|
Ок. ... а еще вот это как работает? я как-то потерялся - что х делает и что с ним делают?
Код:
|
28.04.2009, 13:18 | #9 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Код:
Код:
Чем шире угол зрения, тем он тупее.
|
28.04.2009, 14:02 | #10 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 110
|
не .Select не надо я просто не понял оборота что если х пустое то тогда записуем туда одну строку а если нет то объединяем .. теперь конструкция понятна
и последнее - UBound. забил в поиск и как то не совсем стыкуется инфа по функции и вот это: For i = 1 To UBound(a, 1) For j = 1 To UBound(b, 2) как я понял из справки по функции "а" и "b" это массив а 1 и 2 это номер элемента записанного в массиве? .. но как тогда происходит пербор?? всего массива?? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите оптимизировать код | tae1980 | Microsoft Office Excel | 2 | 11.02.2009 23:24 |
Помогите оптимизировать процедуру | Cold Went | Компоненты Delphi | 4 | 29.04.2008 15:11 |
Помогите оптимизировать! | Altera | Общие вопросы Delphi | 6 | 25.03.2008 20:09 |
помогите оптимизировать процедуру | _XspeC_ | Общие вопросы Delphi | 12 | 08.04.2007 02:05 |
Помогите оптимизировать сайт | Nadejda | HTML и CSS | 4 | 07.01.2007 21:04 |