Страницы: 1
RSS
Удаление пустых строк в оооочень большой таблице
 
Здравствуйте!
У меня очень большая таблица на 21000 позиций, после каждой строки идет пустая строка. То есть сейчас в общем на 42000 строк, т.к одна колонка имеет объединенный ячейки невозможно ни подцепить фильтром ни сортировкой пустые строки. Через Ф5, выделение пустых ячеек и удаление строк большой диапазон не захватишь. Приходится разбивать на небольшие части и при удалении файл тормозит очень сильно. При попытке удалить макросом зависло на 15 минут. Пыталась так несколько раз.

Может быть кто-нибудь знает способ удаление при таких условиях. Или запустить макрос и сидеть ждать?
 
А почему через Ф5 нельзя? Любое количество пустых ячеек можно выделить, просто перед данной процедурой выделите полностью один из столбцов в таблице.
 
Собрать номера пустых строк в массив и затем одним махом удалить эти строки. Покажите кусочек Вашей таблицы (строк 10-15). В файле, разумеется.
 
Пыталась Ф5 у меня хватаем где-то на 500 позиция и то не факт пишет слишком большой объем и виснет если больше. Я так долго буду ковыряться. Вот пример.
 
Данные ВСЕГДА идут через строку? Не нужно проверять на "пусто"?
 
Да, и их очень много. Это вытяжка из системы
 
Код
Sub Macro1()
Dim RngForDelete As Range, i As Long, LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Нашли номер последней строки по столбцу А
    For i = 3 To LastRow Step 2 'Цикл со строки 3 по последнюю с шагом = 2
        ' Добавляем в диапазон ячейку для удаления
        If RngForDelete Is Nothing Then 'Если диапазон для удаления ещё пуст, тобавляем в него ячейку
            Set RngForDelete = Cells(i, 1)
        Else 'Иначе
            Set RngForDelete = Union(RngForDelete, Cells(i, 1)) 'пополняем диапазон
        End If
    Next
    ' если строки для удаления найдены, то удаляем их
    If Not RngForDelete Is Nothing Then RngForDelete.EntireRow.Delete
End Sub
 
Спасибо за макрос, ну вот попробовала, все опять зависло
 
Даже на маленькой таблице?
Пришлите мне на почту Ваш ПОЛНЫЙ файл. Адрес в профиле.
 
Пробовола на весь массив. Пришлось Диспетчером задач снимать. Все зависло
На маленьком работает, на большом нет
Все равно спасибо!
 
Попробуйте так:
Код
Sub TestDelete2()
    Columns("A:A").SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Delete
End Sub
 
Спасибо) все равно, полный файл кидать не имею права) спасибо за помощь
 
Цитата
Nova написал: полный файл кидать не имею права
Можно было оставить только столбец А, заменив в нём патроны на огурцы. Но сначала проверьте второй вариант (#14)
 
Перерасчет формул при удалении идет? В варианте Юрия #11 перед выполнением удаления поставьте отключение экрана и пересчета.
 
Может, сделать наоборот: через F5 выделить константы, скопировать и вставить на новый лист?
 
Цитата
Nova написал: При попытке удалить макросом зависло на 15 минут
Проверил вариант из #11 на 32 000 строк (не весь столбец): мой слабенький комп удалял 65 секунд.
Страницы: 1
Читают тему
Наверх