|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.03.2012, 02:33 | #1 |
Пользователь
Регистрация: 26.01.2011
Сообщений: 17
|
Быстрое удаление строк
Добрый день!
EXCEL 2003 Есть таблица с данными, которая стостоит из нескольких тысяч строк. Проблема в том, что когда я удаляю около тысячи выделенных строк, то даный процес занимает несколько минут времени, т.е. довольно долго. Скажите, можно ли написать макрос для мгновенного удаления выделенных строк? Заранее благодарен. |
17.03.2012, 06:02 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Так вы макросом ищете подходящие строки (судя по предыдущей теме), и потом по одной из удаляете?
Этот макрос пробовали? http://excelvba.ru/code/ConditionalRowsDeleting |
17.03.2012, 11:52 | #3 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Тысячу несколько минут? Отключите пересчёт.
Ну и кроме Union можно ещё адреса собирать в строку и удалять полученный диапазон. Только длину строки нужно контролировать. Ссылка на тему: http://www.planetaexcel.ru/forum.php...llnum_forum=52 Ещё вариант - создать массив с пометками (параллельно в основном процессе), выгрузить массив в свободный столбец, фильтр по столбцу, видимые удалить. Будет "мгновенно".
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 17.03.2012 в 11:56. |
17.03.2012, 18:01 | #4 | |
Пользователь
Регистрация: 26.01.2011
Сообщений: 17
|
Цитата:
|
|
17.03.2012, 18:31 | #5 |
Пользователь
Регистрация: 26.01.2011
Сообщений: 17
|
Отключил автоматические вычисления - помоглось, удаляются практически мгновенно. У меня в каждой строке очень большие формулы, скорее всего это и не давало быстро удалить большое количество строк.
Всем спасибо, особенно Hugo121! Как думаете, можно создать такой макрос, чтоб отключал автоматический пересчет, затем удалял выделенные строки, затем обратно его включал? |
17.03.2012, 19:04 | #6 |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 136
|
|
17.03.2012, 19:14 | #7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Обычно делают так:
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
17.03.2012, 21:26 | #8 |
Пользователь
Регистрация: 26.01.2011
Сообщений: 17
|
Всем спасибо! Все работает, удаляет быстро.
Код:
|
17.03.2012, 21:48 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Посмотрел критическим глазом - вероятно нужно сперва включить пересчёт (всё посчитается), потом сразу всё отобразить.
Можете замерить скорость одного и второго варианта: Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление из строк | Михаил_444 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 14.11.2011 21:23 |
перенос строк удаление ненужных строк | HelperAwM | Microsoft Office Excel | 5 | 26.06.2010 18:42 |
Удаление строк из БД | Danilka | БД в Delphi | 12 | 14.04.2010 21:27 |
Быстрое удаление дублирующихся слов :). | Utkin | Общие вопросы Delphi | 21 | 01.02.2010 08:25 |
Быстрое удаление содержимого ячеек | gadspider | Microsoft Office Excel | 11 | 18.07.2009 12:08 |